From: Bill Schmidt Date: Thu, 26 Mar 2015 14:10:40 +0000 (+0000) Subject: vsx.md (*vsx_extract__zero): Remove endianness requirement. X-Git-Tag: releases/gcc-4.8.5~194 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4299a1ac4f9f2989a4e0a7238dbd26c020575e0d;p=thirdparty%2Fgcc.git vsx.md (*vsx_extract__zero): Remove endianness requirement. [gcc] 2015-03-26 Bill Schmidt * config/rs6000/vsx.md (*vsx_extract__zero): Remove endianness requirement. (*vsx_extract__one_le): Remove define_insn. [gcc/testsuite] 2015-03-26 Bill Schmidt * gcc.dg/vmx/extract-vsx.c: Add more cases. From-SVN: r221696 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 291f7b3a29f4..7db0d5c88468 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-03-26 Bill Schmidt + + * config/rs6000/vsx.md (*vsx_extract__zero): Remove + endianness requirement. + (*vsx_extract__one_le): Remove define_insn. + 2015-03-26 Oleg Endo Backport from mainline diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index 8f171946d86c..0d85ccab138a 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -1781,22 +1781,7 @@ (vec_select: (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z,Z,Z") (parallel [(const_int 0)])))] - "VECTOR_MEM_VSX_P (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__one_le" - [(set (match_operand: 0 "vsx_register_operand" "=ws,d,?wa") - (vec_select: - (match_operand:VSX_D 1 "indexed_or_indirect_operand" "Z,Z,Z") - (parallel [(const_int 1)])))] - "VECTOR_MEM_VSX_P (mode) && !WORDS_BIG_ENDIAN" + "VECTOR_MEM_VSX_P (mode)" "lxsd%U1x %x0,%y1" [(set (attr "type") (if_then_else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c2630cb2e1c3..e4a407f9e1ab 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-03-26 Bill Schmidt + + * gcc.dg/vmx/extract-vsx.c: Add more cases. + 2015-03-21 Mikael Morin PR fortran/61138 diff --git a/gcc/testsuite/gcc.dg/vmx/extract-vsx.c b/gcc/testsuite/gcc.dg/vmx/extract-vsx.c index cd34a2ae3d3e..1695094228bd 100644 --- a/gcc/testsuite/gcc.dg/vmx/extract-vsx.c +++ b/gcc/testsuite/gcc.dg/vmx/extract-vsx.c @@ -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"); }