From 55f9fbb03d0413cb8fe74e5ec5d6c2dd4280933e Mon Sep 17 00:00:00 2001
From: Alexander Ivchenko <alexander.ivchenko@intel.com>
Date: Fri, 11 Jul 2014 15:24:10 +0400
Subject: [4.8, 4.9] Backport of additional SLM tuning.

    Six patches from trunk, reg-tested via 'make check':

    2014-05-07  Evgeny Stupachenko  <evstupac@gmail.com>

           * tree-vect-data-refs.c (vect_grouped_load_supported): New
           check for loads group of length 3.
           (vect_permute_load_chain): New permutations for loads group of
           length 3.
           * tree-vect-stmts.c (vect_model_load_cost): Change cost
           of vec_perm_shuffle for the new permutations.

    2014-04-17  Evgeny Stupachenko  <evstupac@gmail.com>

           * config/i386/i386.c (x86_add_stmt_cost): Fix vector cost model for
           Silvermont.

    2014-04-17  Evgeny Stupachenko  <evstupac@gmail.com>

           * config/i386/x86-tune.def (TARGET_SLOW_PSHUFB): New tune definition.
           * config/i386/i386.h (TARGET_SLOW_PSHUFB): New tune flag.
           * config/i386/i386.c (expand_vec_perm_even_odd_1): Avoid byte shuffles
           for TARGET_SLOW_PSHUFB

    2014-04-17  Evgeny Stupachenko  <evstupac@gmail.com>

           * config/i386/i386.c (slm_cost): Adjust vec_to_scalar_cost.
           * config/i386/i386.c (intel_cost): Ditto.

    2014-06-18  Evgeny Stupachenko  <evstupac@gmail.com>

           * config/i386/i386.c (ix86_reassociation_width): Add alternative for
             vector case.
           * config/i386/i386.h (TARGET_VECTOR_PARALLEL_EXECUTION): New.
           * config/i386/x86-tune.def (X86_TUNE_VECTOR_PARALLEL_EXECUTION): New.
           * tree-vect-data-refs.c (vect_shift_permute_load_chain): New.
             Introduces alternative way of loads group permutaions.
             (vect_transform_grouped_load): Try alternative way of permutations.

    2014-06-05  Evgeny Stupachenko  <evstupac@gmail.com>

           * config/i386/sse.md (*ssse3_palignr<mode>_perm): New.
           * config/i386/predicates.md (palignr_operand): New.
             Indicates if permutation is suitable for palignr instruction.

Change-Id: I5e505735ce3dc0ec3c2a1151713a119b24d712fe
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
---
 gcc-4.9/gcc/config/i386/x86-tune.def | 9 +++++++++
 1 file changed, 9 insertions(+)

(limited to 'gcc-4.9/gcc/config/i386/x86-tune.def')

diff --git a/gcc-4.9/gcc/config/i386/x86-tune.def b/gcc-4.9/gcc/config/i386/x86-tune.def
index 8399102..cb44dc3 100644
--- a/gcc-4.9/gcc/config/i386/x86-tune.def
+++ b/gcc-4.9/gcc/config/i386/x86-tune.def
@@ -386,6 +386,15 @@ DEF_TUNE (X86_TUNE_USE_VECTOR_FP_CONVERTS, "use_vector_fp_converts",
    from integer to FP. */
 DEF_TUNE (X86_TUNE_USE_VECTOR_CONVERTS, "use_vector_converts", m_AMDFAM10)
 
+/* X86_TUNE_SLOW_SHUFB: Indicates tunings with slow pshufb instruction.  */
+DEF_TUNE (X86_TUNE_SLOW_PSHUFB, "slow_pshufb",
+          m_BONNELL | m_SILVERMONT | m_INTEL)
+
+/* X86_TUNE_VECTOR_PARALLEL_EXECUTION: Indicates tunings with ability to
+   execute 2 or more vector instructions in parallel.  */
+DEF_TUNE (X86_TUNE_VECTOR_PARALLEL_EXECUTION, "vec_parallel",
+          m_NEHALEM | m_SANDYBRIDGE | m_HASWELL)
+
 /*****************************************************************************/
 /* AVX instruction selection tuning (some of SSE flags affects AVX, too)     */
 /*****************************************************************************/
-- 
cgit v1.1

