]> gcc.gnu.org Git - gcc.git/commitdiff
rs6000.c (vspltis_constant): Make sure we check all elements for both endian flavors.
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Sat, 19 Oct 2013 20:52:34 +0000 (20:52 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Sat, 19 Oct 2013 20:52:34 +0000 (20:52 +0000)
2013-10-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (vspltis_constant): Make sure we check
all elements for both endian flavors.

From-SVN: r203863

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

index 78bc3bd56d7f313162bf1fdb1d50db0773478b70..198b0958c9b2fa3db60beb017ed51ae55daa1691 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * config/rs6000/rs6000.c (vspltis_constant): Make sure we check
+       all elements for both endian flavors.
+
 2013-10-19  Uros Bizjak  <ubizjak@gmail.com>
 
        PR target/58792
index 7dc68fdf44bd2b56fdca341266772e4dade5e9de..e0545856543904aaa5f88be982d0a3fcabfec6f9 100644 (file)
@@ -4981,15 +4981,16 @@ vspltis_constant (rtx op, unsigned step, unsigned copies)
 
   /* Check if VAL is present in every STEP-th element, and the
      other elements are filled with its most significant bit.  */
-  for (i = 0; i < nunits - 1; ++i)
+  for (i = 1; i < nunits; ++i)
     {
       HOST_WIDE_INT desired_val;
-      if (((BYTES_BIG_ENDIAN ? i + 1 : i) & (step - 1)) == 0)
+      unsigned elt = BYTES_BIG_ENDIAN ? nunits - 1 - i : i;
+      if ((i & (step - 1)) == 0)
        desired_val = val;
       else
        desired_val = msb_val;
 
-      if (desired_val != const_vector_elt_as_int (op, i))
+      if (desired_val != const_vector_elt_as_int (op, elt))
        return false;
     }
 
This page took 0.154427 seconds and 5 git commands to generate.