diff options
author | H.J. Lu <hjl@gcc.gnu.org> | 2010-02-26 05:18:17 -0800 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2010-02-26 05:18:17 -0800 |
commit | 7ce321b3e30e47927e1b25bcc132a5c329fd7de3 (patch) | |
tree | d980a58d6ab174fac3c32f8a69ace333ef86355e | |
parent | b55b184a4ac073855ba3637e59fe23a4c7e6ff45 (diff) | |
download | gcc-7ce321b3e30e47927e1b25bcc132a5c329fd7de3.zip gcc-7ce321b3e30e47927e1b25bcc132a5c329fd7de3.tar.gz gcc-7ce321b3e30e47927e1b25bcc132a5c329fd7de3.tar.bz2 |
Correct expand_vec_perm_blend in i386.c for V8HImode merge.
gcc/
2010-02-26 Uros Bizjak <ubizjak@gmail.com>
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 <hongjiu.lu@intel.com>
PR target/43175
* gcc.target/i386/vperm-v4si-2-sse4.c: New.
From-SVN: r157087
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v4si-2-sse4.c | 4 |
4 files changed, 19 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6374791..5c889ad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-02-26 Uros Bizjak <ubizjak@gmail.com> + + 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 <jan.kratochvil@redhat.com> * doc/invoke.texi (-fvar-tracking-assignments): Fix typo. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index bb03cba..3a3b2ac 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 f738c32..8c78047 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-02-26 H.J. Lu <hongjiu.lu@intel.com> + + PR target/43175 + * gcc.target/i386/vperm-v4si-2-sse4.c: New. + 2010-02-25 Eric Botcazou <ebotcazou@adacore.com> * 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 0000000..1f35b82 --- /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" |