Commit 3416dd87 by Ramana Radhakrishnan Committed by Ramana Radhakrishnan

[ARM] Legitimize addresses for movmisalign<mode> for Neon.

2014-03-03  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	* config/arm/neon.md (*movmisalign<mode>): Legitimize addresses
	not handled by recognizers.

From-SVN: r208269
parent b3bdf019
2014-03-03 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/neon.md (*movmisalign<mode>): Legitimize addresses
not handled by recognizers.
2014-03-03 Jakub Jelinek <jakub@redhat.com>
PR middle-end/60175
......
......@@ -245,12 +245,23 @@
UNSPEC_MISALIGNED_ACCESS))]
"TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access"
{
rtx adjust_mem;
/* This pattern is not permitted to fail during expansion: if both arguments
are non-registers (e.g. memory := constant, which can be created by the
auto-vectorizer), force operand 1 into a register. */
if (!s_register_operand (operands[0], <MODE>mode)
&& !s_register_operand (operands[1], <MODE>mode))
operands[1] = force_reg (<MODE>mode, operands[1]);
if (s_register_operand (operands[0], <MODE>mode))
adjust_mem = operands[1];
else
adjust_mem = operands[0];
/* Legitimize address. */
if (!neon_vector_mem_operand (adjust_mem, 2, true))
XEXP (adjust_mem, 0) = force_reg (Pmode, XEXP (adjust_mem, 0));
})
(define_insn "*movmisalign<mode>_neon_store"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment