i386: Improve variable permutation insn avoidance [PR101021]
Emit constant permutation insn directly from expand_vec_perm_shufb. 2021-06-13 Uroš Bizjak <ubizjak@gmail.com> gcc/ PR target/101021 * config/i386/i386-expand.c (expand_vec_perm_pshufb): Emit constant permutation insn directly from here.
This commit is contained in:
parent
291cd193f8
commit
681143b9b9
1 changed files with 7 additions and 4 deletions
|
@ -17593,13 +17593,16 @@ expand_vec_perm_pshufb (struct expand_vec_perm_d *d)
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Try to avoid variable permutation instruction. */
|
||||
if (canonicalize_vector_int_perm (d, &nd) && expand_vec_perm_1 (&nd))
|
||||
return false;
|
||||
|
||||
if (d->testing_p)
|
||||
return true;
|
||||
|
||||
/* Try to avoid variable permutation instruction. */
|
||||
if (canonicalize_vector_int_perm (d, &nd) && expand_vec_perm_1 (&nd))
|
||||
{
|
||||
emit_move_insn (d->target, gen_lowpart (d->vmode, nd.target));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (vmode == V8SImode)
|
||||
for (i = 0; i < 8; ++i)
|
||||
rperm[i] = GEN_INT ((d->perm[i * nelt / 8] * 8 / nelt) & 7);
|
||||
|
|
Loading…
Add table
Reference in a new issue