diff options
author | Martin Liska <mliska@suse.cz> | 2021-03-08 13:53:09 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2021-04-21 16:13:41 +0200 |
commit | 14431e66b35e69a334a35df4c157a033e23d0999 (patch) | |
tree | ef96c2f34a2671ee867d1f2c98153a9ae060f5b6 /gcc | |
parent | fe11882ae34c49f6214f93867783ed1332f35f0f (diff) | |
download | gcc-14431e66b35e69a334a35df4c157a033e23d0999.zip gcc-14431e66b35e69a334a35df4c157a033e23d0999.tar.gz gcc-14431e66b35e69a334a35df4c157a033e23d0999.tar.bz2 |
Generate PTA features from a def file.
gcc/ChangeLog:
* config/i386/i386.h (PTA_*): Remove.
(enum pta_flag): New.
(DEF_PTA): Generate PTA_* values from i386-isa.def.
* config/i386/i386-isa.def: New file.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i386/i386-isa.def | 110 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 109 |
2 files changed, 128 insertions, 91 deletions
diff --git a/gcc/config/i386/i386-isa.def b/gcc/config/i386/i386-isa.def new file mode 100644 index 0000000..a0d46cb --- /dev/null +++ b/gcc/config/i386/i386-isa.def @@ -0,0 +1,110 @@ +/* Definition for processor table alias flags. + Copyright (C) 2001-2021 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +DEF_PTA(3DNOW) +DEF_PTA(3DNOW_A) +DEF_PTA(64BIT) +DEF_PTA(ABM) +DEF_PTA(AES) +DEF_PTA(AVX) +DEF_PTA(BMI) +DEF_PTA(CX16) +DEF_PTA(F16C) +DEF_PTA(FMA) +DEF_PTA(FMA4) +DEF_PTA(FSGSBASE) +DEF_PTA(LWP) +DEF_PTA(LZCNT) +DEF_PTA(MMX) +DEF_PTA(MOVBE) +DEF_PTA(NO_SAHF) +DEF_PTA(PCLMUL) +DEF_PTA(POPCNT) +DEF_PTA(PREFETCH_SSE) +DEF_PTA(RDRND) +DEF_PTA(SSE) +DEF_PTA(SSE2) +DEF_PTA(SSE3) +DEF_PTA(SSE4_1) +DEF_PTA(SSE4_2) +DEF_PTA(SSE4A) +DEF_PTA(SSSE3) +DEF_PTA(TBM) +DEF_PTA(XOP) +DEF_PTA(AVX2) +DEF_PTA(BMI2) +DEF_PTA(RTM) +DEF_PTA(HLE) +DEF_PTA(PRFCHW) +DEF_PTA(RDSEED) +DEF_PTA(ADX) +DEF_PTA(FXSR) +DEF_PTA(XSAVE) +DEF_PTA(XSAVEOPT) +DEF_PTA(AVX512F) +DEF_PTA(AVX512ER) +DEF_PTA(AVX512PF) +DEF_PTA(AVX512CD) +DEF_PTA(NO_TUNE) +DEF_PTA(SHA) +DEF_PTA(PREFETCHWT1) +DEF_PTA(CLFLUSHOPT) +DEF_PTA(XSAVEC) +DEF_PTA(XSAVES) +DEF_PTA(AVX512DQ) +DEF_PTA(AVX512BW) +DEF_PTA(AVX512VL) +DEF_PTA(AVX512IFMA) +DEF_PTA(AVX512VBMI) +DEF_PTA(CLWB) +DEF_PTA(MWAITX) +DEF_PTA(CLZERO) +DEF_PTA(NO_80387) +DEF_PTA(PKU) +DEF_PTA(AVX5124VNNIW) +DEF_PTA(AVX5124FMAPS) +DEF_PTA(AVX512VPOPCNTDQ) +DEF_PTA(SGX) +DEF_PTA(AVX512VNNI) +DEF_PTA(GFNI) +DEF_PTA(VAES) +DEF_PTA(AVX512VBMI2) +DEF_PTA(VPCLMULQDQ) +DEF_PTA(AVX512BITALG) +DEF_PTA(RDPID) +DEF_PTA(PCONFIG) +DEF_PTA(WBNOINVD) +DEF_PTA(AVX512VP2INTERSECT) +DEF_PTA(PTWRITE) +DEF_PTA(AVX512BF16) +DEF_PTA(WAITPKG) +DEF_PTA(MOVDIRI) +DEF_PTA(MOVDIR64B) +DEF_PTA(ENQCMD) +DEF_PTA(CLDEMOTE) +DEF_PTA(SERIALIZE) +DEF_PTA(TSXLDTRK) +DEF_PTA(AMX_TILE) +DEF_PTA(AMX_INT8) +DEF_PTA(AMX_BF16) +DEF_PTA(UINTR) +DEF_PTA(HRESET) +DEF_PTA(KL) +DEF_PTA(WIDEKL) +DEF_PTA(AVXVNNI) diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index aa3fa3e..d2e6751 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -2415,97 +2415,24 @@ extern const char *const processor_names[]; #include "wide-int-bitmask.h" -constexpr wide_int_bitmask PTA_3DNOW (HOST_WIDE_INT_1U << 0); -constexpr wide_int_bitmask PTA_3DNOW_A (HOST_WIDE_INT_1U << 1); -constexpr wide_int_bitmask PTA_64BIT (HOST_WIDE_INT_1U << 2); -constexpr wide_int_bitmask PTA_ABM (HOST_WIDE_INT_1U << 3); -constexpr wide_int_bitmask PTA_AES (HOST_WIDE_INT_1U << 4); -constexpr wide_int_bitmask PTA_AVX (HOST_WIDE_INT_1U << 5); -constexpr wide_int_bitmask PTA_BMI (HOST_WIDE_INT_1U << 6); -constexpr wide_int_bitmask PTA_CX16 (HOST_WIDE_INT_1U << 7); -constexpr wide_int_bitmask PTA_F16C (HOST_WIDE_INT_1U << 8); -constexpr wide_int_bitmask PTA_FMA (HOST_WIDE_INT_1U << 9); -constexpr wide_int_bitmask PTA_FMA4 (HOST_WIDE_INT_1U << 10); -constexpr wide_int_bitmask PTA_FSGSBASE (HOST_WIDE_INT_1U << 11); -constexpr wide_int_bitmask PTA_LWP (HOST_WIDE_INT_1U << 12); -constexpr wide_int_bitmask PTA_LZCNT (HOST_WIDE_INT_1U << 13); -constexpr wide_int_bitmask PTA_MMX (HOST_WIDE_INT_1U << 14); -constexpr wide_int_bitmask PTA_MOVBE (HOST_WIDE_INT_1U << 15); -constexpr wide_int_bitmask PTA_NO_SAHF (HOST_WIDE_INT_1U << 16); -constexpr wide_int_bitmask PTA_PCLMUL (HOST_WIDE_INT_1U << 17); -constexpr wide_int_bitmask PTA_POPCNT (HOST_WIDE_INT_1U << 18); -constexpr wide_int_bitmask PTA_PREFETCH_SSE (HOST_WIDE_INT_1U << 19); -constexpr wide_int_bitmask PTA_RDRND (HOST_WIDE_INT_1U << 20); -constexpr wide_int_bitmask PTA_SSE (HOST_WIDE_INT_1U << 21); -constexpr wide_int_bitmask PTA_SSE2 (HOST_WIDE_INT_1U << 22); -constexpr wide_int_bitmask PTA_SSE3 (HOST_WIDE_INT_1U << 23); -constexpr wide_int_bitmask PTA_SSE4_1 (HOST_WIDE_INT_1U << 24); -constexpr wide_int_bitmask PTA_SSE4_2 (HOST_WIDE_INT_1U << 25); -constexpr wide_int_bitmask PTA_SSE4A (HOST_WIDE_INT_1U << 26); -constexpr wide_int_bitmask PTA_SSSE3 (HOST_WIDE_INT_1U << 27); -constexpr wide_int_bitmask PTA_TBM (HOST_WIDE_INT_1U << 28); -constexpr wide_int_bitmask PTA_XOP (HOST_WIDE_INT_1U << 29); -constexpr wide_int_bitmask PTA_AVX2 (HOST_WIDE_INT_1U << 30); -constexpr wide_int_bitmask PTA_BMI2 (HOST_WIDE_INT_1U << 31); -constexpr wide_int_bitmask PTA_RTM (HOST_WIDE_INT_1U << 32); -constexpr wide_int_bitmask PTA_HLE (HOST_WIDE_INT_1U << 33); -constexpr wide_int_bitmask PTA_PRFCHW (HOST_WIDE_INT_1U << 34); -constexpr wide_int_bitmask PTA_RDSEED (HOST_WIDE_INT_1U << 35); -constexpr wide_int_bitmask PTA_ADX (HOST_WIDE_INT_1U << 36); -constexpr wide_int_bitmask PTA_FXSR (HOST_WIDE_INT_1U << 37); -constexpr wide_int_bitmask PTA_XSAVE (HOST_WIDE_INT_1U << 38); -constexpr wide_int_bitmask PTA_XSAVEOPT (HOST_WIDE_INT_1U << 39); -constexpr wide_int_bitmask PTA_AVX512F (HOST_WIDE_INT_1U << 40); -constexpr wide_int_bitmask PTA_AVX512ER (HOST_WIDE_INT_1U << 41); -constexpr wide_int_bitmask PTA_AVX512PF (HOST_WIDE_INT_1U << 42); -constexpr wide_int_bitmask PTA_AVX512CD (HOST_WIDE_INT_1U << 43); -constexpr wide_int_bitmask PTA_NO_TUNE (HOST_WIDE_INT_1U << 44); -constexpr wide_int_bitmask PTA_SHA (HOST_WIDE_INT_1U << 45); -constexpr wide_int_bitmask PTA_PREFETCHWT1 (HOST_WIDE_INT_1U << 46); -constexpr wide_int_bitmask PTA_CLFLUSHOPT (HOST_WIDE_INT_1U << 47); -constexpr wide_int_bitmask PTA_XSAVEC (HOST_WIDE_INT_1U << 48); -constexpr wide_int_bitmask PTA_XSAVES (HOST_WIDE_INT_1U << 49); -constexpr wide_int_bitmask PTA_AVX512DQ (HOST_WIDE_INT_1U << 50); -constexpr wide_int_bitmask PTA_AVX512BW (HOST_WIDE_INT_1U << 51); -constexpr wide_int_bitmask PTA_AVX512VL (HOST_WIDE_INT_1U << 52); -constexpr wide_int_bitmask PTA_AVX512IFMA (HOST_WIDE_INT_1U << 53); -constexpr wide_int_bitmask PTA_AVX512VBMI (HOST_WIDE_INT_1U << 54); -constexpr wide_int_bitmask PTA_CLWB (HOST_WIDE_INT_1U << 55); -constexpr wide_int_bitmask PTA_MWAITX (HOST_WIDE_INT_1U << 56); -constexpr wide_int_bitmask PTA_CLZERO (HOST_WIDE_INT_1U << 57); -constexpr wide_int_bitmask PTA_NO_80387 (HOST_WIDE_INT_1U << 58); -constexpr wide_int_bitmask PTA_PKU (HOST_WIDE_INT_1U << 59); -constexpr wide_int_bitmask PTA_AVX5124VNNIW (HOST_WIDE_INT_1U << 60); -constexpr wide_int_bitmask PTA_AVX5124FMAPS (HOST_WIDE_INT_1U << 61); -constexpr wide_int_bitmask PTA_AVX512VPOPCNTDQ (HOST_WIDE_INT_1U << 62); -constexpr wide_int_bitmask PTA_SGX (HOST_WIDE_INT_1U << 63); -constexpr wide_int_bitmask PTA_AVX512VNNI (0, HOST_WIDE_INT_1U); -constexpr wide_int_bitmask PTA_GFNI (0, HOST_WIDE_INT_1U << 1); -constexpr wide_int_bitmask PTA_VAES (0, HOST_WIDE_INT_1U << 2); -constexpr wide_int_bitmask PTA_AVX512VBMI2 (0, HOST_WIDE_INT_1U << 3); -constexpr wide_int_bitmask PTA_VPCLMULQDQ (0, HOST_WIDE_INT_1U << 4); -constexpr wide_int_bitmask PTA_AVX512BITALG (0, HOST_WIDE_INT_1U << 5); -constexpr wide_int_bitmask PTA_RDPID (0, HOST_WIDE_INT_1U << 6); -constexpr wide_int_bitmask PTA_PCONFIG (0, HOST_WIDE_INT_1U << 7); -constexpr wide_int_bitmask PTA_WBNOINVD (0, HOST_WIDE_INT_1U << 8); -constexpr wide_int_bitmask PTA_AVX512VP2INTERSECT (0, HOST_WIDE_INT_1U << 9); -constexpr wide_int_bitmask PTA_PTWRITE (0, HOST_WIDE_INT_1U << 10); -constexpr wide_int_bitmask PTA_AVX512BF16 (0, HOST_WIDE_INT_1U << 11); -constexpr wide_int_bitmask PTA_WAITPKG (0, HOST_WIDE_INT_1U << 12); -constexpr wide_int_bitmask PTA_MOVDIRI (0, HOST_WIDE_INT_1U << 13); -constexpr wide_int_bitmask PTA_MOVDIR64B (0, HOST_WIDE_INT_1U << 14); -constexpr wide_int_bitmask PTA_ENQCMD (0, HOST_WIDE_INT_1U << 15); -constexpr wide_int_bitmask PTA_CLDEMOTE (0, HOST_WIDE_INT_1U << 16); -constexpr wide_int_bitmask PTA_SERIALIZE (0, HOST_WIDE_INT_1U << 17); -constexpr wide_int_bitmask PTA_TSXLDTRK (0, HOST_WIDE_INT_1U << 18); -constexpr wide_int_bitmask PTA_AMX_TILE (0, HOST_WIDE_INT_1U << 19); -constexpr wide_int_bitmask PTA_AMX_INT8 (0, HOST_WIDE_INT_1U << 20); -constexpr wide_int_bitmask PTA_AMX_BF16 (0, HOST_WIDE_INT_1U << 21); -constexpr wide_int_bitmask PTA_UINTR (0, HOST_WIDE_INT_1U << 22); -constexpr wide_int_bitmask PTA_HRESET (0, HOST_WIDE_INT_1U << 23); -constexpr wide_int_bitmask PTA_KL (0, HOST_WIDE_INT_1U << 24); -constexpr wide_int_bitmask PTA_WIDEKL (0, HOST_WIDE_INT_1U << 25); -constexpr wide_int_bitmask PTA_AVXVNNI (0, HOST_WIDE_INT_1U << 26); +enum pta_flag +{ +#define DEF_PTA(NAME) _ ## NAME, +#include "i386-isa.def" +#undef DEF_PTA + END_PTA +}; + +/* wide_int_bitmask can handle only 128 flags. */ +STATIC_ASSERT (END_PTA <= 128); + +#define WIDE_INT_BITMASK_FROM_NTH(N) (N < 64 ? wide_int_bitmask (0, 1ULL << N) \ + : wide_int_bitmask (1ULL << (N - 64), 0)) + +#define DEF_PTA(NAME) constexpr wide_int_bitmask PTA_ ## NAME \ + = WIDE_INT_BITMASK_FROM_NTH ((pta_flag) _ ## NAME); +#include "i386-isa.def" +#undef DEF_PTA constexpr wide_int_bitmask PTA_X86_64_BASELINE = PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR; |