Overhaul in isa_flags and handling it.
authorMartin Liska <mliska@suse.cz>
Mon, 8 Mar 2021 13:54:18 +0000 (14:54 +0100)
committerMartin Liska <mliska@suse.cz>
Wed, 21 Apr 2021 14:13:43 +0000 (16:13 +0200)
gcc/ChangeLog:

* config/i386/i386-options.c (TARGET_EXPLICIT_NO_SAHF_P):
Define.
(SET_TARGET_NO_SAHF): Likewise.
(TARGET_EXPLICIT_PREFETCH_SSE_P): Likewise.
(SET_TARGET_PREFETCH_SSE): Likewise.
(TARGET_EXPLICIT_NO_TUNE_P): Likewise.
(SET_TARGET_NO_TUNE): Likewise.
(TARGET_EXPLICIT_NO_80387_P): Likewise.
(SET_TARGET_NO_80387): Likewise.
(DEF_PTA): New.
* config/i386/i386.h (TARGET_*): Remove.
* opth-gen.awk: Generate new used macros.

gcc/config/i386/i386-options.c
gcc/config/i386/i386.h
gcc/opth-gen.awk

index 65bb0bb..2a12228 100644 (file)
@@ -2096,285 +2096,40 @@ ix86_option_override_internal (bool main_args_p,
        else
          ix86_tune = PROCESSOR_GENERIC;
 
-       if (((processor_alias_table[i].flags & PTA_MMX) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_MMX))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_MMX;
-       if (((processor_alias_table[i].flags & PTA_3DNOW) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_3DNOW))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_3DNOW;
-       if (((processor_alias_table[i].flags & PTA_3DNOW_A) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_3DNOW_A))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_A;
-       if (((processor_alias_table[i].flags & PTA_SSE) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE;
-       if (((processor_alias_table[i].flags & PTA_SSE2) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE2))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE2;
-       if (((processor_alias_table[i].flags & PTA_SSE3) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE3))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE3;
-       if (((processor_alias_table[i].flags & PTA_SSSE3) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SSSE3))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSSE3;
-       if (((processor_alias_table[i].flags & PTA_SSE4_1) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE4_1))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1;
-       if (((processor_alias_table[i].flags & PTA_SSE4_2) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE4_2))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_2;
-       if (((processor_alias_table[i].flags & PTA_AVX) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX;
-       if (((processor_alias_table[i].flags & PTA_AVX2) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX2))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2;
-       if (((processor_alias_table[i].flags & PTA_FMA) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_FMA))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FMA;
-       if (((processor_alias_table[i].flags & PTA_SSE4A) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE4A))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4A;
-       if (((processor_alias_table[i].flags & PTA_FMA4) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_FMA4))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FMA4;
-       if (((processor_alias_table[i].flags & PTA_XOP) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_XOP))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XOP;
-       if (((processor_alias_table[i].flags & PTA_LWP) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_LWP))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_LWP;
+       /* Enable PTA flags that are enabled by default by a -march option.  */
+#define TARGET_EXPLICIT_NO_SAHF_P(opts) (false)
+#define SET_TARGET_NO_SAHF(opts) {}
+#define TARGET_EXPLICIT_PREFETCH_SSE_P(opts) (false)
+#define SET_TARGET_PREFETCH_SSE(opts) {}
+#define TARGET_EXPLICIT_NO_TUNE_P(opts) (false)
+#define SET_TARGET_NO_TUNE(opts) {}
+#define TARGET_EXPLICIT_NO_80387_P(opts) (false)
+#define SET_TARGET_NO_80387(opts) {}
+
+#define DEF_PTA(NAME) \
+       if (((processor_alias_table[i].flags & PTA_ ## NAME) != 0) \
+           && PTA_ ## NAME != PTA_64BIT \
+           && !TARGET_EXPLICIT_ ## NAME ## _P (opts)) \
+         SET_TARGET_ ## NAME (opts);
+#include "i386-isa.def"
+#undef DEF_PTA
+
+
+       if (!(TARGET_64BIT_P (opts->x_ix86_isa_flags)
+            && ((processor_alias_table[i].flags & PTA_NO_SAHF) != 0))
+          && !TARGET_EXPLICIT_SAHF_P (opts))
+           SET_TARGET_SAHF (opts);
+
        if (((processor_alias_table[i].flags & PTA_ABM) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_ABM))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_ABM;
-       if (((processor_alias_table[i].flags & PTA_BMI) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_BMI))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_BMI;
-       if (((processor_alias_table[i].flags & (PTA_LZCNT | PTA_ABM)) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_LZCNT))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_LZCNT;
-       if (((processor_alias_table[i].flags & PTA_TBM) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_TBM))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_TBM;
-       if (((processor_alias_table[i].flags & PTA_BMI2) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_BMI2))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_BMI2;
-       if (((processor_alias_table[i].flags & PTA_CX16) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_CX16))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CX16;
-       if (((processor_alias_table[i].flags & (PTA_POPCNT | PTA_ABM)) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_POPCNT))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_POPCNT;
-       if (!(TARGET_64BIT_P (opts->x_ix86_isa_flags)
-           && ((processor_alias_table[i].flags & PTA_NO_SAHF) != 0))
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SAHF))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SAHF;
-       if (((processor_alias_table[i].flags & PTA_MOVBE) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_MOVBE))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVBE;
-       if (((processor_alias_table[i].flags & PTA_AES) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AES))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AES;
-       if (((processor_alias_table[i].flags & PTA_SHA) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_SHA))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SHA;
-       if (((processor_alias_table[i].flags & PTA_PCLMUL) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PCLMUL))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PCLMUL;
-       if (((processor_alias_table[i].flags & PTA_FSGSBASE) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_FSGSBASE))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FSGSBASE;
-       if (((processor_alias_table[i].flags & PTA_RDRND) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_RDRND))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RDRND;
-       if (((processor_alias_table[i].flags & PTA_F16C) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_F16C))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_F16C;
-       if (((processor_alias_table[i].flags & PTA_RTM) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_RTM))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RTM;
-       if (((processor_alias_table[i].flags & PTA_HLE) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_HLE))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_HLE;
-       if (((processor_alias_table[i].flags & PTA_PRFCHW) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PRFCHW))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PRFCHW;
-       if (((processor_alias_table[i].flags & PTA_RDSEED) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_RDSEED))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RDSEED;
-       if (((processor_alias_table[i].flags & PTA_ADX) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_ADX))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_ADX;
-       if (((processor_alias_table[i].flags & PTA_FXSR) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_FXSR))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FXSR;
-       if (((processor_alias_table[i].flags & PTA_XSAVE) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_XSAVE))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVE;
-       if (((processor_alias_table[i].flags & PTA_XSAVEOPT) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_XSAVEOPT))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVEOPT;
-       if (((processor_alias_table[i].flags & PTA_AVX512F) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512F))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F;
-       if (((processor_alias_table[i].flags & PTA_AVX512ER) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512ER))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512ER;
-       if (((processor_alias_table[i].flags & PTA_AVX512PF) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512PF))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512PF;
-       if (((processor_alias_table[i].flags & PTA_AVX512CD) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512CD))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512CD;
-       if (((processor_alias_table[i].flags & PTA_PREFETCHWT1) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PREFETCHWT1))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PREFETCHWT1;
-       if (((processor_alias_table[i].flags & PTA_CLWB) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_CLWB))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CLWB;
-       if (((processor_alias_table[i].flags & PTA_CLFLUSHOPT) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_CLFLUSHOPT))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CLFLUSHOPT;
-       if (((processor_alias_table[i].flags & PTA_CLZERO) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_CLZERO))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CLZERO;
-       if (((processor_alias_table[i].flags & PTA_XSAVEC) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_XSAVEC))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVEC;
-       if (((processor_alias_table[i].flags & PTA_XSAVES) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_XSAVES))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVES;
-       if (((processor_alias_table[i].flags & PTA_AVX512DQ) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512DQ))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512DQ;
-       if (((processor_alias_table[i].flags & PTA_AVX512BW) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512BW))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BW;
-       if (((processor_alias_table[i].flags & PTA_AVX512VL) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512VL))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VL;
-       if (((processor_alias_table[i].flags & PTA_AVX512VBMI) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512VBMI))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VBMI;
-       if (((processor_alias_table[i].flags & PTA_AVX512IFMA) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512IFMA))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512IFMA;
-       if (((processor_alias_table[i].flags & PTA_AVX512VNNI) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_AVX512VNNI))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VNNI;
-       if (((processor_alias_table[i].flags & PTA_GFNI) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_GFNI))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_GFNI;
-       if (((processor_alias_table[i].flags & PTA_AVX512VBMI2) != 0)
-           && !(opts->x_ix86_isa_flags_explicit
-           & OPTION_MASK_ISA_AVX512VBMI2))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VBMI2;
-       if (((processor_alias_table[i].flags & PTA_VPCLMULQDQ) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_VPCLMULQDQ))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_VPCLMULQDQ;
-       if (((processor_alias_table[i].flags & PTA_AVX512BITALG) != 0)
-           && !(opts->x_ix86_isa_flags_explicit
-           & OPTION_MASK_ISA_AVX512BITALG))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BITALG;
-
-       if (((processor_alias_table[i].flags & PTA_AVX512VP2INTERSECT) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AVX512VP2INTERSECT))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512VP2INTERSECT;
-       if (((processor_alias_table[i].flags & PTA_AVX5124VNNIW) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AVX5124VNNIW))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX5124VNNIW;
-       if (((processor_alias_table[i].flags & PTA_AVX5124FMAPS) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AVX5124FMAPS))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX5124FMAPS;
-       if (((processor_alias_table[i].flags & PTA_AVX512VPOPCNTDQ) != 0)
-           && !(opts->x_ix86_isa_flags_explicit
-                & OPTION_MASK_ISA_AVX512VPOPCNTDQ))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ;
-       if (((processor_alias_table[i].flags & PTA_AVX512BF16) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AVX512BF16))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512BF16;
-       if (((processor_alias_table[i].flags & PTA_AMX_TILE) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AMX_TILE))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_TILE;
-       if (((processor_alias_table[i].flags & PTA_AMX_INT8) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AMX_INT8))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_INT8;
-       if (((processor_alias_table[i].flags & PTA_AMX_BF16) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AMX_BF16))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_BF16;
-       if (((processor_alias_table[i].flags & PTA_AVXVNNI) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit
-                & OPTION_MASK_ISA2_AVXVNNI))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXVNNI;
-        if (((processor_alias_table[i].flags & PTA_MOVDIRI) != 0)
-            && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_MOVDIRI))
-          opts->x_ix86_isa_flags |= OPTION_MASK_ISA_MOVDIRI;
-        if (((processor_alias_table[i].flags & PTA_MOVDIR64B) != 0)
-            && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_MOVDIR64B))
-          opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVDIR64B;
-       if (((processor_alias_table[i].flags & PTA_SGX) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_SGX))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SGX;
-       if (((processor_alias_table[i].flags & PTA_VAES) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_VAES))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_VAES;
-       if (((processor_alias_table[i].flags & PTA_RDPID) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_RDPID))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_RDPID;
-       if (((processor_alias_table[i].flags & PTA_PCONFIG) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_PCONFIG))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PCONFIG;
-       if (((processor_alias_table[i].flags & PTA_WBNOINVD) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_WBNOINVD))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WBNOINVD;
-       if (((processor_alias_table[i].flags & PTA_PTWRITE) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_PTWRITE))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PTWRITE;
-       if (((processor_alias_table[i].flags & PTA_WAITPKG) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_WAITPKG))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WAITPKG;
-       if (((processor_alias_table[i].flags & PTA_ENQCMD) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_ENQCMD))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_ENQCMD;
-       if (((processor_alias_table[i].flags & PTA_CLDEMOTE) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_CLDEMOTE))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CLDEMOTE;
-       if (((processor_alias_table[i].flags & PTA_SERIALIZE) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_SERIALIZE))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SERIALIZE;
-       if (((processor_alias_table[i].flags & PTA_TSXLDTRK) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_TSXLDTRK))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_TSXLDTRK;
-       if (((processor_alias_table[i].flags & PTA_KL) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_KL))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_KL;
-       if (((processor_alias_table[i].flags & PTA_WIDEKL) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_WIDEKL))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WIDEKL;
+           && !TARGET_EXPLICIT_ABM_P (opts))
+         {
+           SET_TARGET_LZCNT (opts);
+           SET_TARGET_POPCNT (opts);
+         }
 
        if ((processor_alias_table[i].flags
           & (PTA_PREFETCH_SSE | PTA_SSE)) != 0)
          ix86_prefetch_sse = true;
-       if (((processor_alias_table[i].flags & PTA_MWAITX) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_MWAITX))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MWAITX;
-       if (((processor_alias_table[i].flags & PTA_PKU) != 0)
-           && !(opts->x_ix86_isa_flags_explicit & OPTION_MASK_ISA_PKU))
-         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PKU;
-       if (((processor_alias_table[i].flags & PTA_UINTR) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_UINTR))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_UINTR;
-       if (((processor_alias_table[i].flags & PTA_HRESET) != 0)
-           && !(opts->x_ix86_isa_flags2_explicit & OPTION_MASK_ISA2_HRESET))
-         opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_HRESET;
-
 
        /* Don't enable x87 instructions if only general registers are
           allowed by target("general-regs-only") function attribute or
index d2e6751..177c2b6 100644 (file)
@@ -39,194 +39,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 /* Redefines for option macros.  */
 
-#define TARGET_64BIT   TARGET_ISA_64BIT
-#define TARGET_64BIT_P(x)      TARGET_ISA_64BIT_P(x)
-#define TARGET_MMX     TARGET_ISA_MMX
-#define TARGET_MMX_P(x)        TARGET_ISA_MMX_P(x)
-#define TARGET_3DNOW   TARGET_ISA_3DNOW
-#define TARGET_3DNOW_P(x)      TARGET_ISA_3DNOW_P(x)
-#define TARGET_3DNOW_A TARGET_ISA_3DNOW_A
-#define TARGET_3DNOW_A_P(x)    TARGET_ISA_3DNOW_A_P(x)
-#define TARGET_SSE     TARGET_ISA_SSE
-#define TARGET_SSE_P(x)        TARGET_ISA_SSE_P(x)
-#define TARGET_SSE2    TARGET_ISA_SSE2
-#define TARGET_SSE2_P(x)       TARGET_ISA_SSE2_P(x)
-#define TARGET_SSE3    TARGET_ISA_SSE3
-#define TARGET_SSE3_P(x)       TARGET_ISA_SSE3_P(x)
-#define TARGET_SSSE3   TARGET_ISA_SSSE3
-#define TARGET_SSSE3_P(x)      TARGET_ISA_SSSE3_P(x)
-#define TARGET_SSE4_1  TARGET_ISA_SSE4_1
-#define TARGET_SSE4_1_P(x)     TARGET_ISA_SSE4_1_P(x)
-#define TARGET_SSE4_2  TARGET_ISA_SSE4_2
-#define TARGET_SSE4_2_P(x)     TARGET_ISA_SSE4_2_P(x)
-#define TARGET_AVX     TARGET_ISA_AVX
-#define TARGET_AVX_P(x)        TARGET_ISA_AVX_P(x)
-#define TARGET_AVX2    TARGET_ISA_AVX2
-#define TARGET_AVX2_P(x)       TARGET_ISA_AVX2_P(x)
-#define TARGET_AVX512F TARGET_ISA_AVX512F
-#define TARGET_AVX512F_P(x)    TARGET_ISA_AVX512F_P(x)
-#define TARGET_AVX512PF        TARGET_ISA_AVX512PF
-#define TARGET_AVX512PF_P(x)   TARGET_ISA_AVX512PF_P(x)
-#define TARGET_AVX512ER        TARGET_ISA_AVX512ER
-#define TARGET_AVX512ER_P(x)   TARGET_ISA_AVX512ER_P(x)
-#define TARGET_AVX512CD        TARGET_ISA_AVX512CD
-#define TARGET_AVX512CD_P(x)   TARGET_ISA_AVX512CD_P(x)
-#define TARGET_AVX512DQ        TARGET_ISA_AVX512DQ
-#define TARGET_AVX512DQ_P(x)   TARGET_ISA_AVX512DQ_P(x)
-#define TARGET_AVX512BW        TARGET_ISA_AVX512BW
-#define TARGET_AVX512BW_P(x)   TARGET_ISA_AVX512BW_P(x)
-#define TARGET_AVX512VL        TARGET_ISA_AVX512VL
-#define TARGET_AVX512VL_P(x)   TARGET_ISA_AVX512VL_P(x)
-#define TARGET_AVX512VBMI      TARGET_ISA_AVX512VBMI
-#define TARGET_AVX512VBMI_P(x) TARGET_ISA_AVX512VBMI_P(x)
-#define TARGET_AVX512IFMA      TARGET_ISA_AVX512IFMA
-#define TARGET_AVX512IFMA_P(x) TARGET_ISA_AVX512IFMA_P(x)
-#define TARGET_AVX5124FMAPS    TARGET_ISA2_AVX5124FMAPS
-#define TARGET_AVX5124FMAPS_P(x) TARGET_ISA2_AVX5124FMAPS_P(x)
-#define TARGET_AVX5124VNNIW    TARGET_ISA2_AVX5124VNNIW
-#define TARGET_AVX5124VNNIW_P(x) TARGET_ISA2_AVX5124VNNIW_P(x)
-#define TARGET_AVX512VBMI2     TARGET_ISA_AVX512VBMI2
-#define TARGET_AVX512VBMI2_P(x) TARGET_ISA_AVX512VBMI2_P(x)
-#define TARGET_AVX512VPOPCNTDQ TARGET_ISA_AVX512VPOPCNTDQ
-#define TARGET_AVX512VPOPCNTDQ_P(x) TARGET_ISA_AVX512VPOPCNTDQ_P(x)
-#define TARGET_AVX512VNNI      TARGET_ISA_AVX512VNNI
-#define TARGET_AVX512VNNI_P(x) TARGET_ISA_AVX512VNNI_P(x)
-#define TARGET_AVX512BITALG    TARGET_ISA_AVX512BITALG
-#define TARGET_AVX512BITALG_P(x) TARGET_ISA_AVX512BITALG_P(x)
-#define TARGET_AVX512VP2INTERSECT      TARGET_ISA2_AVX512VP2INTERSECT
-#define TARGET_AVX512VP2INTERSECT_P(x) TARGET_ISA2_AVX512VP2INTERSECT_P(x)
-#define TARGET_FMA     TARGET_ISA_FMA
-#define TARGET_FMA_P(x)        TARGET_ISA_FMA_P(x)
-#define TARGET_SSE4A   TARGET_ISA_SSE4A
-#define TARGET_SSE4A_P(x)      TARGET_ISA_SSE4A_P(x)
-#define TARGET_FMA4    TARGET_ISA_FMA4
-#define TARGET_FMA4_P(x)       TARGET_ISA_FMA4_P(x)
-#define TARGET_XOP     TARGET_ISA_XOP
-#define TARGET_XOP_P(x)        TARGET_ISA_XOP_P(x)
-#define TARGET_LWP     TARGET_ISA_LWP
-#define TARGET_LWP_P(x)        TARGET_ISA_LWP_P(x)
-#define TARGET_ABM     TARGET_ISA_ABM
-#define TARGET_ABM_P(x)        TARGET_ISA_ABM_P(x)
-#define TARGET_PCONFIG TARGET_ISA2_PCONFIG
-#define TARGET_PCONFIG_P(x)    TARGET_ISA2_PCONFIG_P(x)
-#define TARGET_WBNOINVD        TARGET_ISA2_WBNOINVD
-#define TARGET_WBNOINVD_P(x)   TARGET_ISA2_WBNOINVD_P(x)
-#define TARGET_SGX     TARGET_ISA2_SGX
-#define TARGET_SGX_P(x)        TARGET_ISA2_SGX_P(x)
-#define TARGET_RDPID   TARGET_ISA2_RDPID
-#define TARGET_RDPID_P(x)      TARGET_ISA2_RDPID_P(x)
-#define TARGET_GFNI    TARGET_ISA_GFNI
-#define TARGET_GFNI_P(x)       TARGET_ISA_GFNI_P(x)
-#define TARGET_VAES    TARGET_ISA2_VAES
-#define TARGET_VAES_P(x)       TARGET_ISA2_VAES_P(x)
-#define TARGET_VPCLMULQDQ      TARGET_ISA_VPCLMULQDQ
-#define TARGET_VPCLMULQDQ_P(x) TARGET_ISA_VPCLMULQDQ_P(x)
-#define TARGET_BMI     TARGET_ISA_BMI
-#define TARGET_BMI_P(x)        TARGET_ISA_BMI_P(x)
-#define TARGET_BMI2    TARGET_ISA_BMI2
-#define TARGET_BMI2_P(x)       TARGET_ISA_BMI2_P(x)
-#define TARGET_LZCNT   TARGET_ISA_LZCNT
-#define TARGET_LZCNT_P(x)      TARGET_ISA_LZCNT_P(x)
-#define TARGET_TBM     TARGET_ISA_TBM
-#define TARGET_TBM_P(x)        TARGET_ISA_TBM_P(x)
-#define TARGET_POPCNT  TARGET_ISA_POPCNT
-#define TARGET_POPCNT_P(x)     TARGET_ISA_POPCNT_P(x)
-#define TARGET_SAHF    TARGET_ISA_SAHF
-#define TARGET_SAHF_P(x)       TARGET_ISA_SAHF_P(x)
-#define TARGET_MOVBE   TARGET_ISA2_MOVBE
-#define TARGET_MOVBE_P(x)      TARGET_ISA2_MOVBE_P(x)
-#define TARGET_CRC32   TARGET_ISA_CRC32
-#define TARGET_CRC32_P(x)      TARGET_ISA_CRC32_P(x)
-#define TARGET_AES     TARGET_ISA_AES
-#define TARGET_AES_P(x)        TARGET_ISA_AES_P(x)
-#define TARGET_SHA     TARGET_ISA_SHA
-#define TARGET_SHA_P(x)        TARGET_ISA_SHA_P(x)
-#define TARGET_CLFLUSHOPT      TARGET_ISA_CLFLUSHOPT
-#define TARGET_CLFLUSHOPT_P(x) TARGET_ISA_CLFLUSHOPT_P(x)
-#define TARGET_CLZERO  TARGET_ISA2_CLZERO
-#define TARGET_CLZERO_P(x)     TARGET_ISA2_CLZERO_P(x)
-#define TARGET_XSAVEC  TARGET_ISA_XSAVEC
-#define TARGET_XSAVEC_P(x)     TARGET_ISA_XSAVEC_P(x)
-#define TARGET_XSAVES  TARGET_ISA_XSAVES
-#define TARGET_XSAVES_P(x)     TARGET_ISA_XSAVES_P(x)
-#define TARGET_PCLMUL  TARGET_ISA_PCLMUL
-#define TARGET_PCLMUL_P(x)     TARGET_ISA_PCLMUL_P(x)
-#define TARGET_CMPXCHG16B      TARGET_ISA2_CX16
-#define TARGET_CMPXCHG16B_P(x) TARGET_ISA2_CX16_P(x)
-#define TARGET_FSGSBASE        TARGET_ISA_FSGSBASE
-#define TARGET_FSGSBASE_P(x)   TARGET_ISA_FSGSBASE_P(x)
-#define TARGET_RDRND   TARGET_ISA_RDRND
-#define TARGET_RDRND_P(x)      TARGET_ISA_RDRND_P(x)
-#define TARGET_F16C    TARGET_ISA_F16C
-#define TARGET_F16C_P(x)       TARGET_ISA_F16C_P(x)
-#define TARGET_RTM     TARGET_ISA_RTM
-#define TARGET_RTM_P(x)        TARGET_ISA_RTM_P(x)
-#define TARGET_HLE     TARGET_ISA2_HLE
-#define TARGET_HLE_P(x)        TARGET_ISA2_HLE_P(x)
-#define TARGET_RDSEED  TARGET_ISA_RDSEED
-#define TARGET_RDSEED_P(x)     TARGET_ISA_RDSEED_P(x)
-#define TARGET_PRFCHW  TARGET_ISA_PRFCHW
-#define TARGET_PRFCHW_P(x)     TARGET_ISA_PRFCHW_P(x)
-#define TARGET_ADX     TARGET_ISA_ADX
-#define TARGET_ADX_P(x)        TARGET_ISA_ADX_P(x)
-#define TARGET_FXSR    TARGET_ISA_FXSR
-#define TARGET_FXSR_P(x)       TARGET_ISA_FXSR_P(x)
-#define TARGET_XSAVE   TARGET_ISA_XSAVE
-#define TARGET_XSAVE_P(x)      TARGET_ISA_XSAVE_P(x)
-#define TARGET_XSAVEOPT        TARGET_ISA_XSAVEOPT
-#define TARGET_XSAVEOPT_P(x)   TARGET_ISA_XSAVEOPT_P(x)
-#define TARGET_PREFETCHWT1     TARGET_ISA_PREFETCHWT1
-#define TARGET_PREFETCHWT1_P(x)        TARGET_ISA_PREFETCHWT1_P(x)
-#define TARGET_CLWB    TARGET_ISA_CLWB
-#define TARGET_CLWB_P(x)       TARGET_ISA_CLWB_P(x)
-#define TARGET_MWAITX  TARGET_ISA2_MWAITX
-#define TARGET_MWAITX_P(x)     TARGET_ISA2_MWAITX_P(x)
-#define TARGET_MWAIT   TARGET_ISA2_MWAIT
-#define TARGET_MWAIT_P(x)      TARGET_ISA2_MWAIT_P(x)
-#define TARGET_PKU     TARGET_ISA_PKU
-#define TARGET_PKU_P(x)        TARGET_ISA_PKU_P(x)
-#define TARGET_SHSTK   TARGET_ISA_SHSTK
-#define TARGET_SHSTK_P(x)      TARGET_ISA_SHSTK_P(x)
-#define TARGET_MOVDIRI TARGET_ISA_MOVDIRI
-#define TARGET_MOVDIRI_P(x) TARGET_ISA_MOVDIRI_P(x)
-#define TARGET_MOVDIR64B       TARGET_ISA2_MOVDIR64B
-#define TARGET_MOVDIR64B_P(x) TARGET_ISA2_MOVDIR64B_P(x)
-#define TARGET_WAITPKG TARGET_ISA2_WAITPKG
-#define TARGET_WAITPKG_P(x)    TARGET_ISA2_WAITPKG_P(x)
-#define TARGET_CLDEMOTE        TARGET_ISA2_CLDEMOTE
-#define TARGET_CLDEMOTE_P(x) TARGET_ISA2_CLDEMOTE_P(x)
-#define TARGET_PTWRITE TARGET_ISA2_PTWRITE
-#define TARGET_PTWRITE_P(x)    TARGET_ISA2_PTWRITE_P(x)
-#define TARGET_AVX512BF16      TARGET_ISA2_AVX512BF16
-#define TARGET_AVX512BF16_P(x) TARGET_ISA2_AVX512BF16_P(x)
-#define TARGET_ENQCMD  TARGET_ISA2_ENQCMD
-#define TARGET_ENQCMD_P(x) TARGET_ISA2_ENQCMD_P(x)
-#define TARGET_SERIALIZE       TARGET_ISA2_SERIALIZE
-#define TARGET_SERIALIZE_P(x) TARGET_ISA2_SERIALIZE_P(x)
-#define TARGET_TSXLDTRK        TARGET_ISA2_TSXLDTRK
-#define TARGET_TSXLDTRK_P(x) TARGET_ISA2_TSXLDTRK_P(x)
-#define TARGET_AMX_TILE TARGET_ISA2_AMX_TILE
-#define TARGET_AMX_TILE_P(x) TARGET_ISA2_AMX_TILE(x)
-#define TARGET_AMX_INT8 TARGET_ISA2_AMX_INT8
-#define TARGET_AMX_INT8_P(x) TARGET_ISA2_AMX_INT8(x)
-#define TARGET_AMX_BF16 TARGET_ISA2_AMX_BF16
-#define TARGET_AMX_BF16_P(x) TARGET_ISA2_AMX_BF16(x)
-#define TARGET_UINTR   TARGET_ISA2_UINTR
-#define TARGET_UINTR_P(x) TARGET_ISA2_UINTR_P(x)
-#define TARGET_HRESET      TARGET_ISA2_HRESET
-#define TARGET_HRESET_P(x)  TARGET_ISA2_HRESET_P(x)
-#define TARGET_KL      TARGET_ISA2_KL
-#define TARGET_KL_P(x) TARGET_ISA2_KL_P(x)
-#define TARGET_WIDEKL  TARGET_ISA2_WIDEKL
-#define TARGET_WIDEKL_P(x) TARGET_ISA2_WIDEKL_P(x)
-#define TARGET_AVXVNNI TARGET_ISA2_AVXVNNI
-#define TARGET_AVXVNNI_P(x)    TARGET_ISA2_AVXVNNI_P(x)
-
-#define TARGET_LP64    TARGET_ABI_64
+#define TARGET_CMPXCHG16B      TARGET_CX16
+#define TARGET_CMPXCHG16B_P(x) TARGET_CX16_P(x)
+
+#define TARGET_LP64            TARGET_ABI_64
 #define TARGET_LP64_P(x)       TARGET_ABI_64_P(x)
-#define TARGET_X32     TARGET_ABI_X32
-#define TARGET_X32_P(x)        TARGET_ABI_X32_P(x)
-#define TARGET_16BIT   TARGET_CODE16
+#define TARGET_X32             TARGET_ABI_X32
+#define TARGET_X32_P(x)                TARGET_ABI_X32_P(x)
+#define TARGET_16BIT           TARGET_CODE16
 #define TARGET_16BIT_P(x)      TARGET_CODE16_P(x)
 
 #define TARGET_MMX_WITH_SSE    (TARGET_64BIT && TARGET_SSE2)
index 0491525..32475fd 100644 (file)
@@ -439,10 +439,17 @@ for (i = 0; i < n_opts; i++) {
                        mask = "MASK_"
                        extra_mask_macros[name] = 1
                }
+               original_name = name
+               gsub("ISA_", "", name)
+               gsub("ISA2_", "", name)
+               print "/* " original_name " mask */"
                print "#define TARGET_" name \
-                     " ((" vname " & " mask name ") != 0)"
+                     " ((" vname " & " mask original_name ") != 0)"
                print "#define TARGET_" name "_P(" vname ")" \
-                     " (((" vname ") & " mask name ") != 0)"
+                     " (((" vname ") & " mask original_name ") != 0)"
+               print "#define TARGET_EXPLICIT_" name "_P(opts)" \
+                     " ((opts->x_" vname "_explicit & " mask original_name ") != 0)"
+               print "#define SET_TARGET_" name "(opts) opts->x_" vname " |= " mask original_name
        }
 }
 for (i = 0; i < n_extra_masks; i++) {