OSDN Git Service

2012-05-25 Alexander Ivchenko <alexander.ivchenko@intel.com>
authorkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 May 2012 13:34:07 +0000 (13:34 +0000)
committerkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 May 2012 13:34:07 +0000 (13:34 +0000)
        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

gcc/ChangeLog
gcc/config/i386/i386.c

index 329d9b5..ecf34d8 100644 (file)
@@ -1,3 +1,9 @@
+2012-05-25  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+
+       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  <ebotcazou@adacore.com>
 
        PR ada/52362
index acc8ea9..2844e7f 100644 (file)
@@ -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
     {