re PR target/53435 ((ix86_expand_vec_perm) and (ix86_expand_vec_perm) do not pass arguments to avx2_permvar8s[f,i] correctly)
2012-05-21 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. (expand_vec_perm_pshufb): Remove handling of useseless type conversion. From-SVN: r187881
This commit is contained in:
parent
c7046906c3
commit
0ba89f9bb1
|
@ -1,3 +1,11 @@
|
|||
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.
|
||||
(expand_vec_perm_pshufb): Remove handling of useseless type
|
||||
conversion.
|
||||
|
||||
2012-05-25 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR ada/52362
|
||||
|
|
|
@ -19921,7 +19921,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;
|
||||
|
@ -19954,10 +19954,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;
|
||||
|
@ -36474,12 +36474,6 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d)
|
|||
gen_rtvec_v (GET_MODE_NUNITS (vmode), rperm));
|
||||
vperm = force_reg (vmode, vperm);
|
||||
|
||||
if (vmode == V8SImode && d->vmode == V8SFmode)
|
||||
{
|
||||
vmode = V8SFmode;
|
||||
vperm = gen_lowpart (vmode, vperm);
|
||||
}
|
||||
|
||||
target = gen_lowpart (vmode, d->target);
|
||||
op0 = gen_lowpart (vmode, d->op0);
|
||||
if (d->one_operand_p)
|
||||
|
|
Loading…
Reference in New Issue