Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 7ef9a0d

Browse files
committedJun 10, 2024·
Cleanup some handling around Avx10v1
1 parent c87d73c commit 7ef9a0d

File tree

10 files changed

+47
-561
lines changed

10 files changed

+47
-561
lines changed
 

‎src/coreclr/jit/hwintrinsiclistxarch.h

-10
Original file line numberDiff line numberDiff line change
@@ -1185,18 +1185,8 @@ HARDWARE_INTRINSIC(AVX10v1, GetMantissaScalar,
11851185
HARDWARE_INTRINSIC(AVX10v1, LeadingZeroCount, -1, 1, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vplzcntd, INS_vplzcntd, INS_vplzcntq, INS_vplzcntq, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
11861186
HARDWARE_INTRINSIC(AVX10v1, Max, -1, 2, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vpmaxsq, INS_vpmaxuq, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_Commutative)
11871187
HARDWARE_INTRINSIC(AVX10v1, Min, -1, 2, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vpminsq, INS_vpminuq, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible|HW_Flag_Commutative)
1188-
HARDWARE_INTRINSIC(AVX10v1, MultiplyAdd, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfmadd213ps, INS_vfmadd213pd}, HW_Category_SimpleSIMD, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1189-
HARDWARE_INTRINSIC(AVX10v1, MultiplyAddNegated, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfnmadd213ps, INS_vfnmadd213pd}, HW_Category_SimpleSIMD, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1190-
HARDWARE_INTRINSIC(AVX10v1, MultiplyAddNegatedScalar, 16, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfnmadd213ss, INS_vfnmadd213sd}, HW_Category_SIMDScalar, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_CopyUpperBits)
1191-
HARDWARE_INTRINSIC(AVX10v1, MultiplyAddScalar, 16, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfmadd213ss, INS_vfmadd213sd}, HW_Category_SIMDScalar, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_CopyUpperBits)
1192-
HARDWARE_INTRINSIC(AVX10v1, MultiplyAddSubtract, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfmaddsub213ps, INS_vfmaddsub213pd}, HW_Category_SimpleSIMD, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
11931188
HARDWARE_INTRINSIC(AVX10v1, MultiplyLow, -1, 2, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vpmullq, INS_vpmullq, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_Commutative|HW_Flag_EmbMaskingCompatible)
11941189
HARDWARE_INTRINSIC(AVX10v1, MultiplyScalar, 16, -1, false, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_mulss, INS_mulsd}, HW_Category_SIMDScalar, HW_Flag_CopyUpperBits|HW_Flag_EmbRoundingCompatible)
1195-
HARDWARE_INTRINSIC(AVX10v1, MultiplySubtract, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfmsub213ps, INS_vfmsub213pd}, HW_Category_SimpleSIMD, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1196-
HARDWARE_INTRINSIC(AVX10v1, MultiplySubtractAdd, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfmsubadd213ps, INS_vfmsubadd213pd}, HW_Category_SimpleSIMD, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1197-
HARDWARE_INTRINSIC(AVX10v1, MultiplySubtractNegated, -1, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfnmsub213ps, INS_vfnmsub213pd}, HW_Category_SimpleSIMD, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_EmbBroadcastCompatible|HW_Flag_EmbMaskingCompatible)
1198-
HARDWARE_INTRINSIC(AVX10v1, MultiplySubtractNegatedScalar, 16, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfnmsub213ss, INS_vfnmsub213sd}, HW_Category_SIMDScalar, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_CopyUpperBits)
1199-
HARDWARE_INTRINSIC(AVX10v1, MultiplySubtractScalar, 16, 3, true, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vfmsub213ss, INS_vfmsub213sd}, HW_Category_SIMDScalar, HW_Flag_SpecialCodeGen|HW_Flag_FmaIntrinsic|HW_Flag_RmwIntrinsic|HW_Flag_CopyUpperBits)
12001190
HARDWARE_INTRINSIC(AVX10v1, PermuteVar16x16, 32, 2, false, {INS_invalid, INS_invalid, INS_vpermw, INS_vpermw, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_SpecialImport|HW_Flag_EmbMaskingCompatible)
12011191
HARDWARE_INTRINSIC(AVX10v1, PermuteVar16x16x2, 32, 3, false, {INS_invalid, INS_invalid, INS_vpermt2w, INS_vpermt2w, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_SpecialCodeGen|HW_Flag_PermuteVar2x|HW_Flag_RmwIntrinsic|HW_Flag_EmbMaskingCompatible)
12021192
HARDWARE_INTRINSIC(AVX10v1, PermuteVar16x8, 16, 2, false, {INS_vpermb, INS_vpermb, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_SpecialImport|HW_Flag_EmbMaskingCompatible)

‎src/coreclr/jit/hwintrinsicxarch.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -970,8 +970,8 @@ GenTree* Compiler::impNonConstFallback(NamedIntrinsic intrinsic, var_types simdT
970970
static_assert_no_msg(NI_AVX512F_RotateLeftVariable == (NI_AVX512F_RotateLeft + 1));
971971
static_assert_no_msg(NI_AVX512F_RotateRightVariable == (NI_AVX512F_RotateRight + 1));
972972
static_assert_no_msg(NI_AVX512F_VL_RotateLeftVariable == (NI_AVX512F_VL_RotateLeft + 1));
973-
static_assert_no_msg(NI_AVX10v1_RotateLeftVariable == (NI_AVX10v1_RotateLeft + 1));
974973
static_assert_no_msg(NI_AVX512F_VL_RotateRightVariable == (NI_AVX512F_VL_RotateRight + 1));
974+
static_assert_no_msg(NI_AVX10v1_RotateLeftVariable == (NI_AVX10v1_RotateLeft + 1));
975975
static_assert_no_msg(NI_AVX10v1_RotateRightVariable == (NI_AVX10v1_RotateRight + 1));
976976

977977
impSpillSideEffect(true,

‎src/coreclr/jit/importercalls.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -4012,11 +4012,8 @@ GenTree* Compiler::impIntrinsic(GenTree* newobjThis,
40124012
op2 = gtNewSimdCreateScalarUnsafeNode(TYP_SIMD16, op2, callJitType, 16);
40134013
op1 = gtNewSimdCreateScalarUnsafeNode(TYP_SIMD16, op1, callJitType, 16);
40144014

4015-
retNode = compOpportunisticallyDependsOn(InstructionSet_AVX10v1)
4016-
? gtNewSimdHWIntrinsicNode(TYP_SIMD16, op1, op2, op3, NI_AVX10v1_MultiplyAddScalar,
4017-
callJitType, 16)
4018-
: gtNewSimdHWIntrinsicNode(TYP_SIMD16, op1, op2, op3, NI_FMA_MultiplyAddScalar,
4019-
callJitType, 16);
4015+
retNode =
4016+
gtNewSimdHWIntrinsicNode(TYP_SIMD16, op1, op2, op3, NI_FMA_MultiplyAddScalar, callJitType, 16);
40204017

40214018
retNode = gtNewSimdToScalarNode(callType, retNode, callJitType, 16);
40224019
break;
@@ -9298,8 +9295,9 @@ GenTree* Compiler::impMinMaxIntrinsic(CORINFO_METHOD_HANDLE method,
92989295
#if defined(FEATURE_HW_INTRINSICS) && defined(TARGET_XARCH)
92999296
if (!isMagnitude && compOpportunisticallyDependsOn(InstructionSet_SSE2))
93009297
{
9301-
bool needsFixup = false;
9302-
bool canHandle = false;
9298+
bool needsFixup = false;
9299+
bool canHandle = false;
9300+
bool isV512Supported = false;
93039301

93049302
if (isMax)
93059303
{
@@ -9328,7 +9326,7 @@ GenTree* Compiler::impMinMaxIntrinsic(CORINFO_METHOD_HANDLE method,
93289326
needsFixup = cnsNode->IsFloatPositiveZero();
93299327
}
93309328

9331-
if (!needsFixup || compOpportunisticallyDependsOn(InstructionSet_AVX512F))
9329+
if (!needsFixup || compIsEvexOpportunisticallySupported(isV512Supported))
93329330
{
93339331
// Given the checks, op1 can safely be the cns and op2 the other node
93349332

@@ -9369,7 +9367,7 @@ GenTree* Compiler::impMinMaxIntrinsic(CORINFO_METHOD_HANDLE method,
93699367
needsFixup = cnsNode->IsFloatNegativeZero();
93709368
}
93719369

9372-
if (!needsFixup || compOpportunisticallyDependsOn(InstructionSet_AVX512F))
9370+
if (!needsFixup || compIsEvexOpportunisticallySupported(isV512Supported))
93739371
{
93749372
// Given the checks, op1 can safely be the cns and op2 the other node
93759373

@@ -9453,8 +9451,10 @@ GenTree* Compiler::impMinMaxIntrinsic(CORINFO_METHOD_HANDLE method,
94539451
tbl->gtSimdVal.i32[0] = 0x0700;
94549452
}
94559453

9454+
NamedIntrinsic fixupScalarId = isV512Supported ? NI_AVX512F_FixupScalar : NI_AVX10v1_FixupScalar;
9455+
94569456
retNode = gtNewSimdHWIntrinsicNode(TYP_SIMD16, retNode, op2Clone, tbl, gtNewIconNode(0),
9457-
NI_AVX512F_FixupScalar, callJitType, 16);
9457+
fixupScalarId, callJitType, 16);
94589458
}
94599459

94609460
if (isNumber)

‎src/coreclr/jit/lowerxarch.cpp

+19-34
Original file line numberDiff line numberDiff line change
@@ -1303,30 +1303,29 @@ void Lowering::LowerHWIntrinsicCC(GenTreeHWIntrinsic* node, NamedIntrinsic newIn
13031303
}
13041304

13051305
//----------------------------------------------------------------------------------------------
1306-
// LowerFusedMultiplyAdd: Changes NI_FMA_MultiplyAddScalar / NI_AVX10v1_MultiplyAddScalar produced
1306+
// LowerFusedMultiplyAdd: Changes NI_FMA_MultiplyAddScalar produced
13071307
// by Math(F).FusedMultiplyAdd to a better FMA intrinsics if there are GT_NEG around in order
13081308
// to eliminate them.
13091309
//
13101310
// Arguments:
13111311
// node - The hardware intrinsic node
13121312
//
13131313
// Notes:
1314-
// Math(F).FusedMultiplyAdd is expanded into NI_FMA_MultiplyAddScalar / NI_AVX10v1_MultiplyAddScalar and
1314+
// Math(F).FusedMultiplyAdd is expanded into NI_FMA_MultiplyAddScalar and
13151315
// depending on additional GT_NEG nodes around it can be:
13161316
//
1317-
// x * y + z -> NI_FMA_MultiplyAddScalar / NI_AVX10v1_MultiplyAddScalar
1318-
// x * -y + z -> NI_FMA_MultiplyAddNegatedScalar / NI_AVX10v1_MultiplyAddNegatedScalar
1319-
// -x * y + z -> NI_FMA_MultiplyAddNegatedScalar / NI_AVX10v1_MultiplyAddNegatedScalar
1320-
// -x * -y + z -> NI_FMA_MultiplyAddScalar / NI_AVX10v1_MultiplyAddScalar
1321-
// x * y - z -> NI_FMA_MultiplySubtractScalar / NI_AVX10v1_MultiplySubtractScalar
1322-
// x * -y - z -> NI_FMA_MultiplySubtractNegatedScalar / NI_AVX10v1_MultiplySubtractNegatedScalar
1323-
// -x * y - z -> NI_FMA_MultiplySubtractNegatedScalar / NI_AVX10v1_MultiplySubtractNegatedScalar
1324-
// -x * -y - z -> NI_FMA_MultiplySubtractScalar / NI_AVX10v1_MultiplySubtractScalar
1317+
// x * y + z -> NI_FMA_MultiplyAddScalar
1318+
// x * -y + z -> NI_FMA_MultiplyAddNegatedScalar
1319+
// -x * y + z -> NI_FMA_MultiplyAddNegatedScalar
1320+
// -x * -y + z -> NI_FMA_MultiplyAddScalar
1321+
// x * y - z -> NI_FMA_MultiplySubtractScalar
1322+
// x * -y - z -> NI_FMA_MultiplySubtractNegatedScalar
1323+
// -x * y - z -> NI_FMA_MultiplySubtractNegatedScalar
1324+
// -x * -y - z -> NI_FMA_MultiplySubtractScalar
13251325
//
13261326
void Lowering::LowerFusedMultiplyAdd(GenTreeHWIntrinsic* node)
13271327
{
1328-
assert((node->GetHWIntrinsicId() == NI_FMA_MultiplyAddScalar) ||
1329-
(node->GetHWIntrinsicId() == NI_AVX10v1_MultiplyAddScalar));
1328+
assert(node->GetHWIntrinsicId() == NI_FMA_MultiplyAddScalar);
13301329
GenTreeHWIntrinsic* createScalarOps[3];
13311330

13321331
for (size_t i = 1; i <= 3; i++)
@@ -1370,26 +1369,11 @@ void Lowering::LowerFusedMultiplyAdd(GenTreeHWIntrinsic* node)
13701369
createScalarOps[2]->Op(1)->ClearContained();
13711370
ContainCheckHWIntrinsic(createScalarOps[2]);
13721371

1373-
if (comp->compOpportunisticallyDependsOn(InstructionSet_AVX10v1))
1374-
{
1375-
node->ChangeHWIntrinsicId(negMul ? NI_AVX10v1_MultiplySubtractNegatedScalar
1376-
: NI_AVX10v1_MultiplySubtractScalar);
1377-
}
1378-
else
1379-
{
1380-
node->ChangeHWIntrinsicId(negMul ? NI_FMA_MultiplySubtractNegatedScalar : NI_FMA_MultiplySubtractScalar);
1381-
}
1372+
node->ChangeHWIntrinsicId(negMul ? NI_FMA_MultiplySubtractNegatedScalar : NI_FMA_MultiplySubtractScalar);
13821373
}
13831374
else
13841375
{
1385-
if (comp->compOpportunisticallyDependsOn(InstructionSet_AVX10v1))
1386-
{
1387-
node->ChangeHWIntrinsicId(negMul ? NI_AVX10v1_MultiplyAddNegatedScalar : NI_AVX10v1_MultiplyAddScalar);
1388-
}
1389-
else
1390-
{
1391-
node->ChangeHWIntrinsicId(negMul ? NI_FMA_MultiplyAddNegatedScalar : NI_FMA_MultiplyAddScalar);
1392-
}
1376+
node->ChangeHWIntrinsicId(negMul ? NI_FMA_MultiplyAddNegatedScalar : NI_FMA_MultiplyAddScalar);
13931377
}
13941378
}
13951379

@@ -2150,7 +2134,6 @@ GenTree* Lowering::LowerHWIntrinsic(GenTreeHWIntrinsic* node)
21502134
break;
21512135

21522136
case NI_FMA_MultiplyAddScalar:
2153-
case NI_AVX10v1_MultiplyAddScalar:
21542137
LowerFusedMultiplyAdd(node);
21552138
break;
21562139

@@ -4907,7 +4890,7 @@ GenTree* Lowering::LowerHWIntrinsicGetElement(GenTreeHWIntrinsic* node)
49074890

49084891
NamedIntrinsic extractIntrinsicId = NI_AVX512F_ExtractVector128;
49094892

4910-
if ((genTypeSize(simdBaseType) == 8) && !comp->compOpportunisticallyDependsOn(InstructionSet_AVX512DQ))
4893+
if ((genTypeSize(simdBaseType) == 8) && comp->compOpportunisticallyDependsOn(InstructionSet_AVX512DQ))
49114894
{
49124895
extractIntrinsicId = NI_AVX512DQ_ExtractVector128;
49134896
}
@@ -5191,7 +5174,7 @@ GenTree* Lowering::LowerHWIntrinsicWithElement(GenTreeHWIntrinsic* node)
51915174

51925175
NamedIntrinsic extractIntrinsicId = NI_AVX512F_ExtractVector128;
51935176

5194-
if ((genTypeSize(simdBaseType) == 8) && !comp->compOpportunisticallyDependsOn(InstructionSet_AVX512DQ))
5177+
if ((genTypeSize(simdBaseType) == 8) && comp->compOpportunisticallyDependsOn(InstructionSet_AVX512DQ))
51955178
{
51965179
extractIntrinsicId = NI_AVX512DQ_ExtractVector128;
51975180
}
@@ -5211,7 +5194,7 @@ GenTree* Lowering::LowerHWIntrinsicWithElement(GenTreeHWIntrinsic* node)
52115194

52125195
NamedIntrinsic insertIntrinsicId = NI_AVX512F_InsertVector128;
52135196

5214-
if ((genTypeSize(simdBaseType) == 8) && !comp->compOpportunisticallyDependsOn(InstructionSet_AVX512DQ))
5197+
if ((genTypeSize(simdBaseType) == 8) && comp->compOpportunisticallyDependsOn(InstructionSet_AVX512DQ))
52155198
{
52165199
insertIntrinsicId = NI_AVX512DQ_InsertVector128;
52175200
}
@@ -8708,9 +8691,9 @@ bool Lowering::IsContainableHWIntrinsicOp(GenTreeHWIntrinsic* parentNode, GenTre
87088691
case NI_AVX10v1_RotateRight:
87098692
case NI_AVX10v1_RoundScale:
87108693
case NI_AVX10v1_ShiftRightArithmetic:
8694+
case NI_AVX10v1_Shuffle2x128:
87118695
case NI_AVX10v1_SumAbsoluteDifferencesInBlock32:
87128696
case NI_AVX10v1_TernaryLogic:
8713-
case NI_AVX10v1_Shuffle2x128:
87148697
case NI_AVX10v1_V512_Range:
87158698
case NI_AVX10v1_V512_Reduce:
87168699
{
@@ -8847,6 +8830,7 @@ bool Lowering::IsContainableHWIntrinsicOp(GenTreeHWIntrinsic* parentNode, GenTre
88478830
case NI_AVX512F_RoundScaleScalar:
88488831
case NI_AVX512DQ_RangeScalar:
88498832
case NI_AVX512DQ_ReduceScalar:
8833+
case NI_AVX10v1_FixupScalar:
88508834
case NI_AVX10v1_GetMantissaScalar:
88518835
case NI_AVX10v1_RangeScalar:
88528836
case NI_AVX10v1_ReduceScalar:
@@ -8937,6 +8921,7 @@ bool Lowering::IsContainableHWIntrinsicOp(GenTreeHWIntrinsic* parentNode, GenTre
89378921
case NI_AVX512F_X64_ConvertScalarToVector128Single:
89388922
case NI_AVX10v1_X64_ConvertScalarToVector128Double:
89398923
case NI_AVX10v1_X64_ConvertScalarToVector128Single:
8924+
case NI_AVX10v1_ConvertScalarToVector128Double:
89408925
case NI_AVX10v1_ConvertScalarToVector128Single:
89418926
{
89428927
if (!varTypeIsIntegral(childNode->TypeGet()))

‎src/coreclr/jit/lsraxarch.cpp

-10
Original file line numberDiff line numberDiff line change
@@ -2455,16 +2455,6 @@ int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree, int* pDstCou
24552455
case NI_AVX10v1_FusedMultiplyAddScalar:
24562456
case NI_AVX10v1_FusedMultiplySubtractNegatedScalar:
24572457
case NI_AVX10v1_FusedMultiplySubtractScalar:
2458-
case NI_AVX10v1_MultiplyAdd:
2459-
case NI_AVX10v1_MultiplyAddNegated:
2460-
case NI_AVX10v1_MultiplyAddNegatedScalar:
2461-
case NI_AVX10v1_MultiplyAddScalar:
2462-
case NI_AVX10v1_MultiplyAddSubtract:
2463-
case NI_AVX10v1_MultiplySubtract:
2464-
case NI_AVX10v1_MultiplySubtractAdd:
2465-
case NI_AVX10v1_MultiplySubtractNegated:
2466-
case NI_AVX10v1_MultiplySubtractNegatedScalar:
2467-
case NI_AVX10v1_MultiplySubtractScalar:
24682458
{
24692459
assert((numArgs == 3) || (intrinsicTree->OperIsEmbRoundingEnabled()));
24702460
assert(isRMW);

‎src/coreclr/jit/simdashwintrinsic.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1030,7 +1030,7 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic intrinsic,
10301030
assert(sig->numArgs == 1);
10311031
assert(varTypeIsLong(simdBaseType));
10321032
NamedIntrinsic intrinsic = NI_Illegal;
1033-
if (compOpportunisticallyDependsOn(InstructionSet_AVX10v1))
1033+
if ((simdSize != 64) && compOpportunisticallyDependsOn(InstructionSet_AVX10v1))
10341034
{
10351035
if (simdSize == 32)
10361036
{

‎src/coreclr/vm/codeman.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -1369,12 +1369,12 @@ void EEJitManager::SetCpuInfo()
13691369
}
13701370

13711371
if (((cpuFeatures & XArchIntrinsicConstants_Avx512f) != 0) &&
1372-
((cpuFeatures & XArchIntrinsicConstants_Avx512f_vl) != 0)
1373-
((cpuFeatures & XArchIntrinsicConstants_Avx512bw) != 0)
1374-
((cpuFeatures & XArchIntrinsicConstants_Avx512bw_vl) != 0)
1375-
((cpuFeatures & XArchIntrinsicConstants_Avx512cd) != 0)
1376-
((cpuFeatures & XArchIntrinsicConstants_Avx512cd_vl) != 0)
1377-
((cpuFeatures & XArchIntrinsicConstants_Avx512dq) != 0)
1372+
((cpuFeatures & XArchIntrinsicConstants_Avx512f_vl) != 0) &&
1373+
((cpuFeatures & XArchIntrinsicConstants_Avx512bw) != 0) &&
1374+
((cpuFeatures & XArchIntrinsicConstants_Avx512bw_vl) != 0) &&
1375+
((cpuFeatures & XArchIntrinsicConstants_Avx512cd) != 0) &&
1376+
((cpuFeatures & XArchIntrinsicConstants_Avx512cd_vl) != 0) &&
1377+
((cpuFeatures & XArchIntrinsicConstants_Avx512dq) != 0) &&
13781378
((cpuFeatures & XArchIntrinsicConstants_Avx512dq_vl) != 0))
13791379
{
13801380
// While the AVX-512 ISAs can be individually lit-up, they really

‎src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/X86/Avx10v1.PlatformNotSupported.cs

-224
Original file line numberDiff line numberDiff line change
@@ -1616,118 +1616,6 @@ internal Avx10v1() { }
16161616
/// </summary>
16171617
public static Vector256<ulong> Min(Vector256<ulong> left, Vector256<ulong> right) { throw new PlatformNotSupportedException(); }
16181618

1619-
/// <summary>
1620-
/// __m128 _mm_fmadd_ps (__m128 a, __m128 b, __m128 c)
1621-
/// VFMADDPS xmm1, xmm2, xmm3/m128
1622-
/// VFMADDPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1623-
/// </summary>
1624-
public static Vector128<float> MultiplyAdd(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1625-
1626-
/// <summary>
1627-
/// __m128d _mm_fmadd_pd (__m128d a, __m128d b, __m128d c)
1628-
/// VFMADDPD xmm1, xmm2, xmm3/m128
1629-
/// VFMADDPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1630-
/// </summary>
1631-
public static Vector128<double> MultiplyAdd(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1632-
1633-
/// <summary>
1634-
/// __m256 _mm256_fmadd_ps (__m256 a, __m256 b, __m256 c)
1635-
/// VFMADDPS ymm1, ymm2, ymm3/m256
1636-
/// VFMADDPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1637-
/// </summary>
1638-
public static Vector256<float> MultiplyAdd(Vector256<float> a, Vector256<float> b, Vector256<float> c) { throw new PlatformNotSupportedException(); }
1639-
1640-
/// <summary>
1641-
/// __m256d _mm256_fmadd_pd (__m256d a, __m256d b, __m256d c)
1642-
/// VFMADDPD ymm1, ymm2, ymm3/m256
1643-
/// VFMADDPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1644-
/// </summary>
1645-
public static Vector256<double> MultiplyAdd(Vector256<double> a, Vector256<double> b, Vector256<double> c) { throw new PlatformNotSupportedException(); }
1646-
1647-
/// <summary>
1648-
/// __m128 _mm_fnmadd_ps (__m128 a, __m128 b, __m128 c)
1649-
/// VFNMADDPS xmm1, xmm2, xmm3/m128
1650-
/// VFNMADDPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1651-
/// </summary>
1652-
public static Vector128<float> MultiplyAddNegated(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1653-
1654-
/// <summary>
1655-
/// __m128d _mm_fnmadd_pd (__m128d a, __m128d b, __m128d c)
1656-
/// VFNMADDPD xmm1, xmm2, xmm3/m128
1657-
/// VFNMADDPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1658-
/// </summary>
1659-
public static Vector128<double> MultiplyAddNegated(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1660-
1661-
/// <summary>
1662-
/// __m256 _mm256_fnmadd_ps (__m256 a, __m256 b, __m256 c)
1663-
/// VFNMADDPS ymm1, ymm2, ymm3/m256
1664-
/// VFNMADDPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1665-
/// </summary>
1666-
public static Vector256<float> MultiplyAddNegated(Vector256<float> a, Vector256<float> b, Vector256<float> c) { throw new PlatformNotSupportedException(); }
1667-
1668-
/// <summary>
1669-
/// __m256d _mm256_fnmadd_pd (__m256d a, __m256d b, __m256d c)
1670-
/// VFNMADDPD ymm1, ymm2, ymm3/m256
1671-
/// VFNMADDPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1672-
/// </summary>
1673-
public static Vector256<double> MultiplyAddNegated(Vector256<double> a, Vector256<double> b, Vector256<double> c) { throw new PlatformNotSupportedException(); }
1674-
1675-
/// <summary>
1676-
/// __m128 _mm_fnmadd_ss (__m128 a, __m128 b, __m128 c)
1677-
/// VFNMADDSS xmm1, xmm2, xmm3/m32
1678-
/// VFNMADDSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1679-
/// </summary>
1680-
public static Vector128<float> MultiplyAddNegatedScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1681-
1682-
/// <summary>
1683-
/// __m128d _mm_fnmadd_sd (__m128d a, __m128d b, __m128d c)
1684-
/// VFNMADDSD xmm1, xmm2, xmm3/m64
1685-
/// VFNMADDSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1686-
/// </summary>
1687-
public static Vector128<double> MultiplyAddNegatedScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1688-
1689-
/// <summary>
1690-
/// __m128 _mm_fmadd_ss (__m128 a, __m128 b, __m128 c)
1691-
/// VFMADDSS xmm1, xmm2, xmm3/m32
1692-
/// VFMADDSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1693-
/// </summary>
1694-
public static Vector128<float> MultiplyAddScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1695-
1696-
/// <summary>
1697-
/// __m128d _mm_fmadd_sd (__m128d a, __m128d b, __m128d c)
1698-
/// VFMADDSD xmm1, xmm2, xmm3/m64
1699-
/// VFMADDSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1700-
/// </summary>
1701-
public static Vector128<double> MultiplyAddScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1702-
1703-
/// <summary>
1704-
/// __m128 _mm_fmaddsub_ps (__m128 a, __m128 b, __m128 c)
1705-
/// VFMADDSUBPS xmm1, xmm2, xmm3/m128
1706-
/// VFMADDSUBPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1707-
/// </summary>
1708-
public static Vector128<float> MultiplyAddSubtract(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1709-
1710-
/// <summary>
1711-
/// __m128d _mm_fmaddsub_pd (__m128d a, __m128d b, __m128d c)
1712-
/// VFMADDSUBPD xmm1, xmm2, xmm3/m128
1713-
/// VFMADDSUBPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1714-
/// </summary>
1715-
public static Vector128<double> MultiplyAddSubtract(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1716-
1717-
/// <summary>
1718-
/// __m256 _mm256_fmaddsub_ps (__m256 a, __m256 b, __m256 c)
1719-
/// VFMADDSUBPS ymm1, ymm2, ymm3/m256
1720-
/// VFMADDSUBPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1721-
/// </summary>
1722-
public static Vector256<float> MultiplyAddSubtract(Vector256<float> a, Vector256<float> b, Vector256<float> c) { throw new PlatformNotSupportedException(); }
1723-
1724-
/// <summary>
1725-
/// __m256d _mm256_fmaddsub_pd (__m256d a, __m256d b, __m256d c)
1726-
/// VFMADDSUBPD ymm1, ymm2, ymm3/m256
1727-
/// VFMADDSUBPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1728-
/// </summary>
1729-
public static Vector256<double> MultiplyAddSubtract(Vector256<double> a, Vector256<double> b, Vector256<double> c) { throw new PlatformNotSupportedException(); }
1730-
17311619
/// <summary>
17321620
/// __m128i _mm_mullo_epi64 (__m128i a, __m128i b)
17331621
/// VPMULLQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
@@ -1764,118 +1652,6 @@ internal Avx10v1() { }
17641652
/// </summary>
17651653
public static Vector128<float> MultiplyScalar(Vector128<float> left, Vector128<float> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) { throw new PlatformNotSupportedException(); }
17661654

1767-
/// <summary>
1768-
/// __m128 _mm_fmsub_ps (__m128 a, __m128 b, __m128 c)
1769-
/// VFMSUBPS xmm1, xmm2, xmm3/m128
1770-
/// VFMSUBPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1771-
/// </summary>
1772-
public static Vector128<float> MultiplySubtract(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1773-
1774-
/// <summary>
1775-
/// __m128d _mm_fmsub_pd (__m128d a, __m128d b, __m128d c)
1776-
/// VFMSUBPD xmm1, xmm2, xmm3/m128
1777-
/// VFMSUBPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1778-
/// </summary>
1779-
public static Vector128<double> MultiplySubtract(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1780-
1781-
/// <summary>
1782-
/// __m256 _mm256_fmsub_ps (__m256 a, __m256 b, __m256 c)
1783-
/// VFMSUBPS ymm1, ymm2, ymm3/m256
1784-
/// VFMSUBPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1785-
/// </summary>
1786-
public static Vector256<float> MultiplySubtract(Vector256<float> a, Vector256<float> b, Vector256<float> c) { throw new PlatformNotSupportedException(); }
1787-
1788-
/// <summary>
1789-
/// __m256d _mm256_fmsub_pd (__m256d a, __m256d b, __m256d c)
1790-
/// VFMSUBPD ymm1, ymm2, ymm3/m256
1791-
/// VFMSUBPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1792-
/// </summary>
1793-
public static Vector256<double> MultiplySubtract(Vector256<double> a, Vector256<double> b, Vector256<double> c) { throw new PlatformNotSupportedException(); }
1794-
1795-
/// <summary>
1796-
/// __m128 _mm_fmsubadd_ps (__m128 a, __m128 b, __m128 c)
1797-
/// VFMSUBADDPS xmm1, xmm2, xmm3/m128
1798-
/// VFMSUBADDPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1799-
/// </summary>
1800-
public static Vector128<float> MultiplySubtractAdd(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1801-
1802-
/// <summary>
1803-
/// __m128d _mm_fmsubadd_pd (__m128d a, __m128d b, __m128d c)
1804-
/// VFMSUBADDPD xmm1, xmm2, xmm3/m128
1805-
/// VFMSUBADDPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1806-
/// </summary>
1807-
public static Vector128<double> MultiplySubtractAdd(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1808-
1809-
/// <summary>
1810-
/// __m256 _mm256_fmsubadd_ps (__m256 a, __m256 b, __m256 c)
1811-
/// VFMSUBADDPS ymm1, ymm2, ymm3/m256
1812-
/// VFMSUBADDPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1813-
/// </summary>
1814-
public static Vector256<float> MultiplySubtractAdd(Vector256<float> a, Vector256<float> b, Vector256<float> c) { throw new PlatformNotSupportedException(); }
1815-
1816-
/// <summary>
1817-
/// __m256d _mm256_fmsubadd_pd (__m256d a, __m256d b, __m256d c)
1818-
/// VFMSUBADDPD ymm1, ymm2, ymm3/m256
1819-
/// VFMSUBADDPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1820-
/// </summary>
1821-
public static Vector256<double> MultiplySubtractAdd(Vector256<double> a, Vector256<double> b, Vector256<double> c) { throw new PlatformNotSupportedException(); }
1822-
1823-
/// <summary>
1824-
/// __m128 _mm_fnmsub_ps (__m128 a, __m128 b, __m128 c)
1825-
/// VFNMSUBPS xmm1, xmm2, xmm3/m128
1826-
/// VFNMSUBPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1827-
/// </summary>
1828-
public static Vector128<float> MultiplySubtractNegated(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1829-
1830-
/// <summary>
1831-
/// __m128d _mm_fnmsub_pd (__m128d a, __m128d b, __m128d c)
1832-
/// VFNMSUBPD xmm1, xmm2, xmm3/m128
1833-
/// VFNMSUBPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1834-
/// </summary>
1835-
public static Vector128<double> MultiplySubtractNegated(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1836-
1837-
/// <summary>
1838-
/// __m256 _mm256_fnmsub_ps (__m256 a, __m256 b, __m256 c)
1839-
/// VFNMSUBPS ymm1, ymm2, ymm3/m256
1840-
/// VFNMSUBPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1841-
/// </summary>
1842-
public static Vector256<float> MultiplySubtractNegated(Vector256<float> a, Vector256<float> b, Vector256<float> c) { throw new PlatformNotSupportedException(); }
1843-
1844-
/// <summary>
1845-
/// __m256d _mm256_fnmsub_pd (__m256d a, __m256d b, __m256d c)
1846-
/// VFNMSUBPD ymm1, ymm2, ymm3/m256
1847-
/// VFNMSUBPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1848-
/// </summary>
1849-
public static Vector256<double> MultiplySubtractNegated(Vector256<double> a, Vector256<double> b, Vector256<double> c) { throw new PlatformNotSupportedException(); }
1850-
1851-
/// <summary>
1852-
/// __m128 _mm_fnmsub_ss (__m128 a, __m128 b, __m128 c)
1853-
/// VFNMSUBSS xmm1, xmm2, xmm3/m32
1854-
/// VFNMSUBSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1855-
/// </summary>
1856-
public static Vector128<float> MultiplySubtractNegatedScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1857-
1858-
/// <summary>
1859-
/// __m128d _mm_fnmsub_sd (__m128d a, __m128d b, __m128d c)
1860-
/// VFNMSUBSD xmm1, xmm2, xmm3/m64
1861-
/// VFNMSUBSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1862-
/// </summary>
1863-
public static Vector128<double> MultiplySubtractNegatedScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1864-
1865-
/// <summary>
1866-
/// __m128d _mm_fmsub_sd (__m128d a, __m128d b, __m128d c)
1867-
/// VFMSUBSD xmm1, xmm2, xmm3/m64
1868-
/// VFMSUBSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1869-
/// </summary>
1870-
public static Vector128<double> MultiplySubtractScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) { throw new PlatformNotSupportedException(); }
1871-
1872-
/// <summary>
1873-
/// __m128 _mm_fmsub_ss (__m128 a, __m128 b, __m128 c)
1874-
/// VFMSUBSS xmm1, xmm2, xmm3/m32
1875-
/// VFMSUBSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1876-
/// </summary>
1877-
public static Vector128<float> MultiplySubtractScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) { throw new PlatformNotSupportedException(); }
1878-
18791655
/// <summary>
18801656
/// __m256i _mm256_permutevar16x16_epi16 (__m256i a, __m256i b)
18811657
/// VPERMW ymm1 {k1}{z}, ymm2, ymm3/m256

‎src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/X86/Avx10v1.cs

-224
Original file line numberDiff line numberDiff line change
@@ -1615,118 +1615,6 @@ internal Avx10v1() { }
16151615
/// </summary>
16161616
public static Vector256<ulong> Min(Vector256<ulong> left, Vector256<ulong> right) => Min(left, right);
16171617

1618-
/// <summary>
1619-
/// __m128 _mm_fmadd_ps (__m128 a, __m128 b, __m128 c)
1620-
/// VFMADDPS xmm1, xmm2, xmm3/m128
1621-
/// VFMADDPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1622-
/// </summary>
1623-
public static Vector128<float> MultiplyAdd(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplyAdd(a, b, c);
1624-
1625-
/// <summary>
1626-
/// __m128d _mm_fmadd_pd (__m128d a, __m128d b, __m128d c)
1627-
/// VFMADDPD xmm1, xmm2, xmm3/m128
1628-
/// VFMADDPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1629-
/// </summary>
1630-
public static Vector128<double> MultiplyAdd(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplyAdd(a, b, c);
1631-
1632-
/// <summary>
1633-
/// __m256 _mm256_fmadd_ps (__m256 a, __m256 b, __m256 c)
1634-
/// VFMADDPS ymm1, ymm2, ymm3/m256
1635-
/// VFMADDPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1636-
/// </summary>
1637-
public static Vector256<float> MultiplyAdd(Vector256<float> a, Vector256<float> b, Vector256<float> c) => MultiplyAdd(a, b, c);
1638-
1639-
/// <summary>
1640-
/// __m256d _mm256_fmadd_pd (__m256d a, __m256d b, __m256d c)
1641-
/// VFMADDPD ymm1, ymm2, ymm3/m256
1642-
/// VFMADDPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1643-
/// </summary>
1644-
public static Vector256<double> MultiplyAdd(Vector256<double> a, Vector256<double> b, Vector256<double> c) => MultiplyAdd(a, b, c);
1645-
1646-
/// <summary>
1647-
/// __m128 _mm_fnmadd_ps (__m128 a, __m128 b, __m128 c)
1648-
/// VFNMADDPS xmm1, xmm2, xmm3/m128
1649-
/// VFNMADDPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1650-
/// </summary>
1651-
public static Vector128<float> MultiplyAddNegated(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplyAddNegated(a, b, c);
1652-
1653-
/// <summary>
1654-
/// __m128d _mm_fnmadd_pd (__m128d a, __m128d b, __m128d c)
1655-
/// VFNMADDPD xmm1, xmm2, xmm3/m128
1656-
/// VFNMADDPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1657-
/// </summary>
1658-
public static Vector128<double> MultiplyAddNegated(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplyAddNegated(a, b, c);
1659-
1660-
/// <summary>
1661-
/// __m256 _mm256_fnmadd_ps (__m256 a, __m256 b, __m256 c)
1662-
/// VFNMADDPS ymm1, ymm2, ymm3/m256
1663-
/// VFNMADDPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1664-
/// </summary>
1665-
public static Vector256<float> MultiplyAddNegated(Vector256<float> a, Vector256<float> b, Vector256<float> c) => MultiplyAddNegated(a, b, c);
1666-
1667-
/// <summary>
1668-
/// __m256d _mm256_fnmadd_pd (__m256d a, __m256d b, __m256d c)
1669-
/// VFNMADDPD ymm1, ymm2, ymm3/m256
1670-
/// VFNMADDPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1671-
/// </summary>
1672-
public static Vector256<double> MultiplyAddNegated(Vector256<double> a, Vector256<double> b, Vector256<double> c) => MultiplyAddNegated(a, b, c);
1673-
1674-
/// <summary>
1675-
/// __m128 _mm_fnmadd_ss (__m128 a, __m128 b, __m128 c)
1676-
/// VFNMADDSS xmm1, xmm2, xmm3/m32
1677-
/// VFNMADDSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1678-
/// </summary>
1679-
public static Vector128<float> MultiplyAddNegatedScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplyAddNegatedScalar(a, b, c);
1680-
1681-
/// <summary>
1682-
/// __m128d _mm_fnmadd_sd (__m128d a, __m128d b, __m128d c)
1683-
/// VFNMADDSD xmm1, xmm2, xmm3/m64
1684-
/// VFNMADDSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1685-
/// </summary>
1686-
public static Vector128<double> MultiplyAddNegatedScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplyAddNegatedScalar(a, b, c);
1687-
1688-
/// <summary>
1689-
/// __m128 _mm_fmadd_ss (__m128 a, __m128 b, __m128 c)
1690-
/// VFMADDSS xmm1, xmm2, xmm3/m32
1691-
/// VFMADDSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1692-
/// </summary>
1693-
public static Vector128<float> MultiplyAddScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplyAddScalar(a, b, c);
1694-
1695-
/// <summary>
1696-
/// __m128d _mm_fmadd_sd (__m128d a, __m128d b, __m128d c)
1697-
/// VFMADDSD xmm1, xmm2, xmm3/m64
1698-
/// VFMADDSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1699-
/// </summary>
1700-
public static Vector128<double> MultiplyAddScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplyAddScalar(a, b, c);
1701-
1702-
/// <summary>
1703-
/// __m128 _mm_fmaddsub_ps (__m128 a, __m128 b, __m128 c)
1704-
/// VFMADDSUBPS xmm1, xmm2, xmm3/m128
1705-
/// VFMADDSUBPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1706-
/// </summary>
1707-
public static Vector128<float> MultiplyAddSubtract(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplyAddSubtract(a, b, c);
1708-
1709-
/// <summary>
1710-
/// __m128d _mm_fmaddsub_pd (__m128d a, __m128d b, __m128d c)
1711-
/// VFMADDSUBPD xmm1, xmm2, xmm3/m128
1712-
/// VFMADDSUBPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1713-
/// </summary>
1714-
public static Vector128<double> MultiplyAddSubtract(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplyAddSubtract(a, b, c);
1715-
1716-
/// <summary>
1717-
/// __m256 _mm256_fmaddsub_ps (__m256 a, __m256 b, __m256 c)
1718-
/// VFMADDSUBPS ymm1, ymm2, ymm3/m256
1719-
/// VFMADDSUBPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1720-
/// </summary>
1721-
public static Vector256<float> MultiplyAddSubtract(Vector256<float> a, Vector256<float> b, Vector256<float> c) => MultiplyAddSubtract(a, b, c);
1722-
1723-
/// <summary>
1724-
/// __m256d _mm256_fmaddsub_pd (__m256d a, __m256d b, __m256d c)
1725-
/// VFMADDSUBPD ymm1, ymm2, ymm3/m256
1726-
/// VFMADDSUBPD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1727-
/// </summary>
1728-
public static Vector256<double> MultiplyAddSubtract(Vector256<double> a, Vector256<double> b, Vector256<double> c) => MultiplyAddSubtract(a, b, c);
1729-
17301618
/// <summary>
17311619
/// __m128i _mm_mullo_epi64 (__m128i a, __m128i b)
17321620
/// VPMULLQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
@@ -1763,118 +1651,6 @@ internal Avx10v1() { }
17631651
/// </summary>
17641652
public static Vector128<float> MultiplyScalar(Vector128<float> left, Vector128<float> right, [ConstantExpected(Max = FloatRoundingMode.ToZero)] FloatRoundingMode mode) => MultiplyScalar(left, right, mode);
17651653

1766-
/// <summary>
1767-
/// __m128 _mm_fmsub_ps (__m128 a, __m128 b, __m128 c)
1768-
/// VFMSUBPS xmm1, xmm2, xmm3/m128
1769-
/// VFMSUBPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1770-
/// </summary>
1771-
public static Vector128<float> MultiplySubtract(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplySubtract(a, b, c);
1772-
1773-
/// <summary>
1774-
/// __m128d _mm_fmsub_pd (__m128d a, __m128d b, __m128d c)
1775-
/// VFMSUBPD xmm1, xmm2, xmm3/m128
1776-
/// VFMSUBPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1777-
/// </summary>
1778-
public static Vector128<double> MultiplySubtract(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplySubtract(a, b, c);
1779-
1780-
/// <summary>
1781-
/// __m256 _mm256_fmsub_ps (__m256 a, __m256 b, __m256 c)
1782-
/// VFMSUBPS ymm1, ymm2, ymm3/m256
1783-
/// VFMSUBPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1784-
/// </summary>
1785-
public static Vector256<float> MultiplySubtract(Vector256<float> a, Vector256<float> b, Vector256<float> c) => MultiplySubtract(a, b, c);
1786-
1787-
/// <summary>
1788-
/// __m256d _mm256_fmsub_pd (__m256d a, __m256d b, __m256d c)
1789-
/// VFMSUBPD ymm1, ymm2, ymm3/m256
1790-
/// VFMSUBPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1791-
/// </summary>
1792-
public static Vector256<double> MultiplySubtract(Vector256<double> a, Vector256<double> b, Vector256<double> c) => MultiplySubtract(a, b, c);
1793-
1794-
/// <summary>
1795-
/// __m128 _mm_fmsubadd_ps (__m128 a, __m128 b, __m128 c)
1796-
/// VFMSUBADDPS xmm1, xmm2, xmm3/m128
1797-
/// VFMSUBADDPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1798-
/// </summary>
1799-
public static Vector128<float> MultiplySubtractAdd(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplySubtractAdd(a, b, c);
1800-
1801-
/// <summary>
1802-
/// __m128d _mm_fmsubadd_pd (__m128d a, __m128d b, __m128d c)
1803-
/// VFMSUBADDPD xmm1, xmm2, xmm3/m128
1804-
/// VFMSUBADDPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1805-
/// </summary>
1806-
public static Vector128<double> MultiplySubtractAdd(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplySubtractAdd(a, b, c);
1807-
1808-
/// <summary>
1809-
/// __m256 _mm256_fmsubadd_ps (__m256 a, __m256 b, __m256 c)
1810-
/// VFMSUBADDPS ymm1, ymm2, ymm3/m256
1811-
/// VFMSUBADDPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1812-
/// </summary>
1813-
public static Vector256<float> MultiplySubtractAdd(Vector256<float> a, Vector256<float> b, Vector256<float> c) => MultiplySubtractAdd(a, b, c);
1814-
1815-
/// <summary>
1816-
/// __m256d _mm256_fmsubadd_pd (__m256d a, __m256d b, __m256d c)
1817-
/// VFMSUBADDPD ymm1, ymm2, ymm3/m256
1818-
/// VFMSUBADDPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1819-
/// </summary>
1820-
public static Vector256<double> MultiplySubtractAdd(Vector256<double> a, Vector256<double> b, Vector256<double> c) => MultiplySubtractAdd(a, b, c);
1821-
1822-
/// <summary>
1823-
/// __m128 _mm_fnmsub_ps (__m128 a, __m128 b, __m128 c)
1824-
/// VFNMSUBPS xmm1, xmm2, xmm3/m128
1825-
/// VFNMSUBPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst
1826-
/// </summary>
1827-
public static Vector128<float> MultiplySubtractNegated(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplySubtractNegated(a, b, c);
1828-
1829-
/// <summary>
1830-
/// __m128d _mm_fnmsub_pd (__m128d a, __m128d b, __m128d c)
1831-
/// VFNMSUBPD xmm1, xmm2, xmm3/m128
1832-
/// VFNMSUBPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst
1833-
/// </summary>
1834-
public static Vector128<double> MultiplySubtractNegated(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplySubtractNegated(a, b, c);
1835-
1836-
/// <summary>
1837-
/// __m256 _mm256_fnmsub_ps (__m256 a, __m256 b, __m256 c)
1838-
/// VFNMSUBPS ymm1, ymm2, ymm3/m256
1839-
/// VFNMSUBPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst
1840-
/// </summary>
1841-
public static Vector256<float> MultiplySubtractNegated(Vector256<float> a, Vector256<float> b, Vector256<float> c) => MultiplySubtractNegated(a, b, c);
1842-
1843-
/// <summary>
1844-
/// __m256d _mm256_fnmsub_pd (__m256d a, __m256d b, __m256d c)
1845-
/// VFNMSUBPD ymm1, ymm2, ymm3/m256
1846-
/// VFNMSUBPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst
1847-
/// </summary>
1848-
public static Vector256<double> MultiplySubtractNegated(Vector256<double> a, Vector256<double> b, Vector256<double> c) => MultiplySubtractNegated(a, b, c);
1849-
1850-
/// <summary>
1851-
/// __m128 _mm_fnmsub_ss (__m128 a, __m128 b, __m128 c)
1852-
/// VFNMSUBSS xmm1, xmm2, xmm3/m32
1853-
/// VFNMSUBSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1854-
/// </summary>
1855-
public static Vector128<float> MultiplySubtractNegatedScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplySubtractNegatedScalar(a, b, c);
1856-
1857-
/// <summary>
1858-
/// __m128d _mm_fnmsub_sd (__m128d a, __m128d b, __m128d c)
1859-
/// VFNMSUBSD xmm1, xmm2, xmm3/m64
1860-
/// VFNMSUBSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1861-
/// </summary>
1862-
public static Vector128<double> MultiplySubtractNegatedScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplySubtractNegatedScalar(a, b, c);
1863-
1864-
/// <summary>
1865-
/// __m128d _mm_fmsub_sd (__m128d a, __m128d b, __m128d c)
1866-
/// VFMSUBSD xmm1, xmm2, xmm3/m64
1867-
/// VFMSUBSD xmm1 {k1}{z}, xmm2, xmm3/m64{er}
1868-
/// </summary>
1869-
public static Vector128<double> MultiplySubtractScalar(Vector128<double> a, Vector128<double> b, Vector128<double> c) => MultiplySubtractScalar(a, b, c);
1870-
1871-
/// <summary>
1872-
/// __m128 _mm_fmsub_ss (__m128 a, __m128 b, __m128 c)
1873-
/// VFMSUBSS xmm1, xmm2, xmm3/m32
1874-
/// VFMSUBSS xmm1 {k1}{z}, xmm2, xmm3/m32{er}
1875-
/// </summary>
1876-
public static Vector128<float> MultiplySubtractScalar(Vector128<float> a, Vector128<float> b, Vector128<float> c) => MultiplySubtractScalar(a, b, c);
1877-
18781654
/// <summary>
18791655
/// __m256i _mm256_permutevar16x16_epi16 (__m256i a, __m256i b)
18801656
/// VPERMW ymm1 {k1}{z}, ymm2, ymm3/m256

‎src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs

+10-41
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)
Please sign in to comment.