@@ -94,34 +94,40 @@ enum CORINFO_InstructionSet
94
94
InstructionSet_GFNI=44 ,
95
95
InstructionSet_GFNI_V256=45 ,
96
96
InstructionSet_GFNI_V512=46 ,
97
- InstructionSet_X86Base_X64=47 ,
98
- InstructionSet_SSE_X64=48 ,
99
- InstructionSet_SSE2_X64=49 ,
100
- InstructionSet_SSE3_X64=50 ,
101
- InstructionSet_SSSE3_X64=51 ,
102
- InstructionSet_SSE41_X64=52 ,
103
- InstructionSet_SSE42_X64=53 ,
104
- InstructionSet_AVX_X64=54 ,
105
- InstructionSet_AVX2_X64=55 ,
106
- InstructionSet_AES_X64=56 ,
107
- InstructionSet_BMI1_X64=57 ,
108
- InstructionSet_BMI2_X64=58 ,
109
- InstructionSet_FMA_X64=59 ,
110
- InstructionSet_LZCNT_X64=60 ,
111
- InstructionSet_PCLMULQDQ_X64=61 ,
112
- InstructionSet_POPCNT_X64=62 ,
113
- InstructionSet_AVXVNNI_X64=63 ,
114
- InstructionSet_X86Serialize_X64=64 ,
115
- InstructionSet_AVX512F_X64=65 ,
116
- InstructionSet_AVX512BW_X64=66 ,
117
- InstructionSet_AVX512CD_X64=67 ,
118
- InstructionSet_AVX512DQ_X64=68 ,
119
- InstructionSet_AVX512VBMI_X64=69 ,
120
- InstructionSet_AVX10v1_X64=70 ,
121
- InstructionSet_AVX10v1_V512_X64=71 ,
122
- InstructionSet_AVX10v2_X64=72 ,
123
- InstructionSet_AVX10v2_V512_X64=73 ,
124
- InstructionSet_GFNI_X64=74 ,
97
+ InstructionSet_AVXVNNIINT8=47 ,
98
+ InstructionSet_AVXVNNIINT8_V512=48 ,
99
+ InstructionSet_AVXVNNIINT16=49 ,
100
+ InstructionSet_AVXVNNIINT16_V512=50 ,
101
+ InstructionSet_X86Base_X64=51 ,
102
+ InstructionSet_SSE_X64=52 ,
103
+ InstructionSet_SSE2_X64=53 ,
104
+ InstructionSet_SSE3_X64=54 ,
105
+ InstructionSet_SSSE3_X64=55 ,
106
+ InstructionSet_SSE41_X64=56 ,
107
+ InstructionSet_SSE42_X64=57 ,
108
+ InstructionSet_AVX_X64=58 ,
109
+ InstructionSet_AVX2_X64=59 ,
110
+ InstructionSet_AES_X64=60 ,
111
+ InstructionSet_BMI1_X64=61 ,
112
+ InstructionSet_BMI2_X64=62 ,
113
+ InstructionSet_FMA_X64=63 ,
114
+ InstructionSet_LZCNT_X64=64 ,
115
+ InstructionSet_PCLMULQDQ_X64=65 ,
116
+ InstructionSet_POPCNT_X64=66 ,
117
+ InstructionSet_AVXVNNI_X64=67 ,
118
+ InstructionSet_X86Serialize_X64=68 ,
119
+ InstructionSet_AVX512F_X64=69 ,
120
+ InstructionSet_AVX512BW_X64=70 ,
121
+ InstructionSet_AVX512CD_X64=71 ,
122
+ InstructionSet_AVX512DQ_X64=72 ,
123
+ InstructionSet_AVX512VBMI_X64=73 ,
124
+ InstructionSet_AVX10v1_X64=74 ,
125
+ InstructionSet_AVX10v1_V512_X64=75 ,
126
+ InstructionSet_AVX10v2_X64=76 ,
127
+ InstructionSet_AVX10v2_V512_X64=77 ,
128
+ InstructionSet_GFNI_X64=78 ,
129
+ InstructionSet_AVXVNNIINT8_X64=79 ,
130
+ InstructionSet_AVXVNNIINT16_X64=80 ,
125
131
#endif // TARGET_AMD64
126
132
#ifdef TARGET_X86
127
133
InstructionSet_X86Base=1 ,
@@ -170,34 +176,40 @@ enum CORINFO_InstructionSet
170
176
InstructionSet_GFNI=44 ,
171
177
InstructionSet_GFNI_V256=45 ,
172
178
InstructionSet_GFNI_V512=46 ,
173
- InstructionSet_X86Base_X64=47 ,
174
- InstructionSet_SSE_X64=48 ,
175
- InstructionSet_SSE2_X64=49 ,
176
- InstructionSet_SSE3_X64=50 ,
177
- InstructionSet_SSSE3_X64=51 ,
178
- InstructionSet_SSE41_X64=52 ,
179
- InstructionSet_SSE42_X64=53 ,
180
- InstructionSet_AVX_X64=54 ,
181
- InstructionSet_AVX2_X64=55 ,
182
- InstructionSet_AES_X64=56 ,
183
- InstructionSet_BMI1_X64=57 ,
184
- InstructionSet_BMI2_X64=58 ,
185
- InstructionSet_FMA_X64=59 ,
186
- InstructionSet_LZCNT_X64=60 ,
187
- InstructionSet_PCLMULQDQ_X64=61 ,
188
- InstructionSet_POPCNT_X64=62 ,
189
- InstructionSet_AVXVNNI_X64=63 ,
190
- InstructionSet_X86Serialize_X64=64 ,
191
- InstructionSet_AVX512F_X64=65 ,
192
- InstructionSet_AVX512BW_X64=66 ,
193
- InstructionSet_AVX512CD_X64=67 ,
194
- InstructionSet_AVX512DQ_X64=68 ,
195
- InstructionSet_AVX512VBMI_X64=69 ,
196
- InstructionSet_AVX10v1_X64=70 ,
197
- InstructionSet_AVX10v1_V512_X64=71 ,
198
- InstructionSet_AVX10v2_X64=72 ,
199
- InstructionSet_AVX10v2_V512_X64=73 ,
200
- InstructionSet_GFNI_X64=74 ,
179
+ InstructionSet_AVXVNNIINT8=47 ,
180
+ InstructionSet_AVXVNNIINT8_V512=48 ,
181
+ InstructionSet_AVXVNNIINT16=49 ,
182
+ InstructionSet_AVXVNNIINT16_V512=50 ,
183
+ InstructionSet_X86Base_X64=51 ,
184
+ InstructionSet_SSE_X64=52 ,
185
+ InstructionSet_SSE2_X64=53 ,
186
+ InstructionSet_SSE3_X64=54 ,
187
+ InstructionSet_SSSE3_X64=55 ,
188
+ InstructionSet_SSE41_X64=56 ,
189
+ InstructionSet_SSE42_X64=57 ,
190
+ InstructionSet_AVX_X64=58 ,
191
+ InstructionSet_AVX2_X64=59 ,
192
+ InstructionSet_AES_X64=60 ,
193
+ InstructionSet_BMI1_X64=61 ,
194
+ InstructionSet_BMI2_X64=62 ,
195
+ InstructionSet_FMA_X64=63 ,
196
+ InstructionSet_LZCNT_X64=64 ,
197
+ InstructionSet_PCLMULQDQ_X64=65 ,
198
+ InstructionSet_POPCNT_X64=66 ,
199
+ InstructionSet_AVXVNNI_X64=67 ,
200
+ InstructionSet_X86Serialize_X64=68 ,
201
+ InstructionSet_AVX512F_X64=69 ,
202
+ InstructionSet_AVX512BW_X64=70 ,
203
+ InstructionSet_AVX512CD_X64=71 ,
204
+ InstructionSet_AVX512DQ_X64=72 ,
205
+ InstructionSet_AVX512VBMI_X64=73 ,
206
+ InstructionSet_AVX10v1_X64=74 ,
207
+ InstructionSet_AVX10v1_V512_X64=75 ,
208
+ InstructionSet_AVX10v2_X64=76 ,
209
+ InstructionSet_AVX10v2_V512_X64=77 ,
210
+ InstructionSet_GFNI_X64=78 ,
211
+ InstructionSet_AVXVNNIINT8_X64=79 ,
212
+ InstructionSet_AVXVNNIINT16_X64=80 ,
201
213
#endif // TARGET_X86
202
214
203
215
};
@@ -371,6 +383,10 @@ struct CORINFO_InstructionSetFlags
371
383
AddInstructionSet (InstructionSet_AVX10v2_V512_X64);
372
384
if (HasInstructionSet (InstructionSet_GFNI))
373
385
AddInstructionSet (InstructionSet_GFNI_X64);
386
+ if (HasInstructionSet (InstructionSet_AVXVNNIINT8))
387
+ AddInstructionSet (InstructionSet_AVXVNNIINT8_X64);
388
+ if (HasInstructionSet (InstructionSet_AVXVNNIINT16))
389
+ AddInstructionSet (InstructionSet_AVXVNNIINT16_X64);
374
390
#endif // TARGET_AMD64
375
391
#ifdef TARGET_X86
376
392
#endif // TARGET_X86
@@ -569,6 +585,14 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
569
585
resultflags.RemoveInstructionSet (InstructionSet_GFNI);
570
586
if (resultflags.HasInstructionSet (InstructionSet_GFNI_X64) && !resultflags.HasInstructionSet (InstructionSet_GFNI))
571
587
resultflags.RemoveInstructionSet (InstructionSet_GFNI_X64);
588
+ if (resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8_X64))
589
+ resultflags.RemoveInstructionSet (InstructionSet_AVXVNNIINT8);
590
+ if (resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8_X64) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8))
591
+ resultflags.RemoveInstructionSet (InstructionSet_AVXVNNIINT8_X64);
592
+ if (resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16_X64))
593
+ resultflags.RemoveInstructionSet (InstructionSet_AVXVNNIINT16);
594
+ if (resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16_X64) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16))
595
+ resultflags.RemoveInstructionSet (InstructionSet_AVXVNNIINT16_X64);
572
596
if (resultflags.HasInstructionSet (InstructionSet_SSE) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
573
597
resultflags.RemoveInstructionSet (InstructionSet_SSE);
574
598
if (resultflags.HasInstructionSet (InstructionSet_SSE2) && !resultflags.HasInstructionSet (InstructionSet_SSE))
@@ -683,6 +707,14 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
683
707
resultflags.RemoveInstructionSet (InstructionSet_AVX10v2);
684
708
if (resultflags.HasInstructionSet (InstructionSet_AVX10v2_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512))
685
709
resultflags.RemoveInstructionSet (InstructionSet_AVX10v2_V512);
710
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8))
711
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2);
712
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16))
713
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2);
714
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2_V512) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8_V512))
715
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2_V512);
716
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2_V512) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16_V512))
717
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2_V512);
686
718
if (resultflags.HasInstructionSet (InstructionSet_Vector128) && !resultflags.HasInstructionSet (InstructionSet_SSE))
687
719
resultflags.RemoveInstructionSet (InstructionSet_Vector128);
688
720
if (resultflags.HasInstructionSet (InstructionSet_Vector256) && !resultflags.HasInstructionSet (InstructionSet_AVX))
@@ -811,6 +843,14 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
811
843
resultflags.RemoveInstructionSet (InstructionSet_AVX10v2);
812
844
if (resultflags.HasInstructionSet (InstructionSet_AVX10v2_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512))
813
845
resultflags.RemoveInstructionSet (InstructionSet_AVX10v2_V512);
846
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8))
847
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2);
848
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16))
849
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2);
850
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2_V512) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT8_V512))
851
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2_V512);
852
+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v2_V512) && !resultflags.HasInstructionSet (InstructionSet_AVXVNNIINT16_V512))
853
+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v2_V512);
814
854
if (resultflags.HasInstructionSet (InstructionSet_Vector128) && !resultflags.HasInstructionSet (InstructionSet_SSE))
815
855
resultflags.RemoveInstructionSet (InstructionSet_Vector128);
816
856
if (resultflags.HasInstructionSet (InstructionSet_Vector256) && !resultflags.HasInstructionSet (InstructionSet_AVX))
@@ -1047,6 +1087,18 @@ inline const char *InstructionSetToString(CORINFO_InstructionSet instructionSet)
1047
1087
return " GFNI_V256" ;
1048
1088
case InstructionSet_GFNI_V512 :
1049
1089
return " GFNI_V512" ;
1090
+ case InstructionSet_AVXVNNIINT8 :
1091
+ return " AVXVNNIINT8" ;
1092
+ case InstructionSet_AVXVNNIINT8_X64 :
1093
+ return " AVXVNNIINT8_X64" ;
1094
+ case InstructionSet_AVXVNNIINT8_V512 :
1095
+ return " AVXVNNIINT8_V512" ;
1096
+ case InstructionSet_AVXVNNIINT16 :
1097
+ return " AVXVNNIINT16" ;
1098
+ case InstructionSet_AVXVNNIINT16_X64 :
1099
+ return " AVXVNNIINT16_X64" ;
1100
+ case InstructionSet_AVXVNNIINT16_V512 :
1101
+ return " AVXVNNIINT16_V512" ;
1050
1102
#endif // TARGET_AMD64
1051
1103
#ifdef TARGET_X86
1052
1104
case InstructionSet_X86Base :
@@ -1141,6 +1193,14 @@ inline const char *InstructionSetToString(CORINFO_InstructionSet instructionSet)
1141
1193
return " GFNI_V256" ;
1142
1194
case InstructionSet_GFNI_V512 :
1143
1195
return " GFNI_V512" ;
1196
+ case InstructionSet_AVXVNNIINT8 :
1197
+ return " AVXVNNIINT8" ;
1198
+ case InstructionSet_AVXVNNIINT8_V512 :
1199
+ return " AVXVNNIINT8_V512" ;
1200
+ case InstructionSet_AVXVNNIINT16 :
1201
+ return " AVXVNNIINT16" ;
1202
+ case InstructionSet_AVXVNNIINT16_V512 :
1203
+ return " AVXVNNIINT16_V512" ;
1144
1204
#endif // TARGET_X86
1145
1205
1146
1206
default :
@@ -1224,6 +1284,10 @@ inline CORINFO_InstructionSet InstructionSetFromR2RInstructionSet(ReadyToRunInst
1224
1284
case READYTORUN_INSTRUCTION_Gfni: return InstructionSet_GFNI;
1225
1285
case READYTORUN_INSTRUCTION_Gfni_V256: return InstructionSet_GFNI_V256;
1226
1286
case READYTORUN_INSTRUCTION_Gfni_V512: return InstructionSet_GFNI_V512;
1287
+ case READYTORUN_INSTRUCTION_AvxVnniInt8: return InstructionSet_AVXVNNIINT8;
1288
+ case READYTORUN_INSTRUCTION_AvxVnniInt8_V512: return InstructionSet_AVXVNNIINT8_V512;
1289
+ case READYTORUN_INSTRUCTION_AvxVnniInt16: return InstructionSet_AVXVNNIINT16;
1290
+ case READYTORUN_INSTRUCTION_AvxVnniInt16_V512: return InstructionSet_AVXVNNIINT16_V512;
1227
1291
#endif // TARGET_AMD64
1228
1292
#ifdef TARGET_X86
1229
1293
case READYTORUN_INSTRUCTION_X86Base: return InstructionSet_X86Base;
@@ -1269,6 +1333,10 @@ inline CORINFO_InstructionSet InstructionSetFromR2RInstructionSet(ReadyToRunInst
1269
1333
case READYTORUN_INSTRUCTION_Gfni: return InstructionSet_GFNI;
1270
1334
case READYTORUN_INSTRUCTION_Gfni_V256: return InstructionSet_GFNI_V256;
1271
1335
case READYTORUN_INSTRUCTION_Gfni_V512: return InstructionSet_GFNI_V512;
1336
+ case READYTORUN_INSTRUCTION_AvxVnniInt8: return InstructionSet_AVXVNNIINT8;
1337
+ case READYTORUN_INSTRUCTION_AvxVnniInt8_V512: return InstructionSet_AVXVNNIINT8_V512;
1338
+ case READYTORUN_INSTRUCTION_AvxVnniInt16: return InstructionSet_AVXVNNIINT16;
1339
+ case READYTORUN_INSTRUCTION_AvxVnniInt16_V512: return InstructionSet_AVXVNNIINT16_V512;
1272
1340
#endif // TARGET_X86
1273
1341
1274
1342
default :
0 commit comments