summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/warn-stack.ll
diff options
context:
space:
mode:
authorDaniel Sanders <daniel_l_sanders@apple.com>2017-12-04 20:39:32 +0000
committerDaniel Sanders <daniel_l_sanders@apple.com>2017-12-04 20:39:32 +0000
commit04e4f47e93e2bc26a80bf738c3692846ca622230 (patch)
tree1e9395e834862e14ab18a434eee7da723e821f10 /llvm/test/CodeGen/X86/warn-stack.ll
parentef573fa073e3a4ed71679bc461c37720a34f9a51 (diff)
downloadbcm5719-llvm-04e4f47e93e2bc26a80bf738c3692846ca622230.tar.gz
bcm5719-llvm-04e4f47e93e2bc26a80bf738c3692846ca622230.zip
[globalisel][tablegen] Split atomic load/store into separate opcode and enable for AArch64.
This patch splits atomics out of the generic G_LOAD/G_STORE and into their own G_ATOMIC_LOAD/G_ATOMIC_STORE. This is a pragmatic decision rather than a necessary one. Atomic load/store has little in implementation in common with non-atomic load/store. They tend to be handled very differently throughout the backend. It also has the nice side-effect of slightly improving the common-case performance at ISel since there's no longer a need for an atomicity check in the matcher table. All targets have been updated to remove the atomic load/store check from the G_LOAD/G_STORE path. AArch64 has also been updated to mark G_ATOMIC_LOAD/G_ATOMIC_STORE legal. There is one issue with this patch though which also affects the extending loads and truncating stores. The rules only match when an appropriate G_ANYEXT is present in the MIR. For example, (G_ATOMIC_STORE (G_TRUNC:s16 (G_ANYEXT:s32 (G_ATOMIC_LOAD:s16 X)))) will match but: (G_ATOMIC_STORE (G_ATOMIC_LOAD:s16 X)) will not. This shouldn't be a problem at the moment, but as we get better at eliminating extends/truncates we'll likely start failing to match in some cases. The current plan is to fix this in a patch that changes the representation of extending-load/truncating-store to allow the MMO to describe a different type to the operation. llvm-svn: 319691
Diffstat (limited to 'llvm/test/CodeGen/X86/warn-stack.ll')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud