summaryrefslogtreecommitdiff
path: root/src/jit/lowerarmarch.cpp
diff options
context:
space:
mode:
authorSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>2017-11-28 19:46:43 -0500
committerSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>2017-12-08 17:42:58 -0500
commit1c3336ef7c0d832f68922572a00901dba1d15bbb (patch)
tree6b648e9b3c593c8eb4a4b9f6a10bc9dbc8643a96 /src/jit/lowerarmarch.cpp
parent2005790ffddc6cab5c563d8c8ae564fdedac3c7b (diff)
downloadcoreclr-1c3336ef7c0d832f68922572a00901dba1d15bbb.tar.gz
coreclr-1c3336ef7c0d832f68922572a00901dba1d15bbb.tar.bz2
coreclr-1c3336ef7c0d832f68922572a00901dba1d15bbb.zip
[Arm64] SIMDIntrinsicGetItem contain mem op1
Diffstat (limited to 'src/jit/lowerarmarch.cpp')
-rw-r--r--src/jit/lowerarmarch.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/jit/lowerarmarch.cpp b/src/jit/lowerarmarch.cpp
index 231650180a..5aa3ff1e6b 100644
--- a/src/jit/lowerarmarch.cpp
+++ b/src/jit/lowerarmarch.cpp
@@ -785,12 +785,11 @@ void Lowering::ContainCheckSIMD(GenTreeSIMD* simdNode)
case SIMDIntrinsicGetItem:
{
- // TODO-ARM64-CQ Support containing op1 memory ops
-
// This implements get_Item method. The sources are:
// - the source SIMD struct
// - index (which element to get)
// The result is baseType of SIMD struct.
+ op1 = simdNode->gtOp.gtOp1;
op2 = simdNode->gtOp.gtOp2;
// If the index is a constant, mark it as contained.
@@ -798,6 +797,15 @@ void Lowering::ContainCheckSIMD(GenTreeSIMD* simdNode)
{
MakeSrcContained(simdNode, op2);
}
+
+ if (IsContainableMemoryOp(op1))
+ {
+ MakeSrcContained(simdNode, op1);
+ if (op1->OperGet() == GT_IND)
+ {
+ op1->AsIndir()->Addr()->ClearContained();
+ }
+ }
break;
}