summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarol Eidt <carol.eidt@microsoft.com>2018-03-13 10:13:31 -0700
committerGitHub <noreply@github.com>2018-03-13 10:13:31 -0700
commite8bdf05ff2bfddc10407b07fbd1abcdeab4a9443 (patch)
treec885bb7ff058ee04497a719f27ce5089cb582d93
parent23b4f680197aaf611ac33a0788e5e9bce75d324f (diff)
parent27029a02843d3b7b6e8e75cbcc9e35d57a361564 (diff)
downloadcoreclr-e8bdf05ff2bfddc10407b07fbd1abcdeab4a9443.tar.gz
coreclr-e8bdf05ff2bfddc10407b07fbd1abcdeab4a9443.tar.bz2
coreclr-e8bdf05ff2bfddc10407b07fbd1abcdeab4a9443.zip
Merge pull request #16390 from sdmaclea/PR-16176
[Arm64] Mark removed compare zero nodes unused
-rw-r--r--src/jit/lowerarmarch.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/jit/lowerarmarch.cpp b/src/jit/lowerarmarch.cpp
index b058acbb90..10f182f72a 100644
--- a/src/jit/lowerarmarch.cpp
+++ b/src/jit/lowerarmarch.cpp
@@ -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");