]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
vsx.md (*vsx_extract_<mode>_zero): Remove endianness requirement.
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 26 Mar 2015 14:10:40 +0000 (14:10 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Thu, 26 Mar 2015 14:10:40 +0000 (14:10 +0000)
[gcc]

2015-03-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/vsx.md (*vsx_extract_<mode>_zero): Remove
endianness requirement.
(*vsx_extract_<mode>_one_le): Remove define_insn.

[gcc/testsuite]

2015-03-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.dg/vmx/extract-vsx.c: Add more cases.

From-SVN: r221696

gcc/ChangeLog
gcc/config/rs6000/vsx.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vmx/extract-vsx.c

index 291f7b3a29f4289c89ada24594d80a34ff39bf76..7db0d5c88468bb66285f5516906cea5d7c961c8f 100644 (file)
@@ -1,3 +1,9 @@
+2015-03-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * config/rs6000/vsx.md (*vsx_extract_<mode>_zero): Remove
+       endianness requirement.
+       (*vsx_extract_<mode>_one_le): Remove define_insn.
+
 2015-03-26  Oleg Endo  <olegendo@gcc.gnu.org>
 
        Backport from mainline
index 8f171946d86cd22706c8d956c4ba4aaa81c67651..0d85ccab138ac1b2a662b581168c7daf4b10309d 100644 (file)
        (vec_select:<VS_scalar>
         (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z,Z,Z")
         (parallel [(const_int 0)])))]
-  "VECTOR_MEM_VSX_P (<MODE>mode) && WORDS_BIG_ENDIAN"
-  "lxsd%U1x %x0,%y1"
-  [(set (attr "type")
-      (if_then_else
-       (match_test "update_indexed_address_mem (operands[1], VOIDmode)")
-       (const_string "fpload_ux")
-       (const_string "fpload")))
-   (set_attr "length" "4")])  
-
-;; Optimize extracting element 1 from memory for little endian
-(define_insn "*vsx_extract_<mode>_one_le"
-  [(set (match_operand:<VS_scalar> 0 "vsx_register_operand" "=ws,d,?wa")
-       (vec_select:<VS_scalar>
-        (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z,Z,Z")
-        (parallel [(const_int 1)])))]
-  "VECTOR_MEM_VSX_P (<MODE>mode) && !WORDS_BIG_ENDIAN"
+  "VECTOR_MEM_VSX_P (<MODE>mode)"
   "lxsd%U1x %x0,%y1"
   [(set (attr "type")
       (if_then_else
index c2630cb2e1c3a6bc2d4a6e9237f2f61027caff6e..e4a407f9e1ab53bfe90a623d4a9f03af62f950c1 100644 (file)
@@ -1,3 +1,7 @@
+2015-03-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       * gcc.dg/vmx/extract-vsx.c: Add more cases.
+
 2015-03-21  Mikael Morin  <mikael@gcc.gnu.org>
 
        PR fortran/61138
index cd34a2ae3d3e5c1029a489105e2ca4a6698215e2..1695094228bd84eb4478e3c01d971720a6b14cb9 100644 (file)
@@ -10,7 +10,11 @@ static void test()
   vector double vd = {0.0, 1.0};
 
   check (vec_extract (vl, 0) == 0, "vec_extract, vl, 0");
+  check (vec_extract (vl, 1) == 1, "vec_extract, vl, 1");
+  check (vec_extract (vd, 0) == 0.0, "vec_extract, vd, 0");
   check (vec_extract (vd, 1) == 1.0, "vec_extract, vd, 1");
   check (vl[0] == 0, "[], vl, 0");
-  check (vd[1] == 1.0, "[], vd, 0");
+  check (vl[1] == 1, "[], vl, 1");
+  check (vd[0] == 0.0, "[], vd, 0");
+  check (vd[1] == 1.0, "[], vd, 1");
 }