Skip to content

Commit 80e2bc0

Browse files
committed
Revert ymm embedded rounding
1 parent f6b9331 commit 80e2bc0

File tree

9 files changed

+5
-539
lines changed

9 files changed

+5
-539
lines changed

src/coreclr/jit/emitxarch.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1980,9 +1980,6 @@ bool emitter::TakesApxExtendedEvexPrefix(const instrDesc* id) const
19801980
// - V'- bit to extend vvvv
19811981
// - aaa - specifies mask register
19821982
// Rest - reserved for future use and usage of them will uresult in Undefined instruction exception.
1983-
// - u - Bit to indicate YMM Embedded rounding.
1984-
// Set to 1 for isas Avx10.1 and below
1985-
// Needs to be set to 0 for AVX10.2 and above to indicate YMM embedded rounding
19861983
// - B' - reserved as of now
19871984
// set to 0 for future compatibility.
19881985
//
@@ -1993,7 +1990,6 @@ bool emitter::TakesApxExtendedEvexPrefix(const instrDesc* id) const
19931990
#define LBIT_IN_BYTE_EVEX_PREFIX 0x0000002000000000ULL
19941991
#define LPRIMEBIT_IN_BYTE_EVEX_PREFIX 0x0000004000000000ULL
19951992
#define ZBIT_IN_BYTE_EVEX_PREFIX 0x0000008000000000ULL
1996-
#define uBIT_IN_BYTE_EVEX_PREFIX 0x0000040000000000ULL
19971993

