Commit 9aa483a2 by Kyrylo Tkachov Committed by Kyrylo Tkachov

[ARM] PR target/79145 Fix xordi3 expander for immediate operands in iWMMXt

	PR target/79145
	* config/arm/arm.md (xordi3): Force constant operand into a register
	for TARGET_IWMMXT.

	* gcc.target/arm/pr79145.c: New test.

From-SVN: r244894
parent a5a22027
2016-01-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/79145
* config/arm/arm.md (xordi3): Force constant operand into a register
for TARGET_IWMMXT.
2016-01-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* doc/invoke.texi (-fstore-merging): Correct default optimization
levels at which it is enabled.
(-O): Move -fstore-merging from list to...
......
......@@ -3313,7 +3313,14 @@
(xor:DI (match_operand:DI 1 "s_register_operand" "")
(match_operand:DI 2 "arm_xordi_operand" "")))]
"TARGET_32BIT"
""
{
/* The iWMMXt pattern for xordi3 accepts only register operands but we want
to reuse this expander for all TARGET_32BIT targets so just force the
constants into a register. Unlike for the anddi3 and iordi3 there are
no NEON instructions that take an immediate. */
if (TARGET_IWMMXT && !REG_P (operands[2]))
operands[2] = force_reg (DImode, operands[2]);
}
)
(define_insn_and_split "*xordi3_insn"
......
2016-01-25 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/79145
* gcc.target/arm/pr79145.c: New test.
2017-01-25 Richard Biener <rguenther@suse.de>
PR debug/78363
......
/* { dg-do compile } */
/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
/* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
/* { dg-require-effective-target arm32 } */
/* { dg-require-effective-target arm_iwmmxt_ok } */
/* { dg-options "-mcpu=iwmmxt" } */
int
main (void)
{
volatile long long t1;
t1 ^= 0x55;
return 0;
}
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