OSDN Git Service

2012-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
authorwschmidt <wschmidt@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Feb 2012 21:39:34 +0000 (21:39 +0000)
committerwschmidt <wschmidt@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Feb 2012 21:39:34 +0000 (21:39 +0000)
PR tree-optimization/50969
* tree-vect-stmts.c (vect_model_store_cost): Correct statement cost to
use vec_perm rather than vector_stmt.
(vect_model_load_cost): Likewise.
* config/i386/i386.c (ix86_builtin_vectorization_cost): Change cost of
vec_perm to be the same as other vector statements.
* config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Revise
cost of vec_perm for TARGET_VSX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183944 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/rs6000/rs6000.c
gcc/tree-vect-stmts.c

index 28f130f..9bacd9d 100644 (file)
@@ -1,3 +1,14 @@
+2012-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       PR tree-optimization/50969
+       * tree-vect-stmts.c (vect_model_store_cost): Correct statement cost to
+       use vec_perm rather than vector_stmt.
+       (vect_model_load_cost): Likewise.
+       * config/i386/i386.c (ix86_builtin_vectorization_cost): Change cost of
+       vec_perm to be the same as other vector statements.
+       * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Revise
+       cost of vec_perm for TARGET_VSX.
+
 2012-02-06  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/52115
index a50d871..009dd53 100644 (file)
@@ -35336,7 +35336,7 @@ ix86_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
         return ix86_cost->cond_not_taken_branch_cost;
 
       case vec_perm:
-        return 1;
+        return ix86_cost->vec_stmt_cost;
 
       default:
         gcc_unreachable ();
index 751ce2c..4190b25 100644 (file)
@@ -3540,9 +3540,13 @@ rs6000_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
       case vec_to_scalar:
       case scalar_to_vec:
       case cond_branch_not_taken:
-      case vec_perm:
         return 1;
 
+      case vec_perm:
+       if (!TARGET_VSX)
+         return 1;
+       return 2;
+
       case cond_branch_taken:
         return 3;
 
index 6ce742c..e854da5 100644 (file)
@@ -882,7 +882,7 @@ vect_model_store_cost (stmt_vec_info stmt_info, int ncopies,
     {
       /* Uses a high and low interleave operation for each needed permute.  */
       inside_cost = ncopies * exact_log2(group_size) * group_size
-        * vect_get_stmt_cost (vector_stmt);
+        * vect_get_stmt_cost (vec_perm);
 
       if (vect_print_dump_info (REPORT_COST))
         fprintf (vect_dump, "vect_model_store_cost: strided group_size = %d .",
@@ -988,7 +988,7 @@ vect_model_load_cost (stmt_vec_info stmt_info, int ncopies, bool load_lanes_p,
     {
       /* Uses an even and odd extract operations for each needed permute.  */
       inside_cost = ncopies * exact_log2(group_size) * group_size
-       * vect_get_stmt_cost (vector_stmt);
+       * vect_get_stmt_cost (vec_perm);
 
       if (vect_print_dump_info (REPORT_COST))
         fprintf (vect_dump, "vect_model_load_cost: strided group_size = %d .",