@@ -584,12 +584,12 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
584
584
resultflags.RemoveInstructionSet (InstructionSet_SSE41);
585
585
if (resultflags.HasInstructionSet (InstructionSet_SSE42) && !resultflags.HasInstructionSet (InstructionSet_SSE41))
586
586
resultflags.RemoveInstructionSet (InstructionSet_SSE42);
587
+ if (resultflags.HasInstructionSet (InstructionSet_POPCNT) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
588
+ resultflags.RemoveInstructionSet (InstructionSet_POPCNT);
587
589
if (resultflags.HasInstructionSet (InstructionSet_AVX) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
588
590
resultflags.RemoveInstructionSet (InstructionSet_AVX);
589
591
if (resultflags.HasInstructionSet (InstructionSet_AVX2) && !resultflags.HasInstructionSet (InstructionSet_AVX))
590
592
resultflags.RemoveInstructionSet (InstructionSet_AVX2);
591
- if (resultflags.HasInstructionSet (InstructionSet_AES) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
592
- resultflags.RemoveInstructionSet (InstructionSet_AES);
593
593
if (resultflags.HasInstructionSet (InstructionSet_BMI1) && !resultflags.HasInstructionSet (InstructionSet_AVX))
594
594
resultflags.RemoveInstructionSet (InstructionSet_BMI1);
595
595
if (resultflags.HasInstructionSet (InstructionSet_BMI2) && !resultflags.HasInstructionSet (InstructionSet_AVX))
@@ -598,22 +598,8 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
598
598
resultflags.RemoveInstructionSet (InstructionSet_FMA);
599
599
if (resultflags.HasInstructionSet (InstructionSet_LZCNT) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
600
600
resultflags.RemoveInstructionSet (InstructionSet_LZCNT);
601
- if (resultflags.HasInstructionSet (InstructionSet_PCLMULQDQ) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
602
- resultflags.RemoveInstructionSet (InstructionSet_PCLMULQDQ);
603
- if (resultflags.HasInstructionSet (InstructionSet_POPCNT) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
604
- resultflags.RemoveInstructionSet (InstructionSet_POPCNT);
605
- if (resultflags.HasInstructionSet (InstructionSet_Vector128) && !resultflags.HasInstructionSet (InstructionSet_SSE))
606
- resultflags.RemoveInstructionSet (InstructionSet_Vector128);
607
- if (resultflags.HasInstructionSet (InstructionSet_Vector256) && !resultflags.HasInstructionSet (InstructionSet_AVX))
608
- resultflags.RemoveInstructionSet (InstructionSet_Vector256);
609
- if (resultflags.HasInstructionSet (InstructionSet_Vector512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
610
- resultflags.RemoveInstructionSet (InstructionSet_Vector512);
611
- if (resultflags.HasInstructionSet (InstructionSet_AVXVNNI) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
612
- resultflags.RemoveInstructionSet (InstructionSet_AVXVNNI);
613
601
if (resultflags.HasInstructionSet (InstructionSet_MOVBE) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
614
602
resultflags.RemoveInstructionSet (InstructionSet_MOVBE);
615
- if (resultflags.HasInstructionSet (InstructionSet_X86Serialize) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
616
- resultflags.RemoveInstructionSet (InstructionSet_X86Serialize);
617
603
if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
618
604
resultflags.RemoveInstructionSet (InstructionSet_EVEX);
619
605
if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_FMA))
@@ -646,10 +632,14 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
646
632
resultflags.RemoveInstructionSet (InstructionSet_AVX512VBMI_VL);
647
633
if (resultflags.HasInstructionSet (InstructionSet_AVX512VBMI_VL) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW_VL))
648
634
resultflags.RemoveInstructionSet (InstructionSet_AVX512VBMI_VL);
649
- if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
650
- resultflags.RemoveInstructionSet (InstructionSet_EVEX);
651
- if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_FMA))
652
- resultflags.RemoveInstructionSet (InstructionSet_EVEX);
635
+ if (resultflags.HasInstructionSet (InstructionSet_AES) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
636
+ resultflags.RemoveInstructionSet (InstructionSet_AES);
637
+ if (resultflags.HasInstructionSet (InstructionSet_PCLMULQDQ) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
638
+ resultflags.RemoveInstructionSet (InstructionSet_PCLMULQDQ);
639
+ if (resultflags.HasInstructionSet (InstructionSet_AVXVNNI) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
640
+ resultflags.RemoveInstructionSet (InstructionSet_AVXVNNI);
641
+ if (resultflags.HasInstructionSet (InstructionSet_X86Serialize) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
642
+ resultflags.RemoveInstructionSet (InstructionSet_X86Serialize);
653
643
if (resultflags.HasInstructionSet (InstructionSet_AVX10v1) && !resultflags.HasInstructionSet (InstructionSet_EVEX))
654
644
resultflags.RemoveInstructionSet (InstructionSet_AVX10v1);
655
645
if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1))
@@ -674,18 +664,18 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
674
664
resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
675
665
if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512VBMI_VL))
676
666
resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
667
+ if (resultflags.HasInstructionSet (InstructionSet_Vector128) && !resultflags.HasInstructionSet (InstructionSet_SSE))
668
+ resultflags.RemoveInstructionSet (InstructionSet_Vector128);
669
+ if (resultflags.HasInstructionSet (InstructionSet_Vector256) && !resultflags.HasInstructionSet (InstructionSet_AVX))
670
+ resultflags.RemoveInstructionSet (InstructionSet_Vector256);
671
+ if (resultflags.HasInstructionSet (InstructionSet_Vector512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
672
+ resultflags.RemoveInstructionSet (InstructionSet_Vector512);
677
673
if (resultflags.HasInstructionSet (InstructionSet_VectorT128) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
678
674
resultflags.RemoveInstructionSet (InstructionSet_VectorT128);
679
675
if (resultflags.HasInstructionSet (InstructionSet_VectorT256) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
680
676
resultflags.RemoveInstructionSet (InstructionSet_VectorT256);
681
677
if (resultflags.HasInstructionSet (InstructionSet_VectorT512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
682
678
resultflags.RemoveInstructionSet (InstructionSet_VectorT512);
683
- if (resultflags.HasInstructionSet (InstructionSet_AVX512F) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW_VL))
684
- resultflags.RemoveInstructionSet (InstructionSet_AVX512F);
685
- if (resultflags.HasInstructionSet (InstructionSet_AVX512F) && !resultflags.HasInstructionSet (InstructionSet_AVX512CD_VL))
686
- resultflags.RemoveInstructionSet (InstructionSet_AVX512F);
687
- if (resultflags.HasInstructionSet (InstructionSet_AVX512F) && !resultflags.HasInstructionSet (InstructionSet_AVX512DQ_VL))
688
- resultflags.RemoveInstructionSet (InstructionSet_AVX512F);
689
679
#endif // TARGET_AMD64
690
680
#ifdef TARGET_X86
691
681
if (resultflags.HasInstructionSet (InstructionSet_SSE) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
@@ -700,12 +690,12 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
700
690
resultflags.RemoveInstructionSet (InstructionSet_SSE41);
701
691
if (resultflags.HasInstructionSet (InstructionSet_SSE42) && !resultflags.HasInstructionSet (InstructionSet_SSE41))
702
692
resultflags.RemoveInstructionSet (InstructionSet_SSE42);
693
+ if (resultflags.HasInstructionSet (InstructionSet_POPCNT) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
694
+ resultflags.RemoveInstructionSet (InstructionSet_POPCNT);
703
695
if (resultflags.HasInstructionSet (InstructionSet_AVX) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
704
696
resultflags.RemoveInstructionSet (InstructionSet_AVX);
705
697
if (resultflags.HasInstructionSet (InstructionSet_AVX2) && !resultflags.HasInstructionSet (InstructionSet_AVX))
706
698
resultflags.RemoveInstructionSet (InstructionSet_AVX2);
707
- if (resultflags.HasInstructionSet (InstructionSet_AES) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
708
- resultflags.RemoveInstructionSet (InstructionSet_AES);
709
699
if (resultflags.HasInstructionSet (InstructionSet_BMI1) && !resultflags.HasInstructionSet (InstructionSet_AVX))
710
700
resultflags.RemoveInstructionSet (InstructionSet_BMI1);
711
701
if (resultflags.HasInstructionSet (InstructionSet_BMI2) && !resultflags.HasInstructionSet (InstructionSet_AVX))
@@ -714,22 +704,8 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
714
704
resultflags.RemoveInstructionSet (InstructionSet_FMA);
715
705
if (resultflags.HasInstructionSet (InstructionSet_LZCNT) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
716
706
resultflags.RemoveInstructionSet (InstructionSet_LZCNT);
717
- if (resultflags.HasInstructionSet (InstructionSet_PCLMULQDQ) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
718
- resultflags.RemoveInstructionSet (InstructionSet_PCLMULQDQ);
719
- if (resultflags.HasInstructionSet (InstructionSet_POPCNT) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
720
- resultflags.RemoveInstructionSet (InstructionSet_POPCNT);
721
- if (resultflags.HasInstructionSet (InstructionSet_Vector128) && !resultflags.HasInstructionSet (InstructionSet_SSE))
722
- resultflags.RemoveInstructionSet (InstructionSet_Vector128);
723
- if (resultflags.HasInstructionSet (InstructionSet_Vector256) && !resultflags.HasInstructionSet (InstructionSet_AVX))
724
- resultflags.RemoveInstructionSet (InstructionSet_Vector256);
725
- if (resultflags.HasInstructionSet (InstructionSet_Vector512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
726
- resultflags.RemoveInstructionSet (InstructionSet_Vector512);
727
- if (resultflags.HasInstructionSet (InstructionSet_AVXVNNI) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
728
- resultflags.RemoveInstructionSet (InstructionSet_AVXVNNI);
729
707
if (resultflags.HasInstructionSet (InstructionSet_MOVBE) && !resultflags.HasInstructionSet (InstructionSet_SSE42))
730
708
resultflags.RemoveInstructionSet (InstructionSet_MOVBE);
731
- if (resultflags.HasInstructionSet (InstructionSet_X86Serialize) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
732
- resultflags.RemoveInstructionSet (InstructionSet_X86Serialize);
733
709
if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
734
710
resultflags.RemoveInstructionSet (InstructionSet_EVEX);
735
711
if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_FMA))
@@ -762,10 +738,14 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
762
738
resultflags.RemoveInstructionSet (InstructionSet_AVX512VBMI_VL);
763
739
if (resultflags.HasInstructionSet (InstructionSet_AVX512VBMI_VL) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW_VL))
764
740
resultflags.RemoveInstructionSet (InstructionSet_AVX512VBMI_VL);
765
- if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
766
- resultflags.RemoveInstructionSet (InstructionSet_EVEX);
767
- if (resultflags.HasInstructionSet (InstructionSet_EVEX) && !resultflags.HasInstructionSet (InstructionSet_FMA))
768
- resultflags.RemoveInstructionSet (InstructionSet_EVEX);
741
+ if (resultflags.HasInstructionSet (InstructionSet_AES) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
742
+ resultflags.RemoveInstructionSet (InstructionSet_AES);
743
+ if (resultflags.HasInstructionSet (InstructionSet_PCLMULQDQ) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
744
+ resultflags.RemoveInstructionSet (InstructionSet_PCLMULQDQ);
745
+ if (resultflags.HasInstructionSet (InstructionSet_AVXVNNI) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
746
+ resultflags.RemoveInstructionSet (InstructionSet_AVXVNNI);
747
+ if (resultflags.HasInstructionSet (InstructionSet_X86Serialize) && !resultflags.HasInstructionSet (InstructionSet_X86Base))
748
+ resultflags.RemoveInstructionSet (InstructionSet_X86Serialize);
769
749
if (resultflags.HasInstructionSet (InstructionSet_AVX10v1) && !resultflags.HasInstructionSet (InstructionSet_EVEX))
770
750
resultflags.RemoveInstructionSet (InstructionSet_AVX10v1);
771
751
if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX10v1))
@@ -790,18 +770,18 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
790
770
resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
791
771
if (resultflags.HasInstructionSet (InstructionSet_AVX10v1_V512) && !resultflags.HasInstructionSet (InstructionSet_AVX512VBMI_VL))
792
772
resultflags.RemoveInstructionSet (InstructionSet_AVX10v1_V512);
773
+ if (resultflags.HasInstructionSet (InstructionSet_Vector128) && !resultflags.HasInstructionSet (InstructionSet_SSE))
774
+ resultflags.RemoveInstructionSet (InstructionSet_Vector128);
775
+ if (resultflags.HasInstructionSet (InstructionSet_Vector256) && !resultflags.HasInstructionSet (InstructionSet_AVX))
776
+ resultflags.RemoveInstructionSet (InstructionSet_Vector256);
777
+ if (resultflags.HasInstructionSet (InstructionSet_Vector512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
778
+ resultflags.RemoveInstructionSet (InstructionSet_Vector512);
793
779
if (resultflags.HasInstructionSet (InstructionSet_VectorT128) && !resultflags.HasInstructionSet (InstructionSet_SSE2))
794
780
resultflags.RemoveInstructionSet (InstructionSet_VectorT128);
795
781
if (resultflags.HasInstructionSet (InstructionSet_VectorT256) && !resultflags.HasInstructionSet (InstructionSet_AVX2))
796
782
resultflags.RemoveInstructionSet (InstructionSet_VectorT256);
797
783
if (resultflags.HasInstructionSet (InstructionSet_VectorT512) && !resultflags.HasInstructionSet (InstructionSet_AVX512F))
798
784
resultflags.RemoveInstructionSet (InstructionSet_VectorT512);
799
- if (resultflags.HasInstructionSet (InstructionSet_AVX512F) && !resultflags.HasInstructionSet (InstructionSet_AVX512BW_VL))
800
- resultflags.RemoveInstructionSet (InstructionSet_AVX512F);
801
- if (resultflags.HasInstructionSet (InstructionSet_AVX512F) && !resultflags.HasInstructionSet (InstructionSet_AVX512CD_VL))
802
- resultflags.RemoveInstructionSet (InstructionSet_AVX512F);
803
- if (resultflags.HasInstructionSet (InstructionSet_AVX512F) && !resultflags.HasInstructionSet (InstructionSet_AVX512DQ_VL))
804
- resultflags.RemoveInstructionSet (InstructionSet_AVX512F);
805
785
#endif // TARGET_X86
806
786
807
787
} while (!oldflags.Equals (resultflags));
0 commit comments