This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
"xordi3" pattern in arm.md
- To: gcc at gcc dot gnu dot org
- Subject: "xordi3" pattern in arm.md
- From: Philip Blundell <philb at gnu dot org>
- Date: Tue, 15 May 2001 21:38:17 +0100
What purpose does this pattern serve? It just performs splitting, and a test
case like the one below seems to produce rather better code without it.
void g (unsigned long long);
f(unsigned long long l)
{ g(l ^ 0x1000000010000000ULL); }
compare:
f:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, current_function_anonymous_args = 0
stmfd sp!, {r4, lr}
adr r3, .L2
ldmia r3, {r3-r4}
eor r0, r0, r3
eor r1, r1, r4
@ Sibcall epilogue
ldmfd sp!, {r4, lr}
b g
.L3:
.align 2
.L2:
.word 268435456
.word 268435456
and:
f:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, current_function_anonymous_args = 0
str lr, [sp, #-4]!
eor r0, r0, #268435456
eor r1, r1, #268435456
@ Sibcall epilogue
ldr lr, [sp], #4
b g
p.