diff options
author | Carol Eidt <carol.eidt@microsoft.com> | 2019-04-16 09:35:49 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-16 09:35:49 -0700 |
commit | 5be6b66ff3597df6a1ce3b66a8cf65b0beb40856 (patch) | |
tree | a40d84e300782a3da0b33386086f629da646f98e /src/jit/gentree.cpp | |
parent | 11a3859c10dcc20a6c5865135334f4df62d2358c (diff) | |
download | coreclr-5be6b66ff3597df6a1ce3b66a8cf65b0beb40856.tar.gz coreclr-5be6b66ff3597df6a1ce3b66a8cf65b0beb40856.tar.bz2 coreclr-5be6b66ff3597df6a1ce3b66a8cf65b0beb40856.zip |
Arm64 vector ABI (#23675)
* Support for Arm64 Vector ABI
Extend HFA support to support vectors as well as floating point types.
This requires that the JIT recognize vector types even during crossgen,
so that the ABI is supported consistently.
Also, fix and re-enable the disabled Arm64 Simd tests.
Fix #16022
Diffstat (limited to 'src/jit/gentree.cpp')
-rw-r--r-- | src/jit/gentree.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/jit/gentree.cpp b/src/jit/gentree.cpp index be064c285a..9e58db0df4 100644 --- a/src/jit/gentree.cpp +++ b/src/jit/gentree.cpp @@ -17682,7 +17682,8 @@ GenTreeSIMD* Compiler::gtNewSIMDNode( assert(op1 != nullptr); SetOpLclRelatedToSIMDIntrinsic(op1); - return new (this, GT_SIMD) GenTreeSIMD(type, op1, simdIntrinsicID, baseType, size); + GenTreeSIMD* simdNode = new (this, GT_SIMD) GenTreeSIMD(type, op1, simdIntrinsicID, baseType, size); + return simdNode; } GenTreeSIMD* Compiler::gtNewSIMDNode( @@ -17692,7 +17693,8 @@ GenTreeSIMD* Compiler::gtNewSIMDNode( SetOpLclRelatedToSIMDIntrinsic(op1); SetOpLclRelatedToSIMDIntrinsic(op2); - return new (this, GT_SIMD) GenTreeSIMD(type, op1, op2, simdIntrinsicID, baseType, size); + GenTreeSIMD* simdNode = new (this, GT_SIMD) GenTreeSIMD(type, op1, op2, simdIntrinsicID, baseType, size); + return simdNode; } //------------------------------------------------------------------- @@ -18064,7 +18066,7 @@ void ReturnTypeDesc::InitializeStructReturnType(Compiler* comp, CORINFO_CLASS_HA case Compiler::SPK_PrimitiveType: { assert(returnType != TYP_UNKNOWN); - assert(!varTypeIsStruct(returnType)); + assert(returnType != TYP_STRUCT); m_regType[0] = returnType; break; } @@ -18075,7 +18077,7 @@ void ReturnTypeDesc::InitializeStructReturnType(Compiler* comp, CORINFO_CLASS_HA var_types hfaType = comp->GetHfaType(retClsHnd); // We should have an hfa struct type - assert(varTypeIsFloating(hfaType)); + assert(varTypeIsValidHfaType(hfaType)); // Note that the retail build issues a warning about a potential divsion by zero without this Max function unsigned elemSize = Max((unsigned)1, EA_SIZE_IN_BYTES(emitActualTypeSize(hfaType))); |