public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/marxin/heads/i386-option-cleanup)] Overhaul in isa_flags and handling it.
@ 2021-03-09 8:30 Martin Liska
0 siblings, 0 replies; 6+ messages in thread
From: Martin Liska @ 2021-03-09 8:30 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:db20daca5c08dfe4f55caec99c3aa3ccd76bec93
commit db20daca5c08dfe4f55caec99c3aa3ccd76bec93
Author: Martin Liska <mliska@suse.cz>
Date: Mon Mar 8 14:54:18 2021 +0100
Overhaul in isa_flags and handling it.
Diff:
---
gcc/config/i386/i386-options.c | 303 ++++-------------------------------------
gcc/config/i386/i386.h | 192 +-------------------------
gcc/opth-gen.awk | 11 +-
3 files changed, 45 insertions(+), 461 deletions(-)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 0142618fa08..2c90c8e0306 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -2080,285 +2080,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.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
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 47e67cc6dda..51009b2fc92 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -39,192 +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_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)
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 0491525da94..32475fd7eb4 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -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++) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [gcc(refs/users/marxin/heads/i386-option-cleanup)] Overhaul in isa_flags and handling it.
@ 2021-04-21 11:44 Martin Liska
0 siblings, 0 replies; 6+ messages in thread
From: Martin Liska @ 2021-04-21 11:44 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:c64af8b4e2720337fa9f82861a1a3129734adc69
commit c64af8b4e2720337fa9f82861a1a3129734adc69
Author: Martin Liska <mliska@suse.cz>
Date: Mon Mar 8 14:54:18 2021 +0100
Overhaul in isa_flags and handling it.
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.
Diff:
---
gcc/config/i386/i386-options.c | 303 ++++-------------------------------------
gcc/config/i386/i386.h | 192 +-------------------------
gcc/opth-gen.awk | 11 +-
3 files changed, 45 insertions(+), 461 deletions(-)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 154234a6a44..06e2148669b 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -2094,285 +2094,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
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index fbb1bc812bc..d7143a81648 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -39,192 +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_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)
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 0491525da94..32475fd7eb4 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -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++) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [gcc(refs/users/marxin/heads/i386-option-cleanup)] Overhaul in isa_flags and handling it.
@ 2021-04-21 11:40 Martin Liska
0 siblings, 0 replies; 6+ messages in thread
From: Martin Liska @ 2021-04-21 11:40 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:5057244121a2ff0090d3cb9b507ce788715eb9d0
commit 5057244121a2ff0090d3cb9b507ce788715eb9d0
Author: Martin Liska <mliska@suse.cz>
Date: Mon Mar 8 14:54:18 2021 +0100
Overhaul in isa_flags and handling it.
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.
Diff:
---
gcc/config/i386/i386-options.c | 303 ++++-------------------------------------
gcc/config/i386/i386.h | 192 +-------------------------
gcc/opth-gen.awk | 11 +-
3 files changed, 45 insertions(+), 461 deletions(-)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 154234a6a44..2aef59d962c 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -2094,285 +2094,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.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
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index fbb1bc812bc..d7143a81648 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -39,192 +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_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)
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 0491525da94..32475fd7eb4 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -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++) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [gcc(refs/users/marxin/heads/i386-option-cleanup)] Overhaul in isa_flags and handling it.
@ 2021-03-18 16:17 Martin Liska
0 siblings, 0 replies; 6+ messages in thread
From: Martin Liska @ 2021-03-18 16:17 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:411cd3d3e9357cea3b3e4ef80c8d377eb24a3163
commit 411cd3d3e9357cea3b3e4ef80c8d377eb24a3163
Author: Martin Liska <mliska@suse.cz>
Date: Mon Mar 8 14:54:18 2021 +0100
Overhaul in isa_flags and handling it.
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.
Diff:
---
gcc/config/i386/i386-options.c | 303 ++++-------------------------------------
gcc/config/i386/i386.h | 192 +-------------------------
gcc/opth-gen.awk | 11 +-
3 files changed, 45 insertions(+), 461 deletions(-)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 0d0b26a189f..797b2fa94ca 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -2080,285 +2080,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.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
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 8897b5cda3f..583ba95f215 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -39,192 +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_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)
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 0491525da94..32475fd7eb4 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -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++) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [gcc(refs/users/marxin/heads/i386-option-cleanup)] Overhaul in isa_flags and handling it.
@ 2021-03-08 15:02 Martin Liska
0 siblings, 0 replies; 6+ messages in thread
From: Martin Liska @ 2021-03-08 15:02 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:c831912e5c905de1ffa7fa99a2d2459f340e9f07
commit c831912e5c905de1ffa7fa99a2d2459f340e9f07
Author: Martin Liska <mliska@suse.cz>
Date: Mon Mar 8 14:54:18 2021 +0100
Overhaul in isa_flags and handling it.
Diff:
---
gcc/config/i386/i386-options.c | 303 ++++-------------------------------------
gcc/config/i386/i386.h | 192 +-------------------------
gcc/opth-gen.awk | 11 +-
3 files changed, 45 insertions(+), 461 deletions(-)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 0142618fa08..2c90c8e0306 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -2080,285 +2080,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.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
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 47e67cc6dda..51009b2fc92 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -39,192 +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_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)
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 0491525da94..32475fd7eb4 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -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++) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* [gcc(refs/users/marxin/heads/i386-option-cleanup)] Overhaul in isa_flags and handling it.
@ 2021-03-08 14:09 Martin Liska
0 siblings, 0 replies; 6+ messages in thread
From: Martin Liska @ 2021-03-08 14:09 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:70202a86abbc027f7a03be28a53d82ba5e54e07b
commit 70202a86abbc027f7a03be28a53d82ba5e54e07b
Author: Martin Liska <mliska@suse.cz>
Date: Mon Mar 8 14:54:18 2021 +0100
Overhaul in isa_flags and handling it.
Diff:
---
gcc/config/i386/i386-options.c | 303 ++++-------------------------------------
gcc/config/i386/i386.h | 192 +-------------------------
gcc/opth-gen.awk | 11 +-
3 files changed, 45 insertions(+), 461 deletions(-)
diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c
index 0142618fa08..2c90c8e0306 100644
--- a/gcc/config/i386/i386-options.c
+++ b/gcc/config/i386/i386-options.c
@@ -2080,285 +2080,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.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
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 7789eccb2bc..2b2db18bb55 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -39,192 +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_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)
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index 0491525da94..32475fd7eb4 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -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++) {
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-04-21 11:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-09 8:30 [gcc(refs/users/marxin/heads/i386-option-cleanup)] Overhaul in isa_flags and handling it Martin Liska
-- strict thread matches above, loose matches on Subject: below --
2021-04-21 11:44 Martin Liska
2021-04-21 11:40 Martin Liska
2021-03-18 16:17 Martin Liska
2021-03-08 15:02 Martin Liska
2021-03-08 14:09 Martin Liska
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).