From 7ce321b3e30e47927e1b25bcc132a5c329fd7de3 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 26 Feb 2010 05:18:17 -0800 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. From-SVN: r157087 --- 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 63747911517..5c889ada3f7 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 bb03cba0a04..3a3b2ac943b 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 f738c322236..8c780474bcc 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 00000000000..1f35b825c15 --- /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.30.2