From 4066b65158314dd0bb5b47d5c87ee06612a69383 Mon Sep 17 00:00:00 2001 From: hjl Date: Fri, 26 Feb 2010 13:18:17 +0000 Subject: [PATCH] Correct expand_vec_perm_blend in i386.c for V8HImode merge. gcc/ 2010-02-26 Uros Bizjak PR target/43175 * config/i386/i386.c (expand_vec_perm_blend): Use correct operands in V8HImode subregs. Fix operand order in VEC_MERGE rtx. gcc/testsuite/ 2010-02-26 H.J. Lu PR target/43175 * gcc.target/i386/vperm-v4si-2-sse4.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157087 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.c | 6 +++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/i386/vperm-v4si-2-sse4.c | 4 ++++ 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/vperm-v4si-2-sse4.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 637479115175..5c889ada3f79 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-02-26 Uros Bizjak + + PR target/43175 + * config/i386/i386.c (expand_vec_perm_blend): Use correct + operands in V8HImode subregs. Fix operand order in VEC_MERGE + rtx. + 2010-02-26 Jan Kratochvil * doc/invoke.texi (-fvar-tracking-assignments): Fix typo. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index bb03cba0a046..3a3b2ac943b7 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -29144,8 +29144,8 @@ expand_vec_perm_blend (struct expand_vec_perm_d *d) do_subreg: vmode = V8HImode; target = gen_lowpart (vmode, target); - op0 = gen_lowpart (vmode, target); - op1 = gen_lowpart (vmode, target); + op0 = gen_lowpart (vmode, op0); + op1 = gen_lowpart (vmode, op1); break; default: @@ -29153,7 +29153,7 @@ expand_vec_perm_blend (struct expand_vec_perm_d *d) } /* This matches five different patterns with the different modes. */ - x = gen_rtx_VEC_MERGE (vmode, op0, op1, GEN_INT (mask)); + x = gen_rtx_VEC_MERGE (vmode, op1, op0, GEN_INT (mask)); x = gen_rtx_SET (VOIDmode, target, x); emit_insn (x); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f738c3222363..8c780474bcc1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-02-26 H.J. Lu + + PR target/43175 + * gcc.target/i386/vperm-v4si-2-sse4.c: New. + 2010-02-25 Eric Botcazou * g++.dg/abi/packed1.C: Expect warning on the SPARC. diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4si-2-sse4.c b/gcc/testsuite/gcc.target/i386/vperm-v4si-2-sse4.c new file mode 100644 index 000000000000..1f35b825c157 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v4si-2-sse4.c @@ -0,0 +1,4 @@ +/* { dg-do run } */ +/* { dg-require-effective-target sse4 } */ +/* { dg-options "-O -msse4" } */ +#include "vperm-v4si-2.c" -- 2.47.2