diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2015-06-09 20:59:41 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2015-06-09 20:59:41 +0000 |
commit | cf90acc1041fea47db7d862a21b24534b5df21b0 (patch) | |
tree | d451df3b64c0c63a853612fa919c5dfca2821a1d /llvm/lib/CodeGen/AsmPrinter/WinException.cpp | |
parent | 8ae395de66bec80bfdfb72da8e1217abeec9b913 (diff) | |
download | bcm5719-llvm-cf90acc1041fea47db7d862a21b24534b5df21b0.tar.gz bcm5719-llvm-cf90acc1041fea47db7d862a21b24534b5df21b0.zip |
[AArch64] Remove an overly conservative check when generating store pairs.
Store instructions do not modify register values and therefore it's safe
to form a store pair even if the source register has been read in between
the two store instructions.
Previously, the read of w1 (see below) prevented the formation of a stp.
str w0, [x2]
ldr w8, [x2, #8]
add w0, w8, w1
str w1, [x2, #4]
ret
We now generate the following code.
stp w0, w1, [x2]
ldr w8, [x2, #8]
add w0, w8, w1
ret
All correctness tests with -Ofast on A57 with Spec200x and EEMBC pass.
Performance results for SPEC2K were within noise.
llvm-svn: 239432
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/WinException.cpp')
0 files changed, 0 insertions, 0 deletions