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");
   }