2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-03-21 23:30:59 +08:00

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
This commit is contained in:
Uros Bizjak 2017-01-13 19:32:44 +01:00 committed by Uros Bizjak
parent 0fdba3a81c
commit 7cdca3ec8a
5 changed files with 278 additions and 178 deletions
gcc
ChangeLog
config/i386
testsuite

@ -1,3 +1,14 @@
2017-01-13 Uros Bizjak <ubizjak@gmail.com>
* 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 <richard.sandiford@arm.com>
* hash-table.h (hash_table::too_empty_p): New function.

@ -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 },
{ "-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 },
{ "-mavx512pf", OPTION_MASK_ISA_AVX512PF },
{ "-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 },
{ "-mlwp", OPTION_MASK_ISA_LWP },
{ "-mavx512f", OPTION_MASK_ISA_AVX512F },
{ "-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 },
{ "-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 ("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 ("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.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 ("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 ("prfchw", OPT_mprfchw),
IX86_ATTR_ISA ("rdseed", OPT_mrdseed),
IX86_ATTR_ISA ("adx", OPT_madx),
IX86_ATTR_ISA ("prefetchwt1", OPT_mprefetchwt1),
IX86_ATTR_ISA ("clflushopt", OPT_mclflushopt),
IX86_ATTR_ISA ("xsaves", OPT_mxsaves),
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 ("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 ("avx512er", OPT_mavx512er),
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 ("cx16", OPT_mcx16),
IX86_ATTR_ISA ("sahf", OPT_msahf),
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 ("sse4", OPT_msse4),
IX86_ATTR_ISA ("sse4.1", OPT_msse4_1),
IX86_ATTR_ISA ("sse4.2", OPT_msse4_2),
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 ("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 ("xsaves", OPT_mxsaves),
IX86_ATTR_ISA ("avx512vbmi", OPT_mavx512vbmi),
IX86_ATTR_ISA ("avx512ifma", OPT_mavx512ifma),
IX86_ATTR_ISA ("clwb", OPT_mclwb),
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_),

@ -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

@ -1,3 +1,8 @@
2017-01-13 Uros Bizjak <ubizjak@gmail.com>
* 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 <polacek@redhat.com>
PR c++/71166

@ -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_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_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_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_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_ssse3 (void) __attribute__((__target__("ssse3")));
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_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_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_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_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_ssse3 (void) __attribute__((__target__("no-ssse3")));
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")));