[Arm64] Mark removed compare zero nodes unused
authorSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>
Wed, 14 Feb 2018 17:27:03 +0000 (12:27 -0500)
committerSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>
Mon, 12 Mar 2018 19:02:19 +0000 (15:02 -0400)
src/jit/lowerarmarch.cpp

index b058acb..10f182f 100644 (file)
@@ -540,13 +540,6 @@ void Lowering::LowerHWIntrinsic(GenTreeHWIntrinsic* node)
 
         switch (intrinsicID)
         {
-            case NI_ARM64_SIMD_GE_ZERO:
-                // Unsigned >= 0 ==> Always true
-                node->gtHWIntrinsicId = setAllVector;
-                node->gtOp.gtOp1      = comp->gtNewLconNode(~0ULL);
-                BlockRange().InsertBefore(node, node->gtOp.gtOp1);
-                BlockRange().Remove(origOp1);
-                break;
             case NI_ARM64_SIMD_GT_ZERO:
                 // Unsigned > 0 ==> !(Unsigned == 0)
                 node->gtOp.gtOp1 =
@@ -559,12 +552,21 @@ void Lowering::LowerHWIntrinsic(GenTreeHWIntrinsic* node)
                 // Unsigned <= 0 ==> Unsigned == 0
                 node->gtHWIntrinsicId = NI_ARM64_SIMD_EQ_ZERO;
                 break;
+            case NI_ARM64_SIMD_GE_ZERO:
             case NI_ARM64_SIMD_LT_ZERO:
+                // Unsigned >= 0 ==> Always true
                 // Unsigned < 0 ==> Always false
                 node->gtHWIntrinsicId = setAllVector;
-                node->gtOp.gtOp1      = comp->gtNewIconNode(0);
+                node->gtOp.gtOp1      = comp->gtNewLconNode((intrinsicID == NI_ARM64_SIMD_GE_ZERO) ? ~0ULL : 0ULL);
                 BlockRange().InsertBefore(node, node->gtOp.gtOp1);
-                BlockRange().Remove(origOp1);
+                if ((origOp1->gtFlags & GTF_ALL_EFFECT) == 0)
+                {
+                    BlockRange().Remove(origOp1, true);
+                }
+                else
+                {
+                    origOp1->SetUnusedValue();
+                }
                 break;
             default:
                 assert(!"Unhandled LowerCmpUZero case");