From fc470b2891db3b341fc726ecead75536470998cf Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Mon, 30 Jan 2017 15:34:28 -0800 Subject: [PATCH] Mark RetBuf as SIMD variable I see changes where storeIndir is used now instead of a BLK copy, which is an IR shape improvement. This improves codegen for SIMD8, degrades it for SIMD12 (due to encoding size differences with SSE instructions, though the IR looks better), and is neutral for SIMD16, in the VectorReturn test. Commit migrated from https://github.com/dotnet/coreclr/commit/9c6aab5e93199fe248195821b473b619f0a0f188 --- src/coreclr/src/jit/lclvars.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/coreclr/src/jit/lclvars.cpp b/src/coreclr/src/jit/lclvars.cpp index b51b1a8..3af0813 100644 --- a/src/coreclr/src/jit/lclvars.cpp +++ b/src/coreclr/src/jit/lclvars.cpp @@ -488,6 +488,16 @@ void Compiler::lvaInitRetBuffArg(InitVarDscInfo* varDscInfo) varDsc->lvType = TYP_I_IMPL; } } +#ifdef FEATURE_SIMD + else if (featureSIMD && varTypeIsSIMD(info.compRetType)) + { + varDsc->lvSIMDType = true; + varDsc->lvBaseType = + getBaseTypeAndSizeOfSIMDType(info.compMethodInfo->args.retTypeClass, &varDsc->lvExactSize); + assert(varDsc->lvBaseType != TYP_UNKNOWN); + } +#endif // FEATURE_SIMD + assert(isValidIntArgReg(varDsc->lvArgReg)); #ifdef DEBUG -- 2.7.4