aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Shalnov <Sergey.Shalnov@intel.com>2017-11-17 04:56:57 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2017-11-17 04:56:57 +0000
commit5958557b750254f28954d1ed6a3ce0b9cb48c6fb (patch)
treef31b71081b8a9db0d80b7c10ba39e9a608d2f990
parent71d8eff176ca829b984228e522238937cb267c05 (diff)
downloadgcc-5958557b750254f28954d1ed6a3ce0b9cb48c6fb.zip
gcc-5958557b750254f28954d1ed6a3ce0b9cb48c6fb.tar.gz
gcc-5958557b750254f28954d1ed6a3ce0b9cb48c6fb.tar.bz2
Enable option -mprefer-avx256 as default for Intel Skylake configuration
gcc/ * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning option prefer-avx256 for skylake-avx512 configuration. * config/i386/i386.c (ix86_option_override_internal): Ditto. (get_builtin_code_for_version): Ditto. From-SVN: r254855
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.c8
-rw-r--r--gcc/config/i386/x86-tune.def4
3 files changed, 18 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 115a662..da8a9ce 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2017-11-17 Sergey Shalnov <Sergey.Shalnov@intel.com>
+
+ * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning
+ option prefer-avx256 for skylake-avx512 configuration.
+ * config/i386/i386.c (ix86_option_override_internal): Ditto.
+ (get_builtin_code_for_version): Ditto.
+
2017-11-17 Chung-Ju Wu <jasonwucj@gmail.com>
Monk Chiang <sh.chiang04@gmail.com>
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b2c2934..c9580ba 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -3518,7 +3518,7 @@ ix86_option_override_internal (bool main_args_p,
{"core-avx2", PROCESSOR_HASWELL, CPU_HASWELL, PTA_HASWELL},
{"broadwell", PROCESSOR_HASWELL, CPU_HASWELL, PTA_BROADWELL},
{"skylake", PROCESSOR_HASWELL, CPU_HASWELL, PTA_SKYLAKE},
- {"skylake-avx512", PROCESSOR_HASWELL, CPU_HASWELL, PTA_SKYLAKE_AVX512},
+ {"skylake-avx512", PROCESSOR_SKYLAKE_AVX512, CPU_HASWELL, PTA_SKYLAKE_AVX512},
{"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL},
{"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL},
{"silvermont", PROCESSOR_SILVERMONT, CPU_SLM, PTA_SILVERMONT},
@@ -4691,6 +4691,11 @@ ix86_option_override_internal (bool main_args_p,
if (TARGET_AVX128_OPTIMAL
&& !(opts_set->x_target_flags & MASK_PREFER_AVX128))
opts->x_target_flags |= MASK_PREFER_AVX128;
+ /* Use 256-bit AVX instructions instead of 512-bit AVX instructions
+ in the auto-vectorizer. */
+ if (ix86_tune_features[X86_TUNE_AVX256_OPTIMAL]
+ && !(opts_set->x_ix86_target_flags & OPTION_MASK_PREFER_AVX256))
+ opts->x_ix86_target_flags |= OPTION_MASK_PREFER_AVX256;
if (opts->x_ix86_recip_name)
{
@@ -31115,6 +31120,7 @@ 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_AVX512VL)
arg_str = "skylake-avx512";
else if (new_target->x_ix86_isa_flags & OPTION_MASK_ISA_XSAVES)
diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def
index 19fd2b5..415f73a 100644
--- a/gcc/config/i386/x86-tune.def
+++ b/gcc/config/i386/x86-tune.def
@@ -427,6 +427,10 @@ DEF_TUNE (X86_TUNE_AVX256_UNALIGNED_STORE_OPTIMAL, "256_unaligned_store_optimal"
DEF_TUNE (X86_TUNE_AVX128_OPTIMAL, "avx128_optimal", m_BDVER | m_BTVER2
| m_ZNVER1)
+/* X86_TUNE_AVX256_OPTIMAL: Use 256-bit AVX instructions instead of 512-bit AVX
+ instructions in the auto-vectorizer. */
+DEF_TUNE (X86_TUNE_AVX256_OPTIMAL, "avx256_optimal", m_SKYLAKE_AVX512)
+
/*****************************************************************************/
/* Historical relics: tuning flags that helps a specific old CPU designs */
/*****************************************************************************/