summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>2018-02-07 09:47:39 -0500
committerSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>2018-02-07 16:49:13 -0500
commitdfecb008fc48f7fd7beff101b266da93488e7706 (patch)
treeba06a19b517b8519bdd4dabd94a5e0e9edf2f892
parent9c84d123bdb87ac034970e13db07361c88ace3fa (diff)
downloadcoreclr-dfecb008fc48f7fd7beff101b266da93488e7706.tar.gz
coreclr-dfecb008fc48f7fd7beff101b266da93488e7706.tar.bz2
coreclr-dfecb008fc48f7fd7beff101b266da93488e7706.zip
[Arm64] Remove SIMD hacks to get*TypeForStruct
-rw-r--r--src/jit/compiler.cpp19
-rw-r--r--src/jit/importer.cpp8
-rw-r--r--src/jit/lclvars.cpp4
3 files changed, 6 insertions, 25 deletions
diff --git a/src/jit/compiler.cpp b/src/jit/compiler.cpp
index c98b61228b..c53dd86518 100644
--- a/src/jit/compiler.cpp
+++ b/src/jit/compiler.cpp
@@ -919,15 +919,6 @@ var_types Compiler::getArgTypeForStruct(CORINFO_CLASS_HANDLE clsHnd,
*wbPassStruct = howToPassStruct;
}
-#if defined(FEATURE_MULTIREG_ARGS) && defined(_TARGET_ARM64_)
- // Normalize struct return type for ARM64 FEATURE_MULTIREG_ARGS
- // This is not yet enabled for ARM32 since FEATURE_SIMD is not enabled
- if (varTypeIsStruct(useType))
- {
- useType = impNormStructType(clsHnd);
- }
-#endif
-
return useType;
}
@@ -1149,16 +1140,6 @@ var_types Compiler::getReturnTypeForStruct(CORINFO_CLASS_HANDLE clsHnd,
*wbReturnStruct = howToReturnStruct;
}
-#if defined(FEATURE_MULTIREG_RET) && defined(_TARGET_ARM64_)
- // Normalize struct return type for ARM64 FEATURE_MULTIREG_RET
- // This is not yet enabled for ARM32 since FEATURE_SIMD is not enabled
- // This is not needed for XARCH as eeGetSystemVAmd64PassStructInRegisterDescriptor() is used
- if (varTypeIsStruct(useType))
- {
- useType = impNormStructType(clsHnd);
- }
-#endif
-
return useType;
}
diff --git a/src/jit/importer.cpp b/src/jit/importer.cpp
index 2fa5f47d0f..720bf0f00b 100644
--- a/src/jit/importer.cpp
+++ b/src/jit/importer.cpp
@@ -1176,11 +1176,11 @@ GenTree* Compiler::impAssignStructPtr(GenTree* destAddr,
// We change this to a GT_LCL_FLD (from a GT_ADDR of a GT_LCL_VAR)
lcl->ChangeOper(GT_LCL_FLD);
fgLclFldAssign(lcl->gtLclVarCommon.gtLclNum);
+ lcl->gtType = src->gtType;
+ asgType = src->gtType;
}
- lcl->gtType = src->gtType;
- asgType = src->gtType;
- dest = lcl;
+ dest = lcl;
#if defined(_TARGET_ARM_)
// TODO-Cleanup: This should have been taken care of in the above HasMultiRegRetVal() case,
@@ -15712,7 +15712,7 @@ GenTree* Compiler::impAssignMultiRegTypeToVar(GenTree* op, CORINFO_CLASS_HANDLE
{
unsigned tmpNum = lvaGrabTemp(true DEBUGARG("Return value temp for multireg return."));
impAssignTempGen(tmpNum, op, hClass, (unsigned)CHECK_SPILL_ALL);
- GenTree* ret = gtNewLclvNode(tmpNum, op->gtType);
+ GenTree* ret = gtNewLclvNode(tmpNum, lvaTable[tmpNum].lvType);
// TODO-1stClassStructs: Handle constant propagation and CSE-ing of multireg returns.
ret->gtFlags |= GTF_DONT_CSE;
diff --git a/src/jit/lclvars.cpp b/src/jit/lclvars.cpp
index bf9a1f9a18..0c6c05cd9d 100644
--- a/src/jit/lclvars.cpp
+++ b/src/jit/lclvars.cpp
@@ -2224,14 +2224,14 @@ bool Compiler::lvaIsMultiregStruct(LclVarDsc* varDsc)
if (howToPassStruct == SPK_ByValueAsHfa)
{
- assert(varTypeIsStruct(TYP_STRUCT));
+ assert(type == TYP_STRUCT);
return true;
}
#if defined(FEATURE_UNIX_AMD64_STRUCT_PASSING) || defined(_TARGET_ARM64_)
if (howToPassStruct == SPK_ByValue)
{
- assert(varTypeIsStruct(TYP_STRUCT));
+ assert(type == TYP_STRUCT);
return true;
}
#endif