[PATCH] [AArch64] Add register spill code for large super registers such as DPair, DTriple ...
Hao Liu
Hao.Liu at arm.com
Tue Jan 7 21:21:32 PST 2014
Hi Jakob,
Thanks for informing me about that.
I tried inline assembly to force spilling. But such spill is currently
implemented by stp and str, not vector store such as st1. I think this kind
of spill is different from the spill in StoreRegToStackSlot() ( in
AArch64InstrInfo.cpp ).
May example:
$ cat spill.ll
define void @f(double* nocapture %p) nounwind ssp {
entry:
tail call void asm sideeffect "", "~{q8}"() nounwind
ret void
}
$ llc -march=aarch64 -mattr=+neon < spill.ll
f: // @f
// BB#0: // %entry
sub sp, sp, #32
stp d9, d10, [sp, #16] // 16-byte Folded Spill
str d8, [sp, #8] // 8-byte Folded Spill
//APP
//NO_APP
ldr d8, [sp, #8] // 8-byte Folded Reload
ldp d9, d10, [sp, #16] // 16-byte Folded Reload
add sp, sp, #32
ret
Thanks,
-Hao
-----Original Message-----
From: Jakob Stoklund Olesen [mailto:stoklund at 2pi.dk]
Sent: Wednesday, January 08, 2014 2:11 AM
To: reviews+D2438+public+f7effb52e6d4cbbc at llvm-reviews.chandlerc.com
Cc: Tim Northover; Hao Liu; Commit Messages and Patches for LLVM
Subject: Re: [PATCH] [AArch64] Add register spill code for large super
registers such as DPair, DTriple ...
On Jan 7, 2014, at 3:03 AM, Hao Liu <Hao.Liu at arm.com> wrote:
>
> As in the last commit I removed the code for spilling/filling D tuples, I
re-add D tuple spill/fill code again.
>
> There is still no test cases for D tuples, as the original test cases are
too large (hundreds of lines) and difficult to be simplified. The situation
of D tuples is similar to Q tuples, so we don't need to worry too much about
the correctness of D tuples.
You can use inline assembly to force spilling. See for example
test/CodeGen/Thumb2/aligned-spill.ll
Thanks,
/jakob
More information about the llvm-commits
mailing list