This patch extends the Post-RA LoadStoreOptimizer to form STRD/LDRD instructions on thumb2. While the Pre-RA LDRD/STRD formation already catches many cases we can now also catch spills and reloads.
This builds upon http://reviews.llvm.org/D10140.
Paths
| Differential D10623
ARMLoadStoreOptimizer: Create LDRD/STRD on thumb2 ClosedPublic Authored by MatzeB on Jun 22 2015, 5:33 PM.
Details
Summary This patch extends the Post-RA LoadStoreOptimizer to form STRD/LDRD instructions on thumb2. While the Pre-RA LDRD/STRD formation already catches many cases we can now also catch spills and reloads. This builds upon http://reviews.llvm.org/D10140.
Diff Detail
Event TimelineMatzeB updated this object. Comment Actions With a few nitpicks, looks good to me. John, any comments?
MatzeB edited edge metadata. Comment ActionsThanks for the reviews! I put some of the cleanups suggested for FormCandidates() into the cleanup patch at http://reviews.llvm.org/D10140. The rest should be addressed in this new version.
This revision is now accepted and ready to land.Jul 2 2015, 3:02 AM Comment Actions Thanks for the review. I can't commit this yet until http://reviews.llvm.org/D10140 is approved. Closed by commit rL241926: ARMLoadStoreOptimizer: Create LDRD/STRD on thumb2 (authored by matze). · Explain WhyJul 10 2015, 11:29 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 28427 lib/Target/ARM/ARMLoadStoreOptimizer.cpp
test/CodeGen/ARM/2013-05-02-AAPCS-ByVal-Structs-C4-C5-VFP.ll
test/CodeGen/ARM/byval-align.ll
test/CodeGen/ARM/ldrd.ll
test/CodeGen/ARM/memset-inline.ll
test/CodeGen/Thumb2/aapcs.ll
|
nitpick: I'd have kept isi32Load(Opecode) in a bool IsLoad, and reused it on all cases.