From: Carol Eidt Date: Mon, 14 Oct 2019 20:23:46 +0000 (-0700) Subject: Correctly handle variable argument SIMDScalar (#26421) (#26778) X-Git-Tag: accepted/tizen/unified/20200402.155517~105 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1a4112735fc9325fcbc816c4f3515290329d9e7c;p=platform%2Fupstream%2Fcoreclr.git Correctly handle variable argument SIMDScalar (#26421) (#26778) * Correctly handle variable argument SIMDScalar Fix #26286 --- 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)) {