aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlga Makhotina <olga.makhotina@intel.com>2018-04-16 11:23:55 +0000
committerJulia Koval <jkoval@gcc.gnu.org>2018-04-16 13:23:55 +0200
commit176a3386885f99654139a2222144b57471a2aee6 (patch)
tree3a65dbafe9bb9e8ad72810c58503bb4686c743c9
parenta57f99ba1c8f5ece013b9a2cae954338a492764a (diff)
downloadgcc-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/ChangeLog17
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/i386/i386-c.c7
-rw-r--r--gcc/config/i386/i386.c32
-rw-r--r--gcc/config/i386/i386.h2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/funcspec-56.inc1
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")));