public static InstructionSetFlags ExpandInstructionSetByImplicationHelper()

in src/coreclr/tools/Common/JitInterface/CorInfoInstructionSet.cs [513:929]


        public static InstructionSetFlags ExpandInstructionSetByImplicationHelper(TargetArchitecture architecture, InstructionSetFlags input)
        {
            InstructionSetFlags oldflags;
            InstructionSetFlags resultflags = input;
            do
            {
                oldflags = resultflags;
                switch (architecture)
                {

                case TargetArchitecture.ARM64:
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_ArmBase))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_ArmBase_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_ArmBase_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_ArmBase);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_AdvSimd))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_AdvSimd_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Aes))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Aes_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Aes_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Aes);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Crc32))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Crc32_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Crc32_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Crc32);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Dp))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Dp_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Dp_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Dp);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Rdm))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Rdm_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Rdm_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Rdm);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sha1))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Sha1_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sha1_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Sha1);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sha256))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Sha256_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sha256_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Sha256);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sve))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Sve_Arm64);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sve_Arm64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_Sve);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_AdvSimd))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_ArmBase);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Aes))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_ArmBase);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Crc32))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_ArmBase);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Dp))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Rdm))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sha1))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_ArmBase);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sha256))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_ArmBase);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Vector64))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Vector128))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_VectorT128))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd);
                    if (resultflags.HasInstructionSet(InstructionSet.ARM64_Sve))
                        resultflags.AddInstructionSet(InstructionSet.ARM64_AdvSimd);
                    break;

                case TargetArchitecture.X64:
                    if (resultflags.HasInstructionSet(InstructionSet.X64_X86Base))
                        resultflags.AddInstructionSet(InstructionSet.X64_X86Base_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_X86Base_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_X86Base);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE2))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE2_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE2_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE3))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE3_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE3_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE3);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSSE3))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSSE3_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSSE3_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSSE3);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE41))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE41_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE41_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE41);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE42))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE42_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE42_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE42);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX2))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX2_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX2_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AES))
                        resultflags.AddInstructionSet(InstructionSet.X64_AES_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AES_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AES);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_BMI1))
                        resultflags.AddInstructionSet(InstructionSet.X64_BMI1_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_BMI1_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_BMI1);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_BMI2))
                        resultflags.AddInstructionSet(InstructionSet.X64_BMI2_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_BMI2_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_BMI2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_FMA))
                        resultflags.AddInstructionSet(InstructionSet.X64_FMA_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_FMA_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_FMA);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_LZCNT))
                        resultflags.AddInstructionSet(InstructionSet.X64_LZCNT_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_LZCNT_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_LZCNT);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_PCLMULQDQ))
                        resultflags.AddInstructionSet(InstructionSet.X64_PCLMULQDQ_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_PCLMULQDQ_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_PCLMULQDQ);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_POPCNT))
                        resultflags.AddInstructionSet(InstructionSet.X64_POPCNT_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_POPCNT_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_POPCNT);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVXVNNI))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVXVNNI_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVXVNNI_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVXVNNI);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_MOVBE))
                        resultflags.AddInstructionSet(InstructionSet.X64_MOVBE_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_MOVBE_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_MOVBE);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_X86Serialize))
                        resultflags.AddInstructionSet(InstructionSet.X64_X86Serialize_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_X86Serialize_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_X86Serialize);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_EVEX))
                        resultflags.AddInstructionSet(InstructionSet.X64_EVEX_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_EVEX_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_EVEX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512F))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512F_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512F_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F_VL_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512F_VL_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512BW))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512BW_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512BW_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW_VL_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512BW_VL_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512CD))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512CD_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512CD_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512CD);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512CD_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512CD_VL_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512CD_VL_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512CD_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512DQ))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512DQ_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512DQ_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512DQ);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512DQ_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512DQ_VL_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512DQ_VL_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512DQ_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512VBMI))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512VBMI_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512VBMI_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512VBMI);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512VBMI_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512VBMI_VL_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512VBMI_VL_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512VBMI_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX10v1_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX10v1);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX10v1_V512_X64);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512_X64))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX10v1_V512);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE))
                        resultflags.AddInstructionSet(InstructionSet.X64_X86Base);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE2))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE3))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSSE3))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE3);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE41))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSSE3);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_SSE42))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE41);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_POPCNT))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE42);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE42);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX2))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_BMI1))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_BMI2))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_FMA))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_LZCNT))
                        resultflags.AddInstructionSet(InstructionSet.X64_X86Base);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_MOVBE))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE42);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_EVEX))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_EVEX))
                        resultflags.AddInstructionSet(InstructionSet.X64_FMA);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512F))
                        resultflags.AddInstructionSet(InstructionSet.X64_EVEX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512F_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512CD))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512CD_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512CD);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512CD_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512BW))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512BW_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512BW_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512DQ))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512DQ_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512DQ);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512DQ_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512VBMI))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512VBMI_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512VBMI);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX512VBMI_VL))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AES))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_PCLMULQDQ))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVXVNNI))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_X86Serialize))
                        resultflags.AddInstructionSet(InstructionSet.X64_X86Base);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1))
                        resultflags.AddInstructionSet(InstructionSet.X64_EVEX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX10v1);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512CD);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512CD_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512BW_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512DQ);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512DQ_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512VBMI);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512VBMI_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_Vector128))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_Vector256))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_Vector512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_VectorT128))
                        resultflags.AddInstructionSet(InstructionSet.X64_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_VectorT256))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX2);
                    if (resultflags.HasInstructionSet(InstructionSet.X64_VectorT512))
                        resultflags.AddInstructionSet(InstructionSet.X64_AVX512F);
                    break;

                case TargetArchitecture.X86:
                    if (resultflags.HasInstructionSet(InstructionSet.X86_SSE))
                        resultflags.AddInstructionSet(InstructionSet.X86_X86Base);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_SSE2))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_SSE3))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_SSSE3))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE3);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_SSE41))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSSE3);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_SSE42))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE41);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_POPCNT))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE42);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE42);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX2))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_BMI1))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_BMI2))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_FMA))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_LZCNT))
                        resultflags.AddInstructionSet(InstructionSet.X86_X86Base);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_MOVBE))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE42);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_EVEX))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX2);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_EVEX))
                        resultflags.AddInstructionSet(InstructionSet.X86_FMA);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512F))
                        resultflags.AddInstructionSet(InstructionSet.X86_EVEX);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512F_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512CD))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512CD_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512CD);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512CD_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512BW))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512BW_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512BW);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512BW_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512DQ))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512DQ_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512DQ);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512DQ_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512VBMI))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512BW);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512VBMI_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512VBMI);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX512VBMI_VL))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512BW_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AES))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_PCLMULQDQ))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVXVNNI))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX2);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_X86Serialize))
                        resultflags.AddInstructionSet(InstructionSet.X86_X86Base);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1))
                        resultflags.AddInstructionSet(InstructionSet.X86_EVEX);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX10v1);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512CD);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512CD_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512BW);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512BW_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512DQ);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512DQ_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512VBMI);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_AVX10v1_V512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512VBMI_VL);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_Vector128))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_Vector256))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_Vector512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_VectorT128))
                        resultflags.AddInstructionSet(InstructionSet.X86_SSE2);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_VectorT256))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX2);
                    if (resultflags.HasInstructionSet(InstructionSet.X86_VectorT512))
                        resultflags.AddInstructionSet(InstructionSet.X86_AVX512F);
                    break;
                }
            } while (!oldflags.Equals(resultflags));

            return resultflags;
        }