[AArch64] Improve load/store optimizer to handle LDUR + LDR (take 3).
authorChad Rosier <mcrosier@codeaurora.org>
Thu, 4 Feb 2016 18:59:49 +0000 (18:59 +0000)
committerChad Rosier <mcrosier@codeaurora.org>
Thu, 4 Feb 2016 18:59:49 +0000 (18:59 +0000)
commit05f8020cdfda418d575d2e479249033317ec0f67
treeca9d27d75eb89b95d878212dc0c1c9eb97474241
parent9837ef56b45486930a50f4c0b31c37d4f71be957
[AArch64] Improve load/store optimizer to handle LDUR + LDR (take 3).

This patch allows the mixing of scaled and unscaled load/stores to form
load/store pairs.

PR24465
http://reviews.llvm.org/D12116
Many thanks to Ahmed and Michael for fixes and code review.

This is a reapplication of r246769 and r259790.  The tramp3d failure was caused
by an incorrect refactoring in the patch.  Specifically, we weren't always
properly clearing the SExtIdx flag.

llvm-svn: 259812
llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
llvm/test/CodeGen/AArch64/ldp-stp-scaled-unscaled-pairs.ll [new file with mode: 0644]