From 1a4112735fc9325fcbc816c4f3515290329d9e7c Mon Sep 17 00:00:00 2001 From: Carol Eidt Date: Mon, 14 Oct 2019 13:23:46 -0700 Subject: [PATCH] Correctly handle variable argument SIMDScalar (#26421) (#26778) * Correctly handle variable argument SIMDScalar Fix #26286 --- src/jit/hwintrinsiccodegenxarch.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/jit/hwintrinsiccodegenxarch.cpp b/src/jit/hwintrinsiccodegenxarch.cpp index 42dba82..84d1fd3 100644 --- a/src/jit/hwintrinsiccodegenxarch.cpp +++ b/src/jit/hwintrinsiccodegenxarch.cpp @@ -125,7 +125,16 @@ void CodeGen::genHWIntrinsic(GenTreeHWIntrinsic* node) if ((ival != -1) && varTypeIsFloating(baseType)) { assert((ival >= 0) && (ival <= 127)); - genHWIntrinsic_R_RM_I(node, ins, (int8_t)ival); + if ((category == HW_Category_SIMDScalar) && HWIntrinsicInfo::CopiesUpperBits(intrinsicId)) + { + assert(!op1->isContained()); + emit->emitIns_SIMD_R_R_R_I(ins, simdSize, targetReg, op1Reg, op1Reg, + static_cast(ival)); + } + else + { + genHWIntrinsic_R_RM_I(node, ins, static_cast(ival)); + } } else if ((category == HW_Category_SIMDScalar) && HWIntrinsicInfo::CopiesUpperBits(intrinsicId)) { -- 2.7.4