@@ -2239,9 +2239,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
22392239 {
22402240 var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
22412241 var_types op3Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op3ClsHnd ));
2242- assert ((op2Type == TYP_BYTE && (op3Type == TYP_UBYTE || op3Type == TYP_BYTE)) || (op2Type == TYP_UBYTE && op3Type == TYP_UBYTE));
2243- intrinsic = (op2Type == TYP_UBYTE) ? NI_EVEX_MultiplyWideningAndAddByteByte : ((op3Type == TYP_UBYTE) ? NI_EVEX_MultiplyWideningAndAddSByteByte : NI_EVEX_MultiplyWideningAndAddSByteSByte);
2244- retNode = gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
2242+ assert ((op2Type == TYP_BYTE && (op3Type == TYP_UBYTE || op3Type == TYP_BYTE)) ||
2243+ (op2Type == TYP_UBYTE && op3Type == TYP_UBYTE));
2244+ intrinsic = (op2Type == TYP_UBYTE)
2245+ ? NI_EVEX_MultiplyWideningAndAddByteByte
2246+ : ((op3Type == TYP_UBYTE) ? NI_EVEX_MultiplyWideningAndAddSByteByte
2247+ : NI_EVEX_MultiplyWideningAndAddSByteSByte);
2248+ retNode =
2249+ gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
22452250 break ;
22462251 }
22472252
@@ -2250,9 +2255,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
22502255 {
22512256 var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
22522257 var_types op3Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op3ClsHnd ));
2253- assert ((op2Type == TYP_BYTE && (op3Type == TYP_UBYTE || op3Type == TYP_BYTE)) || (op2Type == TYP_UBYTE && op3Type == TYP_UBYTE));
2254- intrinsic = (op2Type == TYP_UBYTE) ? NI_EVEX_MultiplyWideningAndAddByteByteSaturate : ((op3Type == TYP_UBYTE) ? NI_EVEX_MultiplyWideningAndAddSByteByteSaturate : NI_EVEX_MultiplyWideningAndAddSByteSByteSaturate);
2255- retNode = gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
2258+ assert ((op2Type == TYP_BYTE && (op3Type == TYP_UBYTE || op3Type == TYP_BYTE)) ||
2259+ (op2Type == TYP_UBYTE && op3Type == TYP_UBYTE));
2260+ intrinsic = (op2Type == TYP_UBYTE)
2261+ ? NI_EVEX_MultiplyWideningAndAddByteByteSaturate
2262+ : ((op3Type == TYP_UBYTE) ? NI_EVEX_MultiplyWideningAndAddSByteByteSaturate
2263+ : NI_EVEX_MultiplyWideningAndAddSByteSByteSaturate);
2264+ retNode =
2265+ gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
22562266 break ;
22572267 }
22582268
@@ -2261,9 +2271,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
22612271 {
22622272 var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
22632273 var_types op3Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op3ClsHnd ));
2264- assert ((op2Type == TYP_USHORT && (op3Type == TYP_USHORT || op3Type == TYP_SHORT)) || (op2Type == TYP_SHORT && op3Type == TYP_USHORT));
2265- intrinsic = (op2Type == TYP_SHORT) ? NI_EVEX_MultiplyWideningAndAddInt16UInt16 : ((op3Type == TYP_USHORT) ? NI_EVEX_MultiplyWideningAndAddUInt16UInt16 : NI_EVEX_MultiplyWideningAndAddUInt16Int16);
2266- retNode = gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
2274+ assert ((op2Type == TYP_USHORT && (op3Type == TYP_USHORT || op3Type == TYP_SHORT)) ||
2275+ (op2Type == TYP_SHORT && op3Type == TYP_USHORT));
2276+ intrinsic = (op2Type == TYP_SHORT)
2277+ ? NI_EVEX_MultiplyWideningAndAddInt16UInt16
2278+ : ((op3Type == TYP_USHORT) ? NI_EVEX_MultiplyWideningAndAddUInt16UInt16
2279+ : NI_EVEX_MultiplyWideningAndAddUInt16Int16);
2280+ retNode =
2281+ gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
22672282 break ;
22682283 }
22692284
@@ -2272,9 +2287,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
22722287 {
22732288 var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
22742289 var_types op3Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op3ClsHnd ));
2275- assert ((op2Type == TYP_USHORT && (op3Type == TYP_USHORT || op3Type == TYP_SHORT)) || (op2Type == TYP_SHORT && op3Type == TYP_USHORT));
2276- intrinsic = (op2Type == TYP_SHORT) ? NI_EVEX_MultiplyWideningAndAddInt16UInt16Saturate : ((op3Type == TYP_USHORT) ? NI_EVEX_MultiplyWideningAndAddUInt16UInt16Saturate : NI_EVEX_MultiplyWideningAndAddUInt16Int16Saturate);
2277- retNode = gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
2290+ assert ((op2Type == TYP_USHORT && (op3Type == TYP_USHORT || op3Type == TYP_SHORT)) ||
2291+ (op2Type == TYP_SHORT && op3Type == TYP_USHORT));
2292+ intrinsic = (op2Type == TYP_SHORT)
2293+ ? NI_EVEX_MultiplyWideningAndAddInt16UInt16Saturate
2294+ : ((op3Type == TYP_USHORT) ? NI_EVEX_MultiplyWideningAndAddUInt16UInt16Saturate
2295+ : NI_EVEX_MultiplyWideningAndAddUInt16Int16Saturate);
2296+ retNode =
2297+ gtNewSimdHWIntrinsicNode (nodeRetType, op1, op2, op3, intrinsic, simdBaseJitType, simdSize);
22782298 break ;
22792299 }
22802300
0 commit comments