i386.opt (msgx): Use ix86_isa_flags2 variable.
authorUros Bizjak <ubizjak@gmail.com>
Fri, 13 Jan 2017 18:32:44 +0000 (19:32 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 13 Jan 2017 18:32:44 +0000 (19:32 +0100)
* 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

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.opt
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/funcspec-56.inc

index b5f7b08..b303681 100644 (file)
@@ -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.
index 7166cf9..fc934d2 100644 (file)
@@ -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_),
index b36f125..0ee3184 100644 (file)
@@ -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
index e3f4499..f9b6188 100644 (file)
@@ -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
index c999080..14abf42 100644 (file)
 /* 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")));