[PR40457] [arm] expand SI-aligned movdi into pair of movsi
When expanding a misaligned DImode move, emit aligned SImode moves if the parts are sufficiently aligned. This enables neighboring stores to be peephole-combined into stm, as expected by the PR40457 testcase, even after SLP vectorizes the originally aligned SImode stores into a misaligned DImode store. for gcc/ChangeLog PR target/40457 * config/arm/arm.md (movmisaligndi): Prefer aligned SImode moves.
This commit is contained in:
parent
ccd4df81aa
commit
acddf6665f
1 changed files with 10 additions and 2 deletions
|
@ -12783,8 +12783,16 @@
|
|||
rtx hi_op0 = gen_highpart_mode (SImode, DImode, operands[0]);
|
||||
rtx hi_op1 = gen_highpart_mode (SImode, DImode, operands[1]);
|
||||
|
||||
emit_insn (gen_movmisalignsi (lo_op0, lo_op1));
|
||||
emit_insn (gen_movmisalignsi (hi_op0, hi_op1));
|
||||
if (aligned_operand (lo_op0, SImode) && aligned_operand (lo_op1, SImode))
|
||||
{
|
||||
emit_move_insn (lo_op0, lo_op1);
|
||||
emit_move_insn (hi_op0, hi_op1);
|
||||
}
|
||||
else
|
||||
{
|
||||
emit_insn (gen_movmisalignsi (lo_op0, lo_op1));
|
||||
emit_insn (gen_movmisalignsi (hi_op0, hi_op1));
|
||||
}
|
||||
DONE;
|
||||
})
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue