From: Uros Bizjak Date: Fri, 13 Jan 2017 18:32:44 +0000 (+0100) Subject: i386.opt (msgx): Use ix86_isa_flags2 variable. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7cdca3ec8a5ae98b5a92dcb3cb2d6d28f8f68266;p=gcc.git i386.opt (msgx): Use ix86_isa_flags2 variable. * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable. * config/i386/i386.c (ix86_target_string): Add missing options to isa_opts and reorder options by implied ISAs. Rename isa_opts2 to isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to flags_other and ix86_target_other to flags2_other. Display unknown isa2 options. (ix86_valid_target_attribute_inner_p): Add missing options and reorder options by implied ISAs, as in ix86_target_string. testsuite/ChangeLog: * gcc.target/i386/funcspec-56.inc: Add missing options and reorder options by implied ISAs, as in ix86_target_string. From-SVN: r244452 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b5f7b08f0a8..b303681d2f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2017-01-13 Uros Bizjak + + * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable. + * config/i386/i386.c (ix86_target_string): Add missing options + to isa_opts and reorder options by implied ISAs. Rename isa_opts2 to + isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to + flags_other and ix86_target_other to flags2_other. Display unknown + isa2 options. + (ix86_valid_target_attribute_inner_p): Add missing options and + reorder options by implied ISAs, as in ix86_target_string. + 2017-01-13 Richard Sandiford * hash-table.h (hash_table::too_empty_p): New function. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 7166cf90ef9..fc934d2485f 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -4246,8 +4246,9 @@ ix86_using_red_zone (void) 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 @@ -4256,72 +4257,76 @@ ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, int flags, 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[] = @@ -4358,17 +4363,18 @@ ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, int flags, }; /* 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; @@ -4409,6 +4415,22 @@ ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, int flags, 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++) { @@ -4422,18 +4444,7 @@ ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, int flags, 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. */ @@ -4448,24 +4459,24 @@ ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, int flags, 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. */ @@ -6616,65 +6627,70 @@ ix86_valid_target_attribute_inner_p (tree args, char *p_strings[], 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_), diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index b36f125f9ab..0ee31845eba 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -738,7 +738,7 @@ Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save Support code generation of popcnt instruction. msgx -Target Report Mask(ISA_SGX) Var(ix86_isa_flags) Save +Target Report Mask(ISA_SGX) Var(ix86_isa_flags2) Save Support SGX built-in functions and code generation. mbmi diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e3f4499e634..f9b61882e58 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-01-13 Uros Bizjak + + * gcc.target/i386/funcspec-56.inc: Add missing options and + reorder options by implied ISAs, as in ix86_target_string. + 2017-01-13 Marek Polacek PR c++/71166 diff --git a/gcc/testsuite/gcc.target/i386/funcspec-56.inc b/gcc/testsuite/gcc.target/i386/funcspec-56.inc index c999080d8ad..14abf42b887 100644 --- a/gcc/testsuite/gcc.target/i386/funcspec-56.inc +++ b/gcc/testsuite/gcc.target/i386/funcspec-56.inc @@ -1,72 +1,140 @@ /* 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")));