diff options
author | Olga Makhotina <olga.makhotina@intel.com> | 2018-04-16 11:23:55 +0000 |
---|---|---|
committer | Julia Koval <jkoval@gcc.gnu.org> | 2018-04-16 13:23:55 +0200 |
commit | 176a3386885f99654139a2222144b57471a2aee6 (patch) | |
tree | 3a65dbafe9bb9e8ad72810c58503bb4686c743c9 | |
parent | a57f99ba1c8f5ece013b9a2cae954338a492764a (diff) | |
download | gcc-176a3386885f99654139a2222144b57471a2aee6.zip gcc-176a3386885f99654139a2222144b57471a2aee6.tar.gz gcc-176a3386885f99654139a2222144b57471a2aee6.tar.bz2 |
Fixed g++.dg/ext/mv16.C with -march=native.
gcc/
PR target/84331
* gcc/config.gcc: Support "skylake".
* gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
PROCESSOR_SKYLAKE.
* gcc/config/i386/i386.c (m_SKYLAKE): Define.
(processor_target_table): Add "skylake".
(ix86_option_override_internal): Add "skylake".
(get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
PROCESSOR_CANNONLAKE.
(get_builtin_code_for_version): Fix priority for
PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
PROCESSOR_SKYLAKE-AVX512.
* gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
(processor_type): Add PROCESSOR_SKYLAKE.
gcc/testsuite/
PR target/84331
* gcc/testsuite/gcc.target/i386/funcspec-56.inc: Test arch=skylake.
From-SVN: r259399
-rw-r--r-- | gcc/ChangeLog | 17 | ||||
-rw-r--r-- | gcc/config.gcc | 2 | ||||
-rw-r--r-- | gcc/config/i386/i386-c.c | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 32 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/funcspec-56.inc | 1 |
7 files changed, 52 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a82dfe..8cc7a6b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2018-04-16 Olga Makhotina <olga.makhotina@intel.com> + + PR target/84331 + * gcc/config.gcc: Support "skylake". + * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle + PROCESSOR_SKYLAKE. + * gcc/config/i386/i386.c (m_SKYLAKE): Define. + (processor_target_table): Add "skylake". + (ix86_option_override_internal): Add "skylake". + (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE, + PROCESSOR_CANNONLAKE. + (get_builtin_code_for_version): Fix priority for + PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER, + PROCESSOR_SKYLAKE-AVX512. + * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE. + (processor_type): Add PROCESSOR_SKYLAKE. + 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com> Jason Merrill <jason@redhat.com> diff --git a/gcc/config.gcc b/gcc/config.gcc index 55c314a..787d8f4 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -637,7 +637,7 @@ x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \ bdver3 bdver4 znver1 btver1 btver2 k8 k8-sse3 opteron opteron-sse3 nocona \ core2 corei7 corei7-avx core-avx-i core-avx2 atom slm nehalem westmere \ sandybridge ivybridge haswell broadwell bonnell silvermont knl knm \ -skylake-avx512 cannonlake icelake-client icelake-server x86-64 native" +skylake-avx512 cannonlake icelake-client icelake-server skylake x86-64 native" # Additional x86 processors supported by --with-cpu=. Each processor # MUST be separated by exactly one space. diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c index 6c50e20..2e0e9f6 100644 --- a/gcc/config/i386/i386-c.c +++ b/gcc/config/i386/i386-c.c @@ -182,6 +182,10 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__knm"); def_or_undef (parse_in, "__knm__"); break; + case PROCESSOR_SKYLAKE: + def_or_undef (parse_in, "__skylake"); + def_or_undef (parse_in, "__skylake__"); + break; case PROCESSOR_SKYLAKE_AVX512: def_or_undef (parse_in, "__skylake_avx512"); def_or_undef (parse_in, "__skylake_avx512__"); @@ -313,6 +317,9 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, case PROCESSOR_KNM: def_or_undef (parse_in, "__tune_knm__"); break; + case PROCESSOR_SKYLAKE: + def_or_undef (parse_in, "__tune_skylake__"); + break; case PROCESSOR_SKYLAKE_AVX512: def_or_undef (parse_in, "__tune_skylake_avx512__"); break; diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 99ac84e..b62fdad 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -144,6 +144,7 @@ const struct processor_costs *ix86_cost = NULL; #define m_SILVERMONT (HOST_WIDE_INT_1U<<PROCESSOR_SILVERMONT) #define m_KNL (HOST_WIDE_INT_1U<<PROCESSOR_KNL) #define m_KNM (HOST_WIDE_INT_1U<<PROCESSOR_KNM) +#define m_SKYLAKE (HOST_WIDE_INT_1U<<PROCESSOR_SKYLAKE) #define m_SKYLAKE_AVX512 (HOST_WIDE_INT_1U<<PROCESSOR_SKYLAKE_AVX512) #define m_CANNONLAKE (HOST_WIDE_INT_1U<<PROCESSOR_CANNONLAKE) #define m_ICELAKE_CLIENT (HOST_WIDE_INT_1U<<PROCESSOR_ICELAKE_CLIENT) @@ -859,6 +860,7 @@ static const struct ptt processor_target_table[PROCESSOR_max] = {"silvermont", &slm_cost, 16, 15, 16, 7, 16}, {"knl", &slm_cost, 16, 15, 16, 7, 16}, {"knm", &slm_cost, 16, 15, 16, 7, 16}, + {"skylake", &skylake_cost, 16, 10, 16, 10, 16}, {"skylake-avx512", &skylake_cost, 16, 10, 16, 10, 16}, {"cannonlake", &skylake_cost, 16, 10, 16, 10, 16}, {"icelake-client", &skylake_cost, 16, 10, 16, 10, 16}, @@ -3544,10 +3546,10 @@ ix86_option_override_internal (bool main_args_p, {"haswell", PROCESSOR_HASWELL, CPU_HASWELL, PTA_HASWELL}, {"core-avx2", PROCESSOR_HASWELL, CPU_HASWELL, PTA_HASWELL}, {"broadwell", PROCESSOR_HASWELL, CPU_HASWELL, PTA_BROADWELL}, - {"skylake", PROCESSOR_HASWELL, CPU_HASWELL, PTA_SKYLAKE}, + {"skylake", PROCESSOR_SKYLAKE, CPU_HASWELL, PTA_SKYLAKE}, {"skylake-avx512", PROCESSOR_SKYLAKE_AVX512, CPU_HASWELL, PTA_SKYLAKE_AVX512}, - {"cannonlake", PROCESSOR_SKYLAKE_AVX512, CPU_HASWELL, PTA_CANNONLAKE}, + {"cannonlake", PROCESSOR_CANNONLAKE, CPU_HASWELL, PTA_CANNONLAKE}, {"icelake-client", PROCESSOR_ICELAKE_CLIENT, CPU_HASWELL, PTA_ICELAKE_CLIENT}, {"icelake-server", PROCESSOR_ICELAKE_SERVER, CPU_HASWELL, @@ -32369,27 +32371,31 @@ get_builtin_code_for_version (tree decl, tree *predicate_list) priority = P_PROC_AVX; break; case PROCESSOR_HASWELL: - case PROCESSOR_SKYLAKE_AVX512: - if (new_target->x_ix86_isa_flags - & OPTION_MASK_ISA_AVX512VBMI) - arg_str = "cannonlake"; - else if (new_target->x_ix86_isa_flags & OPTION_MASK_ISA_AVX512VL) - arg_str = "skylake-avx512"; - else if (new_target->x_ix86_isa_flags & OPTION_MASK_ISA_XSAVES) - arg_str = "skylake"; - else if (new_target->x_ix86_isa_flags & OPTION_MASK_ISA_ADX) + if (new_target->x_ix86_isa_flags & OPTION_MASK_ISA_ADX) arg_str = "broadwell"; else arg_str = "haswell"; priority = P_PROC_AVX2; break; + case PROCESSOR_SKYLAKE: + arg_str = "skylake"; + priority = P_PROC_AVX2; + break; + case PROCESSOR_SKYLAKE_AVX512: + arg_str = "skylake-avx512"; + priority = P_PROC_AVX512F; + break; + case PROCESSOR_CANNONLAKE: + arg_str = "cannonlake"; + priority = P_PROC_AVX512F; + break; case PROCESSOR_ICELAKE_CLIENT: arg_str = "icelake-client"; - priority = P_PROC_AVX2; + priority = P_PROC_AVX512F; break; case PROCESSOR_ICELAKE_SERVER: arg_str = "icelake-server"; - priority = P_PROC_AVX2; + priority = P_PROC_AVX512F; break; case PROCESSOR_BONNELL: arg_str = "bonnell"; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index c7f9b45..c9f19b6 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -385,6 +385,7 @@ extern const struct processor_costs ix86_size_cost; #define TARGET_SILVERMONT (ix86_tune == PROCESSOR_SILVERMONT) #define TARGET_KNL (ix86_tune == PROCESSOR_KNL) #define TARGET_KNM (ix86_tune == PROCESSOR_KNM) +#define TARGET_SKYLAKE (ix86_tune == PROCESSOR_SKYLAKE) #define TARGET_SKYLAKE_AVX512 (ix86_tune == PROCESSOR_SKYLAKE_AVX512) #define TARGET_CANNONLAKE (ix86_tune == PROCESSOR_CANNONLAKE) #define TARGET_ICELAKE_CLIENT (ix86_tune == PROCESSOR_ICELAKE_CLIENT) @@ -2267,6 +2268,7 @@ enum processor_type PROCESSOR_SILVERMONT, PROCESSOR_KNL, PROCESSOR_KNM, + PROCESSOR_SKYLAKE, PROCESSOR_SKYLAKE_AVX512, PROCESSOR_CANNONLAKE, PROCESSOR_ICELAKE_CLIENT, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8806b95..1aa8476 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-04-16 Olga Makhotina <olga.makhotina@intel.com> + + PR target/84331 + * gcc/testsuite/gcc.target/i386/funcspec-56.inc: Test arch=skylake. + 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com> Jason Merrill <jason@redhat.com> diff --git a/gcc/testsuite/gcc.target/i386/funcspec-56.inc b/gcc/testsuite/gcc.target/i386/funcspec-56.inc index 35b287a..4636631 100644 --- a/gcc/testsuite/gcc.target/i386/funcspec-56.inc +++ b/gcc/testsuite/gcc.target/i386/funcspec-56.inc @@ -143,6 +143,7 @@ extern void test_arch_corei7_avx (void) __attribute__((__target__("arch=corei7- extern void test_arch_core_avx2 (void) __attribute__((__target__("arch=core-avx2"))); extern void test_arch_knl (void) __attribute__((__target__("arch=knl"))); extern void test_arch_knm (void) __attribute__((__target__("arch=knm"))); +extern void test_arch_skylake (void) __attribute__((__target__("arch=skylake"))); extern void test_arch_skylake_avx512 (void) __attribute__((__target__("arch=skylake-avx512"))); extern void test_arch_cannonlake (void) __attribute__((__target__("arch=cannonlake"))); extern void test_arch_icelake_client (void) __attribute__((__target__("arch=icelake-client"))); |