@@ -77,40 +77,42 @@ enum CORINFO_InstructionSet
7777 InstructionSet_AVX512VBMI=32 ,
7878 InstructionSet_AVX512VBMI_VL=33 ,
7979 InstructionSet_AVX10v1=34 ,
80- InstructionSet_VectorT128=35 ,
81- InstructionSet_VectorT256=36 ,
82- InstructionSet_VectorT512=37 ,
83- InstructionSet_X86Base_X64=38 ,
84- InstructionSet_SSE_X64=39 ,
85- InstructionSet_SSE2_X64=40 ,
86- InstructionSet_SSE3_X64=41 ,
87- InstructionSet_SSSE3_X64=42 ,
88- InstructionSet_SSE41_X64=43 ,
89- InstructionSet_SSE42_X64=44 ,
90- InstructionSet_AVX_X64=45 ,
91- InstructionSet_AVX2_X64=46 ,
92- InstructionSet_AES_X64=47 ,
93- InstructionSet_BMI1_X64=48 ,
94- InstructionSet_BMI2_X64=49 ,
95- InstructionSet_FMA_X64=50 ,
96- InstructionSet_LZCNT_X64=51 ,
97- InstructionSet_PCLMULQDQ_X64=52 ,
98- InstructionSet_POPCNT_X64=53 ,
99- InstructionSet_AVXVNNI_X64=54 ,
100- InstructionSet_MOVBE_X64=55 ,
101- InstructionSet_X86Serialize_X64=56 ,
102- InstructionSet_EVEX_X64=57 ,
103- InstructionSet_AVX512F_X64=58 ,
104- InstructionSet_AVX512F_VL_X64=59 ,
105- InstructionSet_AVX512BW_X64=60 ,
106- InstructionSet_AVX512BW_VL_X64=61 ,
107- InstructionSet_AVX512CD_X64=62 ,
108- InstructionSet_AVX512CD_VL_X64=63 ,
109- InstructionSet_AVX512DQ_X64=64 ,
110- InstructionSet_AVX512DQ_VL_X64=65 ,
111- InstructionSet_AVX512VBMI_X64=66 ,
112- InstructionSet_AVX512VBMI_VL_X64=67 ,
113- InstructionSet_AVX10v1_X64=68 ,
80+ InstructionSet_AVX10v1_V512=35 ,
81+ InstructionSet_VectorT128=36 ,
82+ InstructionSet_VectorT256=37 ,
83+ InstructionSet_VectorT512=38 ,
84+ InstructionSet_X86Base_X64=39 ,
85+ InstructionSet_SSE_X64=40 ,
86+ InstructionSet_SSE2_X64=41 ,
87+ InstructionSet_SSE3_X64=42 ,
88+ InstructionSet_SSSE3_X64=43 ,
89+ InstructionSet_SSE41_X64=44 ,
90+ InstructionSet_SSE42_X64=45 ,
91+ InstructionSet_AVX_X64=46 ,
92+ InstructionSet_AVX2_X64=47 ,
93+ InstructionSet_AES_X64=48 ,
94+ InstructionSet_BMI1_X64=49 ,
95+ InstructionSet_BMI2_X64=50 ,
96+ InstructionSet_FMA_X64=51 ,
97+ InstructionSet_LZCNT_X64=52 ,
98+ InstructionSet_PCLMULQDQ_X64=53 ,
99+ InstructionSet_POPCNT_X64=54 ,
100+ InstructionSet_AVXVNNI_X64=55 ,
101+ InstructionSet_MOVBE_X64=56 ,
102+ InstructionSet_X86Serialize_X64=57 ,
103+ InstructionSet_EVEX_X64=58 ,
104+ InstructionSet_AVX512F_X64=59 ,
105+ InstructionSet_AVX512F_VL_X64=60 ,
106+ InstructionSet_AVX512BW_X64=61 ,
107+ InstructionSet_AVX512BW_VL_X64=62 ,
108+ InstructionSet_AVX512CD_X64=63 ,
109+ InstructionSet_AVX512CD_VL_X64=64 ,
110+ InstructionSet_AVX512DQ_X64=65 ,
111+ InstructionSet_AVX512DQ_VL_X64=66 ,
112+ InstructionSet_AVX512VBMI_X64=67 ,
113+ InstructionSet_AVX512VBMI_VL_X64=68 ,
114+ InstructionSet_AVX10v1_X64=69 ,
115+ InstructionSet_AVX10v1_V512_X64=70 ,
114116#endif // TARGET_AMD64
115117#ifdef TARGET_X86
116118 InstructionSet_X86Base=1 ,
@@ -147,40 +149,42 @@ enum CORINFO_InstructionSet
147149 InstructionSet_AVX512VBMI=32 ,
148150 InstructionSet_AVX512VBMI_VL=33 ,
149151 InstructionSet_AVX10v1=34 ,
150- InstructionSet_VectorT128=35 ,
151- InstructionSet_VectorT256=36 ,
152- InstructionSet_VectorT512=37 ,
153- InstructionSet_X86Base_X64=38 ,
154- InstructionSet_SSE_X64=39 ,
155- InstructionSet_SSE2_X64=40 ,
156- InstructionSet_SSE3_X64=41 ,
157- InstructionSet_SSSE3_X64=42 ,
158- InstructionSet_SSE41_X64=43 ,
159- InstructionSet_SSE42_X64=44 ,
160- InstructionSet_AVX_X64=45 ,
161- InstructionSet_AVX2_X64=46 ,
162- InstructionSet_AES_X64=47 ,
163- InstructionSet_BMI1_X64=48 ,
164- InstructionSet_BMI2_X64=49 ,
165- InstructionSet_FMA_X64=50 ,
166- InstructionSet_LZCNT_X64=51 ,
167- InstructionSet_PCLMULQDQ_X64=52 ,
168- InstructionSet_POPCNT_X64=53 ,
169- InstructionSet_AVXVNNI_X64=54 ,
170- InstructionSet_MOVBE_X64=55 ,
171- InstructionSet_X86Serialize_X64=56 ,
172- InstructionSet_EVEX_X64=57 ,
173- InstructionSet_AVX512F_X64=58 ,
174- InstructionSet_AVX512F_VL_X64=59 ,
175- InstructionSet_AVX512BW_X64=60 ,
176- InstructionSet_AVX512BW_VL_X64=61 ,
177- InstructionSet_AVX512CD_X64=62 ,
178- InstructionSet_AVX512CD_VL_X64=63 ,
179- InstructionSet_AVX512DQ_X64=64 ,
180- InstructionSet_AVX512DQ_VL_X64=65 ,
181- InstructionSet_AVX512VBMI_X64=66 ,
182- InstructionSet_AVX512VBMI_VL_X64=67 ,
183- InstructionSet_AVX10v1_X64=68 ,
152+ InstructionSet_AVX10v1_V512=35 ,
153+ InstructionSet_VectorT128=36 ,
154+ InstructionSet_VectorT256=37 ,
155+ InstructionSet_VectorT512=38 ,
156+ InstructionSet_X86Base_X64=39 ,
157+ InstructionSet_SSE_X64=40 ,
158+ InstructionSet_SSE2_X64=41 ,
159+ InstructionSet_SSE3_X64=42 ,
160+ InstructionSet_SSSE3_X64=43 ,
161+ InstructionSet_SSE41_X64=44 ,
162+ InstructionSet_SSE42_X64=45 ,
163+ InstructionSet_AVX_X64=46 ,
164+ InstructionSet_AVX2_X64=47 ,
165+ InstructionSet_AES_X64=48 ,
166+ InstructionSet_BMI1_X64=49 ,
167+ InstructionSet_BMI2_X64=50 ,
168+ InstructionSet_FMA_X64=51 ,
169+ InstructionSet_LZCNT_X64=52 ,
170+ InstructionSet_PCLMULQDQ_X64=53 ,
171+ InstructionSet_POPCNT_X64=54 ,
172+ InstructionSet_AVXVNNI_X64=55 ,
173+ InstructionSet_MOVBE_X64=56 ,
174+ InstructionSet_X86Serialize_X64=57 ,
175+ InstructionSet_EVEX_X64=58 ,
176+ InstructionSet_AVX512F_X64=59 ,
177+ InstructionSet_AVX512F_VL_X64=60 ,
178+ InstructionSet_AVX512BW_X64=61 ,
179+ InstructionSet_AVX512BW_VL_X64=62 ,
180+ InstructionSet_AVX512CD_X64=63 ,
181+ InstructionSet_AVX512CD_VL_X64=64 ,
182+ InstructionSet_AVX512DQ_X64=65 ,
183+ InstructionSet_AVX512DQ_VL_X64=66 ,
184+ InstructionSet_AVX512VBMI_X64=67 ,
185+ InstructionSet_AVX512VBMI_VL_X64=68 ,
186+ InstructionSet_AVX10v1_X64=69 ,
187+ InstructionSet_AVX10v1_V512_X64=70 ,
184188#endif // TARGET_X86
185189
186190};
@@ -358,6 +362,8 @@ struct CORINFO_InstructionSetFlags
358362 AddInstructionSet (InstructionSet_AVX512VBMI_VL_X64);
359363 if (HasInstructionSet (InstructionSet_AVX10v1))
360364 AddInstructionSet (InstructionSet_AVX10v1_X64);
365+ if (HasInstructionSet (InstructionSet_AVX10v1_V512))
366+ AddInstructionSet (InstructionSet_AVX10v1_V512_X64);
361367#endif // TARGET_AMD64
362368#ifdef TARGET_X86
363369#endif // TARGET_X86
@@ -562,6 +568,10 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
562568 resultflags.RemoveInstructionSet (InstructionSet_AVX10v1);
563569 if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_X64) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1))
564570 resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_X64);
571+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512_X64))
572+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
573+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512_X64) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512))
574+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512_X64);
565575 if (resultflags.HasInstructionSet (InstructionSet_SSE) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
566576 resultflags.RemoveInstructionSet (InstructionSet_SSE);
567577 if (resultflags.HasInstructionSet (InstructionSet_SSE2) && !resultflags.HasInstructionSet (InstructionSet_SSE))
@@ -638,6 +648,30 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
638648 resultflags.RemoveInstructionSet (InstructionSet_AVX512VBMI_VL);
639649 if (resultflags.HasInstructionSet (InstructionSet_AVX10v1) && !resultflags.HasInstructionSet (InstructionSet_EVEX))
640650 resultflags.RemoveInstructionSet (InstructionSet_AVX10v1);
651+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_EVEX))
652+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
653+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1))
654+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
655+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
656+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
657+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F_VL))
658+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
659+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512CD))
660+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
661+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512CD_VL))
662+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
663+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW))
664+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
665+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW_VL))
666+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
667+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512DQ))
668+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
669+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512DQ_VL))
670+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
671+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512VBMI))
672+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
673+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512VBMI_VL))
674+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
641675 if (resultflags.HasInstructionSet (InstructionSet_VectorT128) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
642676 resultflags.RemoveInstructionSet (InstructionSet_VectorT128);
643677 if (resultflags.HasInstructionSet (InstructionSet_VectorT256) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
@@ -728,6 +762,30 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
728762 resultflags.RemoveInstructionSet (InstructionSet_AVX512VBMI_VL);
729763 if (resultflags.HasInstructionSet (InstructionSet_AVX10v1) && !resultflags.HasInstructionSet (InstructionSet_EVEX))
730764 resultflags.RemoveInstructionSet (InstructionSet_AVX10v1);
765+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_EVEX))
766+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
767+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1))
768+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
769+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
770+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
771+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F_VL))
772+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
773+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512CD))
774+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
775+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512CD_VL))
776+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
777+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW))
778+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
779+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW_VL))
780+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
781+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512DQ))
782+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
783+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512DQ_VL))
784+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
785+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512VBMI))
786+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
787+ if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512VBMI_VL))
788+ resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
731789 if (resultflags.HasInstructionSet (InstructionSet_VectorT128) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
732790 resultflags.RemoveInstructionSet (InstructionSet_VectorT128);
733791 if (resultflags.HasInstructionSet (InstructionSet_VectorT256) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
@@ -938,6 +996,10 @@ inline const char *InstructionSetToString(CORINFO_InstructionSet instructionSet)
938996 return " AVX10v1" ;
939997 case InstructionSet_AVX10v1_X64 :
940998 return " AVX10v1_X64" ;
999+ case InstructionSet_AVX10v1_V512 :
1000+ return " AVX10v1_V512" ;
1001+ case InstructionSet_AVX10v1_V512_X64 :
1002+ return " AVX10v1_V512_X64" ;
9411003 case InstructionSet_VectorT128 :
9421004 return " VectorT128" ;
9431005 case InstructionSet_VectorT256 :
@@ -1014,6 +1076,8 @@ inline const char *InstructionSetToString(CORINFO_InstructionSet instructionSet)
10141076 return " AVX512VBMI_VL" ;
10151077 case InstructionSet_AVX10v1 :
10161078 return " AVX10v1" ;
1079+ case InstructionSet_AVX10v1_V512 :
1080+ return " AVX10v1_V512" ;
10171081 case InstructionSet_VectorT128 :
10181082 return " VectorT128" ;
10191083 case InstructionSet_VectorT256 :
@@ -1086,6 +1150,7 @@ inline CORINFO_InstructionSet InstructionSetFromR2RInstructionSet(ReadyToRunInst
10861150 case READYTORUN_INSTRUCTION_Avx512Vbmi: return InstructionSet_AVX512VBMI;
10871151 case READYTORUN_INSTRUCTION_Avx512Vbmi_VL: return InstructionSet_AVX512VBMI_VL;
10881152 case READYTORUN_INSTRUCTION_Avx10v1: return InstructionSet_AVX10v1;
1153+ case READYTORUN_INSTRUCTION_Avx10v1_V512: return InstructionSet_AVX10v1_V512;
10891154 case READYTORUN_INSTRUCTION_VectorT128: return InstructionSet_VectorT128;
10901155 case READYTORUN_INSTRUCTION_VectorT256: return InstructionSet_VectorT256;
10911156 case READYTORUN_INSTRUCTION_VectorT512: return InstructionSet_VectorT512;
@@ -1122,6 +1187,7 @@ inline CORINFO_InstructionSet InstructionSetFromR2RInstructionSet(ReadyToRunInst
11221187 case READYTORUN_INSTRUCTION_Avx512Vbmi: return InstructionSet_AVX512VBMI;
11231188 case READYTORUN_INSTRUCTION_Avx512Vbmi_VL: return InstructionSet_AVX512VBMI_VL;
11241189 case READYTORUN_INSTRUCTION_Avx10v1: return InstructionSet_AVX10v1;
1190+ case READYTORUN_INSTRUCTION_Avx10v1_V512: return InstructionSet_AVX10v1_V512;
11251191 case READYTORUN_INSTRUCTION_VectorT128: return InstructionSet_VectorT128;
11261192 case READYTORUN_INSTRUCTION_VectorT256: return InstructionSet_VectorT256;
11271193 case READYTORUN_INSTRUCTION_VectorT512: return InstructionSet_VectorT512;
0 commit comments