responsible for freeing the string. */
static char *
-ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, int flags,
- int ix86_flags, const char *arch, const char *tune,
+ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2,
+ int flags, int flags2,
+ const char *arch, const char *tune,
enum fpmath_unit fpmath, bool add_nl_p)
{
struct ix86_target_opts
HOST_WIDE_INT mask; /* isa mask options */
};
- /* This table is ordered so that options like -msse4.2 that imply
- preceding options while match those first. */
+ /* This table is ordered so that options like -msse4.2 that imply other
+ ISAs come first. Target string will be displayed in the same order. */
+ static struct ix86_target_opts isa2_opts[] =
+ {
+ { "-msgx", OPTION_MASK_ISA_SGX },
+ { "-mavx5124vnniw", OPTION_MASK_ISA_AVX5124VNNIW },
+ { "-mavx5124fmaps", OPTION_MASK_ISA_AVX5124FMAPS },
+ { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ }
+ };
static struct ix86_target_opts isa_opts[] =
{
- { "-mfma4", OPTION_MASK_ISA_FMA4 },
- { "-mfma", OPTION_MASK_ISA_FMA },
- { "-mxop", OPTION_MASK_ISA_XOP },
- { "-mlwp", OPTION_MASK_ISA_LWP },
- { "-mavx512f", OPTION_MASK_ISA_AVX512F },
+ { "-mavx512vbmi", OPTION_MASK_ISA_AVX512VBMI },
+ { "-mavx512ifma", OPTION_MASK_ISA_AVX512IFMA },
+ { "-mavx512vl", OPTION_MASK_ISA_AVX512VL },
+ { "-mavx512bw", OPTION_MASK_ISA_AVX512BW },
+ { "-mavx512dq", OPTION_MASK_ISA_AVX512DQ },
{ "-mavx512er", OPTION_MASK_ISA_AVX512ER },
- { "-mavx512cd", OPTION_MASK_ISA_AVX512CD },
{ "-mavx512pf", OPTION_MASK_ISA_AVX512PF },
- { "-mavx512dq", OPTION_MASK_ISA_AVX512DQ },
- { "-mavx512bw", OPTION_MASK_ISA_AVX512BW },
- { "-mavx512vl", OPTION_MASK_ISA_AVX512VL },
- { "-mavx512ifma", OPTION_MASK_ISA_AVX512IFMA },
- { "-mavx512vbmi", OPTION_MASK_ISA_AVX512VBMI },
- { "-msse4a", OPTION_MASK_ISA_SSE4A },
+ { "-mavx512cd", OPTION_MASK_ISA_AVX512CD },
+ { "-mavx512f", OPTION_MASK_ISA_AVX512F },
+ { "-mavx2", OPTION_MASK_ISA_AVX2 },
+ { "-mfma", OPTION_MASK_ISA_FMA },
+ { "-mxop", OPTION_MASK_ISA_XOP },
+ { "-mfma4", OPTION_MASK_ISA_FMA4 },
+ { "-mf16c", OPTION_MASK_ISA_F16C },
+ { "-mavx", OPTION_MASK_ISA_AVX },
+/* { "-msse4" OPTION_MASK_ISA_SSE4 }, */
{ "-msse4.2", OPTION_MASK_ISA_SSE4_2 },
{ "-msse4.1", OPTION_MASK_ISA_SSE4_1 },
+ { "-msse4a", OPTION_MASK_ISA_SSE4A },
{ "-mssse3", OPTION_MASK_ISA_SSSE3 },
{ "-msse3", OPTION_MASK_ISA_SSE3 },
+ { "-maes", OPTION_MASK_ISA_AES },
+ { "-msha", OPTION_MASK_ISA_SHA },
+ { "-mpclmul", OPTION_MASK_ISA_PCLMUL },
{ "-msse2", OPTION_MASK_ISA_SSE2 },
{ "-msse", OPTION_MASK_ISA_SSE },
- { "-m3dnow", OPTION_MASK_ISA_3DNOW },
{ "-m3dnowa", OPTION_MASK_ISA_3DNOW_A },
+ { "-m3dnow", OPTION_MASK_ISA_3DNOW },
{ "-mmmx", OPTION_MASK_ISA_MMX },
+ { "-mrtm", OPTION_MASK_ISA_RTM },
+ { "-mprfchw", OPTION_MASK_ISA_PRFCHW },
+ { "-mrdseed", OPTION_MASK_ISA_RDSEED },
+ { "-madx", OPTION_MASK_ISA_ADX },
+ { "-mprefetchwt1", OPTION_MASK_ISA_PREFETCHWT1 },
+ { "-mclflushopt", OPTION_MASK_ISA_CLFLUSHOPT },
+ { "-mxsaves", OPTION_MASK_ISA_XSAVES },
+ { "-mxsavec", OPTION_MASK_ISA_XSAVEC },
+ { "-mxsaveopt", OPTION_MASK_ISA_XSAVEOPT },
+ { "-mxsave", OPTION_MASK_ISA_XSAVE },
{ "-mabm", OPTION_MASK_ISA_ABM },
{ "-mbmi", OPTION_MASK_ISA_BMI },
{ "-mbmi2", OPTION_MASK_ISA_BMI2 },
{ "-mlzcnt", OPTION_MASK_ISA_LZCNT },
- { "-mhle", OPTION_MASK_ISA_HLE },
- { "-mfxsr", OPTION_MASK_ISA_FXSR },
- { "-mrdseed", OPTION_MASK_ISA_RDSEED },
- { "-mprfchw", OPTION_MASK_ISA_PRFCHW },
- { "-madx", OPTION_MASK_ISA_ADX },
{ "-mtbm", OPTION_MASK_ISA_TBM },
{ "-mpopcnt", OPTION_MASK_ISA_POPCNT },
+ { "-mcx16", OPTION_MASK_ISA_CX16 },
+ { "-msahf", OPTION_MASK_ISA_SAHF },
{ "-mmovbe", OPTION_MASK_ISA_MOVBE },
{ "-mcrc32", OPTION_MASK_ISA_CRC32 },
- { "-maes", OPTION_MASK_ISA_AES },
- { "-msha", OPTION_MASK_ISA_SHA },
- { "-mpclmul", OPTION_MASK_ISA_PCLMUL },
{ "-mfsgsbase", OPTION_MASK_ISA_FSGSBASE },
{ "-mrdrnd", OPTION_MASK_ISA_RDRND },
- { "-mf16c", OPTION_MASK_ISA_F16C },
- { "-mrtm", OPTION_MASK_ISA_RTM },
- { "-mxsave", OPTION_MASK_ISA_XSAVE },
- { "-mxsaveopt", OPTION_MASK_ISA_XSAVEOPT },
- { "-mprefetchwt1", OPTION_MASK_ISA_PREFETCHWT1 },
- { "-mclflushopt", OPTION_MASK_ISA_CLFLUSHOPT },
- { "-mxsavec", OPTION_MASK_ISA_XSAVEC },
- { "-mxsaves", OPTION_MASK_ISA_XSAVES },
- { "-mmpx", OPTION_MASK_ISA_MPX },
- { "-mclwb", OPTION_MASK_ISA_CLWB },
{ "-mmwaitx", OPTION_MASK_ISA_MWAITX },
{ "-mclzero", OPTION_MASK_ISA_CLZERO },
- { "-mpku", OPTION_MASK_ISA_PKU }
- };
- /* Additional structure for isa flags. */
- static struct ix86_target_opts isa_opts2[] =
- {
- { "-mavx5124vnniw", OPTION_MASK_ISA_AVX5124VNNIW },
- { "-mavx5124fmaps", OPTION_MASK_ISA_AVX5124FMAPS },
- { "-mavx512vpopcntdq", OPTION_MASK_ISA_AVX512VPOPCNTDQ },
- { "-msgx", OPTION_MASK_ISA_SGX }
+ { "-mpku", OPTION_MASK_ISA_PKU },
+ { "-mlwp", OPTION_MASK_ISA_LWP },
+ { "-mhle", OPTION_MASK_ISA_HLE },
+ { "-mfxsr", OPTION_MASK_ISA_FXSR },
+ { "-mmpx", OPTION_MASK_ISA_MPX },
+ { "-mclwb", OPTION_MASK_ISA_CLWB }
};
/* Flag options. */
static struct ix86_target_opts flag_opts[] =
};
/* Additional flag options. */
- static struct ix86_target_opts ix86_flag_opts[] =
+ static struct ix86_target_opts flag2_opts[] =
{
{ "-mgeneral-regs-only", OPTION_MASK_GENERAL_REGS_ONLY },
};
- const char *opts[ARRAY_SIZE (isa_opts) + ARRAY_SIZE (isa_opts2)
- + ARRAY_SIZE (flag_opts) + ARRAY_SIZE (ix86_flag_opts) + 6][2];
+ const char *opts[ARRAY_SIZE (isa_opts) + ARRAY_SIZE (isa2_opts)
+ + ARRAY_SIZE (flag_opts) + ARRAY_SIZE (flag2_opts) + 6][2];
char isa_other[40];
- char target_other[40];
- char ix86_target_other[40];
+ char isa2_other[40];
+ char flags_other[40];
+ char flags2_other[40];
unsigned num = 0;
unsigned i, j;
char *ret;
abi = "-m32";
opts[num++][0] = abi;
+ /* Pick out the options in isa2 options. */
+ for (i = 0; i < ARRAY_SIZE (isa2_opts); i++)
+ {
+ if ((isa2 & isa2_opts[i].mask) != 0)
+ {
+ opts[num++][0] = isa2_opts[i].option;
+ isa2 &= ~ isa2_opts[i].mask;
+ }
+ }
+
+ if (isa2 && add_nl_p)
+ {
+ opts[num++][0] = isa2_other;
+ sprintf (isa2_other, "(other isa2: %#" HOST_WIDE_INT_PRINT "x)", isa2);
+ }
+
/* Pick out the options in isa options. */
for (i = 0; i < ARRAY_SIZE (isa_opts); i++)
{
if (isa && add_nl_p)
{
opts[num++][0] = isa_other;
- sprintf (isa_other, "(other isa: %#" HOST_WIDE_INT_PRINT "x)",
- isa);
- }
-
- /* Pick out the options in isa2 options. */
- for (i = 0; i < ARRAY_SIZE (isa_opts2); i++)
- {
- if ((isa2 & isa_opts2[i].mask) != 0)
- {
- opts[num++][0] = isa_opts2[i].option;
- isa &= ~ isa_opts2[i].mask;
- }
+ sprintf (isa_other, "(other isa: %#" HOST_WIDE_INT_PRINT "x)", isa);
}
/* Add flag options. */
if (flags && add_nl_p)
{
- opts[num++][0] = target_other;
- sprintf (target_other, "(other flags: %#x)", flags);
+ opts[num++][0] = flags_other;
+ sprintf (flags_other, "(other flags: %#x)", flags);
}
/* Add additional flag options. */
- for (i = 0; i < ARRAY_SIZE (ix86_flag_opts); i++)
+ for (i = 0; i < ARRAY_SIZE (flag2_opts); i++)
{
- if ((ix86_flags & ix86_flag_opts[i].mask) != 0)
+ if ((flags2 & flag2_opts[i].mask) != 0)
{
- opts[num++][0] = ix86_flag_opts[i].option;
- ix86_flags &= ~ ix86_flag_opts[i].mask;
+ opts[num++][0] = flag2_opts[i].option;
+ flags2 &= ~ flag2_opts[i].mask;
}
}
- if (ix86_flags && add_nl_p)
+ if (flags2 && add_nl_p)
{
- opts[num++][0] = ix86_target_other;
- sprintf (ix86_target_other, "(other flags: %#x)", ix86_flags);
+ opts[num++][0] = flags2_other;
+ sprintf (flags2_other, "(other flags2: %#x)", flags2);
}
/* Add -fpmath= option. */
int mask;
} attrs[] = {
/* isa options */
- IX86_ATTR_ISA ("3dnow", OPT_m3dnow),
- IX86_ATTR_ISA ("abm", OPT_mabm),
IX86_ATTR_ISA ("sgx", OPT_msgx),
- IX86_ATTR_ISA ("bmi", OPT_mbmi),
- IX86_ATTR_ISA ("bmi2", OPT_mbmi2),
- IX86_ATTR_ISA ("lzcnt", OPT_mlzcnt),
- IX86_ATTR_ISA ("tbm", OPT_mtbm),
- IX86_ATTR_ISA ("aes", OPT_maes),
- IX86_ATTR_ISA ("sha", OPT_msha),
- IX86_ATTR_ISA ("avx", OPT_mavx),
- IX86_ATTR_ISA ("avx2", OPT_mavx2),
- IX86_ATTR_ISA ("avx512f", OPT_mavx512f),
- IX86_ATTR_ISA ("avx512pf", OPT_mavx512pf),
+ IX86_ATTR_ISA ("avx5124fmaps", OPT_mavx5124fmaps),
+ IX86_ATTR_ISA ("avx5124vnniw", OPT_mavx5124vnniw),
+ IX86_ATTR_ISA ("avx512vpopcntdq", OPT_mavx512vpopcntdq),
+
+ IX86_ATTR_ISA ("avx512vbmi", OPT_mavx512vbmi),
+ IX86_ATTR_ISA ("avx512ifma", OPT_mavx512ifma),
+ IX86_ATTR_ISA ("avx512vl", OPT_mavx512vl),
+ IX86_ATTR_ISA ("avx512bw", OPT_mavx512bw),
+ IX86_ATTR_ISA ("avx512dq", OPT_mavx512dq),
IX86_ATTR_ISA ("avx512er", OPT_mavx512er),
+ IX86_ATTR_ISA ("avx512pf", OPT_mavx512pf),
IX86_ATTR_ISA ("avx512cd", OPT_mavx512cd),
- IX86_ATTR_ISA ("avx512dq", OPT_mavx512dq),
- IX86_ATTR_ISA ("avx512bw", OPT_mavx512bw),
- IX86_ATTR_ISA ("avx512vl", OPT_mavx512vl),
- IX86_ATTR_ISA ("avx5124fmaps", OPT_mavx5124fmaps),
- IX86_ATTR_ISA ("avx5124vnniw", OPT_mavx5124vnniw),
- IX86_ATTR_ISA ("avx512vpopcntdq", OPT_mavx512vpopcntdq),
- IX86_ATTR_ISA ("mmx", OPT_mmmx),
- IX86_ATTR_ISA ("pclmul", OPT_mpclmul),
- IX86_ATTR_ISA ("popcnt", OPT_mpopcnt),
- IX86_ATTR_ISA ("movbe", OPT_mmovbe),
- IX86_ATTR_ISA ("crc32", OPT_mcrc32),
- IX86_ATTR_ISA ("sse", OPT_msse),
- IX86_ATTR_ISA ("sse2", OPT_msse2),
- IX86_ATTR_ISA ("sse3", OPT_msse3),
+ IX86_ATTR_ISA ("avx512f", OPT_mavx512f),
+ IX86_ATTR_ISA ("avx2", OPT_mavx2),
+ IX86_ATTR_ISA ("fma", OPT_mfma),
+ IX86_ATTR_ISA ("xop", OPT_mxop),
+ IX86_ATTR_ISA ("fma4", OPT_mfma4),
+ IX86_ATTR_ISA ("f16c", OPT_mf16c),
+ IX86_ATTR_ISA ("avx", OPT_mavx),
IX86_ATTR_ISA ("sse4", OPT_msse4),
- IX86_ATTR_ISA ("sse4.1", OPT_msse4_1),
IX86_ATTR_ISA ("sse4.2", OPT_msse4_2),
+ IX86_ATTR_ISA ("sse4.1", OPT_msse4_1),
IX86_ATTR_ISA ("sse4a", OPT_msse4a),
IX86_ATTR_ISA ("ssse3", OPT_mssse3),
- IX86_ATTR_ISA ("fma4", OPT_mfma4),
- IX86_ATTR_ISA ("fma", OPT_mfma),
- IX86_ATTR_ISA ("xop", OPT_mxop),
- IX86_ATTR_ISA ("lwp", OPT_mlwp),
- IX86_ATTR_ISA ("fsgsbase", OPT_mfsgsbase),
- IX86_ATTR_ISA ("rdrnd", OPT_mrdrnd),
- IX86_ATTR_ISA ("f16c", OPT_mf16c),
+ IX86_ATTR_ISA ("sse3", OPT_msse3),
+ IX86_ATTR_ISA ("aes", OPT_maes),
+ IX86_ATTR_ISA ("sha", OPT_msha),
+ IX86_ATTR_ISA ("pclmul", OPT_mpclmul),
+ IX86_ATTR_ISA ("sse2", OPT_msse2),
+ IX86_ATTR_ISA ("sse", OPT_msse),
+ IX86_ATTR_ISA ("3dnowa", OPT_m3dnowa),
+ IX86_ATTR_ISA ("3dnow", OPT_m3dnow),
+ IX86_ATTR_ISA ("mmx", OPT_mmmx),
IX86_ATTR_ISA ("rtm", OPT_mrtm),
- IX86_ATTR_ISA ("hle", OPT_mhle),
IX86_ATTR_ISA ("prfchw", OPT_mprfchw),
IX86_ATTR_ISA ("rdseed", OPT_mrdseed),
IX86_ATTR_ISA ("adx", OPT_madx),
- IX86_ATTR_ISA ("fxsr", OPT_mfxsr),
- IX86_ATTR_ISA ("xsave", OPT_mxsave),
- IX86_ATTR_ISA ("xsaveopt", OPT_mxsaveopt),
IX86_ATTR_ISA ("prefetchwt1", OPT_mprefetchwt1),
- IX86_ATTR_ISA ("clflushopt", OPT_mclflushopt),
- IX86_ATTR_ISA ("xsavec", OPT_mxsavec),
+ IX86_ATTR_ISA ("clflushopt", OPT_mclflushopt),
IX86_ATTR_ISA ("xsaves", OPT_mxsaves),
- IX86_ATTR_ISA ("avx512vbmi", OPT_mavx512vbmi),
- IX86_ATTR_ISA ("avx512ifma", OPT_mavx512ifma),
- IX86_ATTR_ISA ("clwb", OPT_mclwb),
+ IX86_ATTR_ISA ("xsavec", OPT_mxsavec),
+ IX86_ATTR_ISA ("xsaveopt", OPT_mxsaveopt),
+ IX86_ATTR_ISA ("xsave", OPT_mxsave),
+ IX86_ATTR_ISA ("abm", OPT_mabm),
+ IX86_ATTR_ISA ("bmi", OPT_mbmi),
+ IX86_ATTR_ISA ("bmi2", OPT_mbmi2),
+ IX86_ATTR_ISA ("lzcnt", OPT_mlzcnt),
+ IX86_ATTR_ISA ("tbm", OPT_mtbm),
+ IX86_ATTR_ISA ("popcnt", OPT_mpopcnt),
+ IX86_ATTR_ISA ("cx16", OPT_mcx16),
+ IX86_ATTR_ISA ("sahf", OPT_msahf),
+ IX86_ATTR_ISA ("movbe", OPT_mmovbe),
+ IX86_ATTR_ISA ("crc32", OPT_mcrc32),
+ IX86_ATTR_ISA ("fsgsbase", OPT_mfsgsbase),
+ IX86_ATTR_ISA ("rdrnd", OPT_mrdrnd),
IX86_ATTR_ISA ("mwaitx", OPT_mmwaitx),
- IX86_ATTR_ISA ("clzero", OPT_mclzero),
+ IX86_ATTR_ISA ("clzero", OPT_mclzero),
IX86_ATTR_ISA ("pku", OPT_mpku),
+ IX86_ATTR_ISA ("lwp", OPT_mlwp),
+ IX86_ATTR_ISA ("hle", OPT_mhle),
+ IX86_ATTR_ISA ("fxsr", OPT_mfxsr),
+ IX86_ATTR_ISA ("mpx", OPT_mmpx),
+ IX86_ATTR_ISA ("clwb", OPT_mclwb),
/* enum options */
IX86_ATTR_ENUM ("fpmath=", OPT_mfpmath_),
/* Common 32-bit and 64-bit function specific options. */
-extern void test_abm (void) __attribute__((__target__("abm")));
-extern void test_aes (void) __attribute__((__target__("aes")));
-extern void test_bmi (void) __attribute__((__target__("bmi")));
-extern void test_mmx (void) __attribute__((__target__("mmx")));
-extern void test_pclmul (void) __attribute__((__target__("pclmul")));
-extern void test_popcnt (void) __attribute__((__target__("popcnt")));
-extern void test_recip (void) __attribute__((__target__("recip")));
-extern void test_sse (void) __attribute__((__target__("sse")));
-extern void test_sse2 (void) __attribute__((__target__("sse2")));
-extern void test_sse3 (void) __attribute__((__target__("sse3")));
+extern void test_sgx (void) __attribute__((__target__("sgx")));
+extern void test_avx5124fmaps(void) __attribute__((__target__("avx5124fmaps")));
+extern void test_avx5124vnniw(void) __attribute__((__target__("avx5124vnniw")));
+extern void test_avx512vpopcntdq(void) __attribute__((__target__("avx512vpopcntdq")));
+
+extern void test_avx512vbmi (void) __attribute__((__target__("avx512vbmi")));
+extern void test_avx512ifma (void) __attribute__((__target__("avx512ifma")));
+extern void test_avx512vl (void) __attribute__((__target__("avx512vl")));
+extern void test_avx512bw (void) __attribute__((__target__("avx512bw")));
+extern void test_avx512dq (void) __attribute__((__target__("avx512dq")));
+extern void test_avx512er (void) __attribute__((__target__("avx512er")));
+extern void test_avx512pf (void) __attribute__((__target__("avx512pf")));
+extern void test_avx512cd (void) __attribute__((__target__("avx512cd")));
+extern void test_avx512f (void) __attribute__((__target__("avx512f")));
+extern void test_avx2 (void) __attribute__((__target__("avx2")));
+extern void test_fma (void) __attribute__((__target__("fma")));
+extern void test_xop (void) __attribute__((__target__("xop")));
+extern void test_fma4 (void) __attribute__((__target__("fma4")));
+extern void test_f16c (void) __attribute__((__target__("f16c")));
+extern void test_avx (void) __attribute__((__target__("avx")));
extern void test_sse4 (void) __attribute__((__target__("sse4")));
-extern void test_sse4_1 (void) __attribute__((__target__("sse4.1")));
extern void test_sse4_2 (void) __attribute__((__target__("sse4.2")));
+extern void test_sse4_1 (void) __attribute__((__target__("sse4.1")));
extern void test_sse4a (void) __attribute__((__target__("sse4a")));
-extern void test_fma (void) __attribute__((__target__("fma")));
-extern void test_fma4 (void) __attribute__((__target__("fma4")));
-extern void test_xop (void) __attribute__((__target__("xop")));
extern void test_ssse3 (void) __attribute__((__target__("ssse3")));
-extern void test_tbm (void) __attribute__((__target__("tbm")));
-extern void test_avx (void) __attribute__((__target__("avx")));
-extern void test_avx2 (void) __attribute__((__target__("avx2")));
-extern void test_avx512f (void) __attribute__((__target__("avx512f")));
-extern void test_avx512vl(void) __attribute__((__target__("avx512vl")));
-extern void test_avx512bw(void) __attribute__((__target__("avx512bw")));
-extern void test_avx512dq(void) __attribute__((__target__("avx512dq")));
-extern void test_avx512er(void) __attribute__((__target__("avx512er")));
-extern void test_avx512pf(void) __attribute__((__target__("avx512pf")));
-extern void test_avx512cd(void) __attribute__((__target__("avx512cd")));
-extern void test_avx5124fmaps(void) __attribute__((__target__("avx5124fmaps")));
-extern void test_avx5124vnniw(void) __attribute__((__target__("avx5124vnniw")));
-extern void test_avx512vpopcntdq(void) __attribute__((__target__("avx512vpopcntdq")));
+extern void test_sse3 (void) __attribute__((__target__("sse3")));
+extern void test_aes (void) __attribute__((__target__("aes")));
+extern void test_sha (void) __attribute__((__target__("sha")));
+extern void test_pclmul (void) __attribute__((__target__("pclmul")));
+extern void test_sse2 (void) __attribute__((__target__("sse2")));
+extern void test_sse (void) __attribute__((__target__("sse")));
+extern void test_3dnowa (void) __attribute__((__target__("3dnowa")));
+extern void test_3dnow (void) __attribute__((__target__("3dnow")));
+extern void test_mmx (void) __attribute__((__target__("mmx")));
+extern void test_rtm (void) __attribute__((__target__("rtm")));
+extern void test_prfchw (void) __attribute__((__target__("prfchw")));
+extern void test_rdseed (void) __attribute__((__target__("rdseed")));
+extern void test_adx (void) __attribute__((__target__("adx")));
+extern void test_prefetchwt1 (void) __attribute__((__target__("prefetchwt1")));
+extern void test_clflushopt (void) __attribute__((__target__("clflushopt")));
+extern void test_xsaves (void) __attribute__((__target__("xsaves")));
+extern void test_xsavec (void) __attribute__((__target__("xsavec")));
+extern void test_xsaveopt (void) __attribute__((__target__("xsaveopt")));
+extern void test_xsave (void) __attribute__((__target__("xsave")));
+extern void test_abm (void) __attribute__((__target__("abm")));
extern void test_bmi (void) __attribute__((__target__("bmi")));
extern void test_bmi2 (void) __attribute__((__target__("bmi2")));
+extern void test_lzcnt (void) __attribute__((__target__("lzcnt")));
+extern void test_tbm (void) __attribute__((__target__("tbm")));
+extern void test_popcnt (void) __attribute__((__target__("popcnt")));
+extern void test_cx16 (void) __attribute__((__target__("cx16")));
+extern void test_sahf (void) __attribute__((__target__("sahf")));
+extern void test_movbe (void) __attribute__((__target__("movbe")));
+extern void test_crc32 (void) __attribute__((__target__("crc32")));
+extern void test_fsgsbase (void) __attribute__((__target__("fsgsbase")));
+extern void test_rdrnd (void) __attribute__((__target__("rdrnd")));
+extern void test_mwaitx (void) __attribute__((__target__("mwaitx")));
+extern void test_clzero (void) __attribute__((__target__("clzero")));
+extern void test_pku (void) __attribute__((__target__("pku")));
+extern void test_lwp (void) __attribute__((__target__("lwp")));
+extern void test_hle (void) __attribute__((__target__("hle")));
+extern void test_fxsr (void) __attribute__((__target__("fxsr")));
+extern void test_mpx (void) __attribute__((__target__("mpx")));
+extern void test_clwb (void) __attribute__((__target__("clwb")));
-extern void test_no_abm (void) __attribute__((__target__("no-abm")));
-extern void test_no_aes (void) __attribute__((__target__("no-aes")));
-extern void test_no_bmi (void) __attribute__((__target__("no-bmi")));
-extern void test_no_mmx (void) __attribute__((__target__("no-mmx")));
-extern void test_no_pclmul (void) __attribute__((__target__("no-pclmul")));
-extern void test_no_popcnt (void) __attribute__((__target__("no-popcnt")));
-extern void test_no_recip (void) __attribute__((__target__("no-recip")));
-extern void test_no_sse (void) __attribute__((__target__("no-sse")));
-extern void test_no_sse2 (void) __attribute__((__target__("no-sse2")));
-extern void test_no_sse3 (void) __attribute__((__target__("no-sse3")));
+extern void test_cld (void) __attribute__((__target__("cld")));
+extern void test_recip (void) __attribute__((__target__("recip")));
+
+extern void test_no_sgx (void) __attribute__((__target__("no-sgx")));
+extern void test_no_avx5124fmaps(void) __attribute__((__target__("no-avx5124fmaps")));
+extern void test_no_avx5124vnniw(void) __attribute__((__target__("no-avx5124vnniw")));
+extern void test_no_avx512vpopcntdq(void) __attribute__((__target__("no-avx512vpopcntdq")));
+
+extern void test_no_avx512vbmi (void) __attribute__((__target__("no-avx512vbmi")));
+extern void test_no_avx512ifma (void) __attribute__((__target__("no-avx512ifma")));
+extern void test_no_avx512vl (void) __attribute__((__target__("no-avx512vl")));
+extern void test_no_avx512bw (void) __attribute__((__target__("no-avx512bw")));
+extern void test_no_avx512dq (void) __attribute__((__target__("no-avx512dq")));
+extern void test_no_avx512er (void) __attribute__((__target__("no-avx512er")));
+extern void test_no_avx512pf (void) __attribute__((__target__("no-avx512pf")));
+extern void test_no_avx512cd (void) __attribute__((__target__("no-avx512cd")));
+extern void test_no_avx512f (void) __attribute__((__target__("no-avx512f")));
+extern void test_no_avx2 (void) __attribute__((__target__("no-avx2")));
+extern void test_no_fma (void) __attribute__((__target__("no-fma")));
+extern void test_no_xop (void) __attribute__((__target__("no-xop")));
+extern void test_no_fma4 (void) __attribute__((__target__("no-fma4")));
+extern void test_no_f16c (void) __attribute__((__target__("no-f16c")));
+extern void test_no_avx (void) __attribute__((__target__("no-avx")));
extern void test_no_sse4 (void) __attribute__((__target__("no-sse4")));
-extern void test_no_sse4_1 (void) __attribute__((__target__("no-sse4.1")));
extern void test_no_sse4_2 (void) __attribute__((__target__("no-sse4.2")));
+extern void test_no_sse4_1 (void) __attribute__((__target__("no-sse4.1")));
extern void test_no_sse4a (void) __attribute__((__target__("no-sse4a")));
-extern void test_no_fma (void) __attribute__((__target__("no-fma")));
-extern void test_no_fma4 (void) __attribute__((__target__("no-fma4")));
-extern void test_no_xop (void) __attribute__((__target__("no-xop")));
extern void test_no_ssse3 (void) __attribute__((__target__("no-ssse3")));
-extern void test_no_tbm (void) __attribute__((__target__("no-tbm")));
-extern void test_no_avx (void) __attribute__((__target__("no-avx")));
-extern void test_no_avx2 (void) __attribute__((__target__("no-avx2")));
-extern void test_no_avx512f (void) __attribute__((__target__("no-avx512f")));
-extern void test_no_avx512vl(void) __attribute__((__target__("no-avx512vl")));
-extern void test_no_avx512bw(void) __attribute__((__target__("no-avx512bw")));
-extern void test_no_avx512dq(void) __attribute__((__target__("no-avx512dq")));
-extern void test_no_avx512er(void) __attribute__((__target__("no-avx512er")));
-extern void test_bo_avx512pf(void) __attribute__((__target__("no-avx512pf")));
-extern void test_no_avx512cd(void) __attribute__((__target__("no-avx512cd")));
-extern void test_no_avx5124fmaps(void) __attribute__((__target__("no-avx5124fmaps")));
-extern void test_no_avx5124vnniw(void) __attribute__((__target__("no-avx5124vnniw")));
-extern void test_no_avx512vpopcntdq(void) __attribute__((__target__("no-avx512vpopcntdq")));
+extern void test_no_sse3 (void) __attribute__((__target__("no-sse3")));
+extern void test_no_aes (void) __attribute__((__target__("no-aes")));
+extern void test_no_sha (void) __attribute__((__target__("no-sha")));
+extern void test_no_pclmul (void) __attribute__((__target__("no-pclmul")));
+extern void test_no_sse2 (void) __attribute__((__target__("no-sse2")));
+extern void test_no_sse (void) __attribute__((__target__("no-sse")));
+extern void test_no_3dnowa (void) __attribute__((__target__("3dnowa")));
+extern void test_no_3dnow (void) __attribute__((__target__("no-3dnow")));
+extern void test_no_mmx (void) __attribute__((__target__("no-mmx")));
+extern void test_no_rtm (void) __attribute__((__target__("no-rtm")));
+extern void test_no_prfchw (void) __attribute__((__target__("no-prfchw")));
+extern void test_no_rdseed (void) __attribute__((__target__("no-rdseed")));
+extern void test_no_adx (void) __attribute__((__target__("no-adx")));
+extern void test_no_prefetchwt1 (void) __attribute__((__target__("no-prefetchwt1")));
+extern void test_no_clflushopt (void) __attribute__((__target__("no-clflushopt")));
+extern void test_no_xsaves (void) __attribute__((__target__("no-xsaves")));
+extern void test_no_xsavec (void) __attribute__((__target__("no-xsavec")));
+extern void test_no_xsaveopt (void) __attribute__((__target__("no-xsaveopt")));
+extern void test_no_xsave (void) __attribute__((__target__("no-xsave")));
+extern void test_no_abm (void) __attribute__((__target__("no-abm")));
extern void test_no_bmi (void) __attribute__((__target__("no-bmi")));
extern void test_no_bmi2 (void) __attribute__((__target__("no-bmi2")));
+extern void test_no_lzcnt (void) __attribute__((__target__("no-lzcnt")));
+extern void test_no_tbm (void) __attribute__((__target__("no-tbm")));
+extern void test_no_popcnt (void) __attribute__((__target__("no-popcnt")));
+extern void test_no_cx16 (void) __attribute__((__target__("no-cx16")));
+extern void test_no_sahf (void) __attribute__((__target__("no-sahf")));
+extern void test_no_movbe (void) __attribute__((__target__("no-movbe")));
+extern void test_no_crc32 (void) __attribute__((__target__("no-crc32")));
+extern void test_no_fsgsbase (void) __attribute__((__target__("no-fsgsbase")));
+extern void test_no_rdrnd (void) __attribute__((__target__("no-rdrnd")));
+extern void test_no_mwaitx (void) __attribute__((__target__("no-mwaitx")));
+extern void test_no_clzero (void) __attribute__((__target__("no-clzero")));
+extern void test_no_pku (void) __attribute__((__target__("no-pku")));
+extern void test_no_lwp (void) __attribute__((__target__("no-lwp")));
+extern void test_no_hle (void) __attribute__((__target__("no-hle")));
+extern void test_no_fxsr (void) __attribute__((__target__("no-fxsr")));
+extern void test_no_mpx (void) __attribute__((__target__("no-mpx")));
+extern void test_no_clwb (void) __attribute__((__target__("no-clwb")));
+
+extern void test_no_cld (void) __attribute__((__target__("no-cld")));
+extern void test_no_recip (void) __attribute__((__target__("no-recip")));
extern void test_arch_nocona (void) __attribute__((__target__("arch=nocona")));
extern void test_arch_core2 (void) __attribute__((__target__("arch=core2")));