From: kyukhin Date: Fri, 25 May 2012 13:34:07 +0000 (+0000) Subject: 2012-05-25 Alexander Ivchenko X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=99ee13129e1d1660542cfc08cab822628cf8fed1 2012-05-25 Alexander Ivchenko PR target/53435 * config/i386/i386.c (ix86_expand_vec_perm): Use correct op. (ix86_expand_vec_perm): Use int mode instead of float. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@187882 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 329d9b5b8b4..ecf34d851c6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-05-25 Alexander Ivchenko + + PR target/53435 + * config/i386/i386.c (ix86_expand_vec_perm): Use correct op. + (ix86_expand_vec_perm): Use int mode instead of float. + 2012-05-25 Eric Botcazou PR ada/52362 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index acc8ea997c7..2844e7fb85c 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -19797,7 +19797,7 @@ ix86_expand_vec_perm (rtx operands[]) t1 = gen_reg_rtx (V8SImode); t2 = gen_reg_rtx (V8SImode); emit_insn (gen_avx2_permvarv8si (t1, op0, mask)); - emit_insn (gen_avx2_permvarv8si (t2, op0, mask)); + emit_insn (gen_avx2_permvarv8si (t2, op1, mask)); goto merge_two; } return; @@ -19830,10 +19830,10 @@ ix86_expand_vec_perm (rtx operands[]) case V4SFmode: t1 = gen_reg_rtx (V8SFmode); - t2 = gen_reg_rtx (V8SFmode); - mask = gen_lowpart (V4SFmode, mask); + t2 = gen_reg_rtx (V8SImode); + mask = gen_lowpart (V4SImode, mask); emit_insn (gen_avx_vec_concatv8sf (t1, op0, op1)); - emit_insn (gen_avx_vec_concatv8sf (t2, mask, mask)); + emit_insn (gen_avx_vec_concatv8si (t2, mask, mask)); emit_insn (gen_avx2_permvarv8sf (t1, t1, t2)); emit_insn (gen_avx_vextractf128v8sf (target, t1, const0_rtx)); return; @@ -35856,7 +35856,7 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d) else if (vmode == V32QImode) emit_insn (gen_avx2_pshufbv32qi3 (target, op0, vperm)); else - emit_insn (gen_avx2_permvarv8si (target, vperm, op0)); + emit_insn (gen_avx2_permvarv8si (target, op0, vperm)); } else {