]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
altivec.md (altivec_vsumsws): Replace second vspltw with vsldoi.
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Fri, 21 Feb 2014 21:01:01 +0000 (21:01 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Fri, 21 Feb 2014 21:01:01 +0000 (21:01 +0000)
gcc:

2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/altivec.md (altivec_vsumsws): Replace second
vspltw with vsldoi.
(reduc_uplus_v16qi): Use gen_altivec_vsumsws_direct instead of
gen_altivec_vsumsws.

gcc/testsuite:

2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.dg/vmx/vsums.c: Check entire result vector.
* gcc.dg/vmx/vsums-be-order.c: Likewise.

From-SVN: r208021

gcc/ChangeLog
gcc/config/rs6000/altivec.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vmx/vsums-be-order.c
gcc/testsuite/gcc.dg/vmx/vsums.c

index a7797a1b3b1bb09231e74511c01aa086895824f9..9b1638dc8a2a027dcd765fd10224cd166b46d165 100644 (file)
@@ -1,3 +1,10 @@
+2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * config/rs6000/altivec.md (altivec_vsumsws): Replace second
+       vspltw with vsldoi.
+       (reduc_uplus_v16qi): Use gen_altivec_vsumsws_direct instead of
+       gen_altivec_vsumsws.
+
 2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        * config/rs6000/altivec.md (altivec_lvxl): Rename as
index 115354a2d50a6167db6ff1414823a3ccf8a8030b..5b5541987967194b8f6ce7ed1639296be4abeb42 100644 (file)
   if (VECTOR_ELT_ORDER_BIG)
     return "vsumsws %0,%1,%2";
   else
-    return "vspltw %3,%2,0\n\tvsumsws %3,%1,%3\n\tvspltw %0,%3,3";
+    return "vspltw %3,%2,0\n\tvsumsws %3,%1,%3\n\tvsldoi %0,%3,%3,12";
 }
   [(set_attr "type" "veccomplex")
    (set (attr "length")
 
   emit_insn (gen_altivec_vspltisw (vzero, const0_rtx));
   emit_insn (gen_altivec_vsum4ubs (vtmp1, operands[1], vzero));
-  emit_insn (gen_altivec_vsumsws (dest, vtmp1, vzero));
+  emit_insn (gen_altivec_vsumsws_direct (dest, vtmp1, vzero));
   DONE;
 })
 
index f051017c1481f6007d6a0f2e0ba43099e4400cfa..8f8f35b9184b3382fb6458b8a8b8b961e4307d0b 100644 (file)
@@ -1,3 +1,8 @@
+2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * gcc.dg/vmx/vsums.c: Check entire result vector.
+       * gcc.dg/vmx/vsums-be-order.c: Likewise.
+
 2014-02-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        * gcc.dg/vmx/ld.c: New test.
index 69fe3b64aafb315859cca559067576f83473b47a..e4a34e9f966086566543cac3eb4f78bcae7e3d9b 100644 (file)
@@ -8,12 +8,13 @@ static void test()
 
 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
   vector signed int vb = {128,0,0,0};
+  vector signed int evd = {136,0,0,0};
 #else
   vector signed int vb = {0,0,0,128};
+  vector signed int evd = {0,0,0,136};
 #endif
 
   vector signed int vd = vec_sums (va, vb);
-  signed int r = vec_extract (vd, 3);
 
-  check (r == 136, "sums");
+  check (vec_all_eq (vd, evd), "sums");
 }
index dfbb1cc6ddcd0070dd27205ba9a3dcb17552aeab..d678aceec10ad549131db03b6e8755726ec6f60b 100644 (file)
@@ -4,9 +4,9 @@ static void test()
 {
   vector signed int va = {-7,11,-13,17};
   vector signed int vb = {0,0,0,128};
+  vector signed int evd = {0,0,0,136};
 
   vector signed int vd = vec_sums (va, vb);
-  signed int r = vec_extract (vd, 3);
 
-  check (r == 136, "sums");
+  check (vec_all_eq (vd, evd), "sums");
 }