diff options
author | Carol Eidt <carol.eidt@microsoft.com> | 2018-03-13 10:13:31 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-13 10:13:31 -0700 |
commit | e8bdf05ff2bfddc10407b07fbd1abcdeab4a9443 (patch) | |
tree | c885bb7ff058ee04497a719f27ce5089cb582d93 | |
parent | 23b4f680197aaf611ac33a0788e5e9bce75d324f (diff) | |
parent | 27029a02843d3b7b6e8e75cbcc9e35d57a361564 (diff) | |
download | coreclr-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.cpp | 20 |
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"); |