i386.c (ix86_add_stmt_cost): When scalar cost is asked for initialize mode to the...
authorRichard Biener <rguenther@suse.de>
Fri, 5 Oct 2018 11:40:50 +0000 (11:40 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 5 Oct 2018 11:40:50 +0000 (11:40 +0000)
2018-10-05   Richard Biener  <rguenther@suse.de>

* config/i386/i386.c (ix86_add_stmt_cost): When scalar cost
is asked for initialize mode to the component mode of the
vector type.

From-SVN: r264866

gcc/ChangeLog
gcc/config/i386/i386.c

index e9edd10d8b9acd171c98578c27e4fac259e62514..b8d4c9cbb7cfe8184569dd4091422c5613870b26 100644 (file)
@@ -1,3 +1,9 @@
+2018-10-05   Richard Biener  <rguenther@suse.de>
+
+       * config/i386/i386.c (ix86_add_stmt_cost): When scalar cost
+       is asked for initialize mode to the component mode of the
+       vector type.
+
 2018-10-05  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/87522
index d35ad91b55c0073e511034c356b20148adbcc200..fafdcd4115e86185de663c29e57245f9a8033750 100644 (file)
@@ -49486,17 +49486,21 @@ ix86_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
 {
   unsigned *cost = (unsigned *) data;
   unsigned retval = 0;
+  bool scalar_p
+    = (kind == scalar_stmt || kind == scalar_load || kind == scalar_store);
 
   tree vectype = stmt_info ? stmt_vectype (stmt_info) : NULL_TREE;
   int stmt_cost = - 1;
 
   bool fp = false;
-  machine_mode mode = TImode;
+  machine_mode mode = scalar_p ? SImode : TImode;
 
   if (vectype != NULL)
     {
       fp = FLOAT_TYPE_P (vectype);
       mode = TYPE_MODE (vectype);
+      if (scalar_p)
+       mode = TYPE_MODE (TREE_TYPE (vectype));
     }
 
   if ((kind == vector_stmt || kind == scalar_stmt)