From 9c6aab5e93199fe248195821b473b619f0a0f188 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. --- src/jit/lclvars.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/jit/lclvars.cpp b/src/jit/lclvars.cpp index b51b1a8..3af0813 100644 --- a/src/jit/lclvars.cpp +++ b/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