Minor DCHECK bug fix.
Rationale:
Should use the utility to test for SIMD result,
not a hard is vector test.
Test: 623 is regression test for DCHECK fail
Change-Id: I1d7949fa25139f8a3734986d5de7989ed32ff2bd
diff --git a/compiler/optimizing/nodes_vector.h b/compiler/optimizing/nodes_vector.h
index 523bca8..9b114eb 100644
--- a/compiler/optimizing/nodes_vector.h
+++ b/compiler/optimizing/nodes_vector.h
@@ -325,7 +325,7 @@
uint32_t dex_pc)
: HVecUnaryOperation(
kVecReplicateScalar, allocator, scalar, packed_type, vector_length, dex_pc) {
- DCHECK(!scalar->IsVecOperation());
+ DCHECK(!ReturnsSIMDValue(scalar));
}
// A replicate needs to stay in place, since SIMD registers are not
diff --git a/test/623-checker-loop-regressions/src/Main.java b/test/623-checker-loop-regressions/src/Main.java
index 4e2b241..ff6e335 100644
--- a/test/623-checker-loop-regressions/src/Main.java
+++ b/test/623-checker-loop-regressions/src/Main.java
@@ -584,6 +584,18 @@
s24 + s25 + s26 + s27 + s28 + s29 + s30 + s31;
}
+ public static int reductionIntoReplication() {
+ int[] a = { 1, 2, 3, 4 };
+ int x = 0;
+ for (int i = 0; i < 4; i++) {
+ x += a[i];
+ }
+ for (int i = 0; i < 4; i++) {
+ a[i] = x;
+ }
+ return a[3];
+ }
+
public static void main(String[] args) {
System.loadLibrary(args[0]);
@@ -767,6 +779,8 @@
expectEquals(85800, reduction32Values(a1, a2, a3, a4));
}
+ expectEquals(10, reductionIntoReplication());
+
System.out.println("passed");
}