19981994
#define MAP4_IN_BYTE_EVEX_PREFIX 0x4000000000000ULL
19991995
#define ND_BIT_IN_BYTE_EVEX_PREFIX 0x1000000000ULL
@@ -2100,13 +2096,6 @@ emitter::code_t emitter::AddEvexPrefix(const instrDesc* id, code_t code, emitAtt
21002096

21012097
if (!id->idHasMem())
21022098
{
2103-
// ymm embedded rounding case.
2104-
if (attr == EA_32BYTE)
2105-
{
2106-
assert(emitComp->compIsaSupportedDebugOnly(InstructionSet_AVX10v2));
2107-
code &= ~(uBIT_IN_BYTE_EVEX_PREFIX);
2108-
}
2109-
21102099
unsigned roundingMode = id->idGetEvexbContext();
21112100
if (roundingMode == 1)
21122101
{

src/coreclr/jit/gentree.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -28658,21 +28658,6 @@ bool GenTreeHWIntrinsic::OperIsEmbRoundingEnabled() const
2865828658
case NI_AVX10v1_MultiplyScalar:
2865928659
case NI_AVX10v1_SubtractScalar:
2866028660
case NI_AVX10v1_SqrtScalar:
28661-
case NI_AVX10v2_Add:
28662-
case NI_AVX10v2_ConvertToVector128Int32:
28663-
case NI_AVX10v2_ConvertToVector128Single:
28664-
case NI_AVX10v2_ConvertToVector128UInt32:
28665-
case NI_AVX10v2_ConvertToVector256Double:
28666-
case NI_AVX10v2_ConvertToVector256Int32:
28667-
case NI_AVX10v2_ConvertToVector256Int64:
28668-
case NI_AVX10v2_ConvertToVector256Single:
28669-
case NI_AVX10v2_ConvertToVector256UInt32:
28670-
case NI_AVX10v2_ConvertToVector256UInt64:
28671-
case NI_AVX10v2_Divide:
28672-
case NI_AVX10v2_Multiply:
28673-
case NI_AVX10v2_Scale:
28674-
case NI_AVX10v2_Sqrt:
28675-
case NI_AVX10v2_Subtract:
2867628661
{
2867728662
return true;
2867828663
}
@@ -28741,8 +28726,6 @@ bool GenTreeHWIntrinsic::OperIsEmbRoundingEnabled() const
2874128726
case NI_AVX10v1_V512_ConvertToVector512Double:
2874228727
case NI_AVX10v1_V512_ConvertToVector512Int64:
2874328728
case NI_AVX10v1_V512_ConvertToVector512UInt64:
28744-
case NI_AVX10v2_ConvertToSByteWithSaturationAndZeroExtendToInt32:
28745-
case NI_AVX10v2_ConvertToByteWithSaturationAndZeroExtendToInt32:
2874628729
case NI_AVX10v2_V512_ConvertToSByteWithSaturationAndZeroExtendToInt32:
2874728730
case NI_AVX10v2_V512_ConvertToByteWithSaturationAndZeroExtendToInt32:
2874828731
{
@@ -29127,7 +29110,6 @@ genTreeOps GenTreeHWIntrinsic::GetOperForHWIntrinsicId(NamedIntrinsic id, var_ty
2912729110
case NI_AVX_Add:
2912829111
case NI_AVX2_Add:
2912929112
case NI_AVX512F_Add:
29130-
case NI_AVX10v2_Add:
2913129113
case NI_AVX512BW_Add:
2913229114
#elif defined(TARGET_ARM64)
2913329115
case NI_AdvSimd_Add:
@@ -29164,7 +29146,6 @@ genTreeOps GenTreeHWIntrinsic::GetOperForHWIntrinsicId(NamedIntrinsic id, var_ty
2916429146
case NI_SSE2_Divide:
2916529147
case NI_AVX_Divide:
2916629148
case NI_AVX512F_Divide:
29167-
case NI_AVX10v2_Divide:
2916829149
#elif defined(TARGET_ARM64)
2916929150
case NI_AdvSimd_Arm64_Divide:
2917029151
#endif
@@ -29217,7 +29198,6 @@ genTreeOps GenTreeHWIntrinsic::GetOperForHWIntrinsicId(NamedIntrinsic id, var_ty
2921729198
#if defined(TARGET_XARCH)
2921829199
case NI_SSE2_Multiply:
2921929200
case NI_AVX512F_Multiply:
29220-
case NI_AVX10v2_Multiply:
2922129201
{
2922229202
if (varTypeIsFloating(simdBaseType))
2922329203
{
@@ -29383,7 +29363,6 @@ genTreeOps GenTreeHWIntrinsic::GetOperForHWIntrinsicId(NamedIntrinsic id, var_ty
2938329363
case NI_AVX2_Subtract:
2938429364
case NI_AVX512F_Subtract:
2938529365
case NI_AVX512BW_Subtract:
29386-
case NI_AVX10v2_Subtract:
2938729366
#elif defined(TARGET_ARM64)
2938829367
case NI_AdvSimd_Subtract:
2938929368
case NI_AdvSimd_Arm64_Subtract:

src/coreclr/jit/hwintrinsiclistxarch.h

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,33 +1444,18 @@ HARDWARE_INTRINSIC(AVX10v1_X64, ConvertToUInt64WithTruncation,
14441444
// {TYP_BYTE, TYP_UBYTE, TYP_SHORT, TYP_USHORT, TYP_INT, TYP_UINT, TYP_LONG, TYP_ULONG, TYP_FLOAT, TYP_DOUBLE}
14451445
// ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
14461446
// AVX10v2 Intrinsics
1447-
#define FIRST_NI_AVX10v2 NI_AVX10v2_Add
1448-
HARDWARE_INTRINSIC(AVX10v2, Add, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_addps, INS_addpd}, HW_Category_SimpleSIMD, HW_Flag_Commutative |HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1449-
HARDWARE_INTRINSIC(AVX10v2, ConvertToByteWithSaturationAndZeroExtendToInt32, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtps2iubs, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1447+
#define FIRST_NI_AVX10v2 NI_AVX10v2_ConvertToByteWithSaturationAndZeroExtendToInt32
1448+
HARDWARE_INTRINSIC(AVX10v2, ConvertToByteWithSaturationAndZeroExtendToInt32, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtps2iubs, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
14501449
HARDWARE_INTRINSIC(AVX10v2, ConvertToByteWithTruncatedSaturationAndZeroExtendToInt32, -1, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvttps2iubs, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1451-
HARDWARE_INTRINSIC(AVX10v2, ConvertToSByteWithSaturationAndZeroExtendToInt32, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtps2ibs, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1450+
HARDWARE_INTRINSIC(AVX10v2, ConvertToSByteWithSaturationAndZeroExtendToInt32, -1, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtps2ibs, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
14521451
HARDWARE_INTRINSIC(AVX10v2, ConvertToSByteWithTruncatedSaturationAndZeroExtendToInt32, -1, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvttps2ibs, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1453-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector128Int32, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_cvtpd2dq}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1454-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector128Single, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtqq2ps, INS_vcvtuqq2ps, INS_invalid, INS_cvtpd2ps}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1455-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector128UInt32, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtpd2udq}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1456-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector256Double, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtqq2pd, INS_vcvtuqq2pd, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1457-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector256Int32, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_cvtps2dq, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1458-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector256Int64, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtps2qq, INS_vcvtpd2qq}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1459-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector256Single, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_cvtdq2ps, INS_vcvtudq2ps, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1460-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector256UInt32, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtps2udq, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1461-
HARDWARE_INTRINSIC(AVX10v2, ConvertToVector256UInt64, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvtps2uqq, INS_vcvtpd2uqq}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
14621452
HARDWARE_INTRINSIC(AVX10v2, ConvertToVectorInt32WithTruncationSaturation, -1, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvttps2dqs, INS_vcvttpd2dqs}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
14631453
HARDWARE_INTRINSIC(AVX10v2, ConvertToVectorInt64WithTruncationSaturation, -1, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvttps2qqs, INS_vcvttpd2qqs}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
14641454
HARDWARE_INTRINSIC(AVX10v2, ConvertToVectorUInt32WithTruncationSaturation, -1, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvttps2udqs, INS_vcvttpd2udqs}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
14651455
HARDWARE_INTRINSIC(AVX10v2, ConvertToVectorUInt64WithTruncationSaturation, -1, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vcvttps2uqqs, INS_vcvttpd2uqqs}, HW_Category_SimpleSIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1466-
HARDWARE_INTRINSIC(AVX10v2, Divide, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_divps, INS_divpd}, HW_Category_SimpleSIMD, HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
14671456
HARDWARE_INTRINSIC(AVX10v2, MinMax, -1, 3, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vminmaxps, INS_vminmaxpd}, HW_Category_IMM, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
14681457
HARDWARE_INTRINSIC(AVX10v2, MinMaxScalar, -1, 3, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vminmaxss, INS_vminmaxsd}, HW_Category_IMM, HW_Flag_BaseTypeFromFirstArg|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1469-
HARDWARE_INTRINSIC(AVX10v2, Multiply, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_mulps, INS_mulpd}, HW_Category_SimpleSIMD, HW_Flag_Commutative |HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1470-
HARDWARE_INTRINSIC(AVX10v2, Scale, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vscalefps, INS_vscalefpd}, HW_Category_SimpleSIMD, HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1471-
HARDWARE_INTRINSIC(AVX10v2, Sqrt, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_sqrtps, INS_sqrtpd}, HW_Category_SimpleSIMD, HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1472-
HARDWARE_INTRINSIC(AVX10v2, Subtract, 32, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_subps, INS_subpd}, HW_Category_SimpleSIMD, HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_EmbRoundingCompatible)
1473-
#define LAST_NI_AVX10v2 NI_AVX10v2_Subtract
1458+
#define LAST_NI_AVX10v2 NI_AVX10v2_MinMaxScalar
14741459

14751460
// ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
14761461
// ISA Function name SIMD size NumArg Instructions Category Flags

0 commit comments

Comments
 (0)