===================================================================
@@ -20073,7 +20073,7 @@ ix86_expand_vec_perm (rtx operands[])
return;
case V8SFmode:
- mask = gen_lowpart (V8SFmode, mask);
+ mask = gen_lowpart (V8SImode, mask);
if (one_operand_shuffle)
emit_insn (gen_avx2_permvarv8sf (target, op0, mask));
else
@@ -36655,7 +36655,9 @@ expand_vec_perm_interleave2 (struct expand_vec_per
else
dfinal.perm[i] = e;
}
- dfinal.op0 = gen_reg_rtx (dfinal.vmode);
+
+ if (!d->testing_p)
+ dfinal.op0 = gen_reg_rtx (dfinal.vmode);
dfinal.op1 = dfinal.op0;
dremap.target = dfinal.op0;
@@ -37052,6 +37054,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm
switch (d->vmode)
{
case V4DFmode:
+ if (d->testing_p)
+ break;
t1 = gen_reg_rtx (V4DFmode);
t2 = gen_reg_rtx (V4DFmode);
@@ -37071,6 +37075,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm
{
int mask = odd ? 0xdd : 0x88;
+ if (d->testing_p)
+ break;
t1 = gen_reg_rtx (V8SFmode);
t2 = gen_reg_rtx (V8SFmode);
t3 = gen_reg_rtx (V8SFmode);
@@ -37112,6 +37118,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm
return expand_vec_perm_pshufb2 (d);
else
{
+ if (d->testing_p)
+ break;
/* We need 2*log2(N)-1 operations to achieve odd/even
with interleave. */
t1 = gen_reg_rtx (V8HImode);
@@ -37133,6 +37141,8 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm
return expand_vec_perm_pshufb2 (d);
else
{
+ if (d->testing_p)
+ break;
t1 = gen_reg_rtx (V16QImode);
t2 = gen_reg_rtx (V16QImode);
t3 = gen_reg_rtx (V16QImode);
@@ -37165,6 +37175,9 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm
return expand_vec_perm_even_odd_1 (&d_copy, odd);
}
+ if (d->testing_p)
+ break;
+
t1 = gen_reg_rtx (V4DImode);
t2 = gen_reg_rtx (V4DImode);
@@ -37191,6 +37204,9 @@ expand_vec_perm_even_odd_1 (struct expand_vec_perm
return expand_vec_perm_even_odd_1 (&d_copy, odd);
}
+ if (d->testing_p)
+ break;
+
t1 = gen_reg_rtx (V8SImode);
t2 = gen_reg_rtx (V8SImode);
@@ -37283,6 +37299,8 @@ expand_vec_perm_broadcast_1 (struct expand_vec_per
case V16QImode:
/* These can be implemented via interleave. We save one insn by
stopping once we have promoted to V4SImode and then use pshufd. */
+ if (d->testing_p)
+ return true;
do
{
rtx dest;