@@ -2239,9 +2239,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
2239
2239
{
2240
2240
var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
2241
2241
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);
2245
2250
break ;
2246
2251
}
2247
2252
@@ -2250,9 +2255,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
2250
2255
{
2251
2256
var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
2252
2257
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);
2256
2266
break ;
2257
2267
}
2258
2268
@@ -2261,9 +2271,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
2261
2271
{
2262
2272
var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
2263
2273
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);
2267
2282
break ;
2268
2283
}
2269
2284
@@ -2272,9 +2287,14 @@ GenTree* Compiler::impHWIntrinsic(NamedIntrinsic intrinsic,
2272
2287
{
2273
2288
var_types op2Type = JitType2PreciseVarType (getBaseJitTypeOfSIMDType (sigReader.op2ClsHnd ));
2274
2289
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);
2278
2298
break ;
2279
2299
}
2280
2300
0 commit comments