vec_promote_demote cost to 1 for non-Power7 VSX architectures
authorKewen Lin <linkw@gcc.gnu.org>
Fri, 11 Oct 2019 06:01:30 +0000 (06:01 +0000)
committerKewen Lin <linkw@gcc.gnu.org>
Fri, 11 Oct 2019 06:01:30 +0000 (06:01 +0000)
2019-10-11  Kewen Lin  <linkw@gcc.gnu.org>

    * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Lower
    vec_promote_demote cost to 1 for non-Power7 VSX architectures.

From-SVN: r276859

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 3d9af72764ab30a56c4bf4b7b54566eca41b769f..df124f07711843c335079911a881b933ecc02220 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-11  Kewen Lin  <linkw@gcc.gnu.org>
+
+       * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Lower
+       vec_promote_demote cost to 1 for non-Power7 VSX architectures.
+
 2019-10-10  Joseph Myers  <joseph@codesourcery.com>
 
        * ginclude/float.h [!__DEC32_MANT_DIG__]: Do not define DFP
index 3421faf813f357d69d467fd8c8debc957b15cfb8..d1434a9f74333ec85f0797d6c265c9d9223ca209 100644 (file)
@@ -4781,10 +4781,11 @@ rs6000_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
          return 1;
 
       case vec_promote_demote:
-        if (TARGET_VSX)
-          return 4;
-        else
-          return 1;
+       /* Power7 has only one permute/pack unit, make it a bit expensive.  */
+       if (TARGET_VSX && rs6000_tune == PROCESSOR_POWER7)
+         return 4;
+       else
+         return 1;
 
       case cond_branch_taken:
         return 3;