Atomics: make use of the "cmpxchg weak" instruction.
authorTim Northover <tnorthover@apple.com>
Fri, 13 Jun 2014 16:45:52 +0000 (16:45 +0000)
committerTim Northover <tnorthover@apple.com>
Fri, 13 Jun 2014 16:45:52 +0000 (16:45 +0000)
commit20b9f739eb84af9657c824f0d08396031a9e21d8
tree711be577f42dc5fcb958268a0d6e79081fe084ca
parentd039abdeeb2ac2476277c275ed4065440ef1fbb0
Atomics: make use of the "cmpxchg weak" instruction.

This also simplifies the IR we create slightly: instead of working out
where success & failure should go manually, it turns out we can just
always jump to a success/failure block created for the purpose. Later
phases will sort out the mess without much difficulty.

llvm-svn: 210917
llvm/lib/CodeGen/AtomicExpandLoadLinkedPass.cpp
llvm/test/CodeGen/ARM/atomic-64bit.ll
llvm/test/CodeGen/ARM/cmpxchg-weak.ll [new file with mode: 0644]
llvm/test/Transforms/AtomicExpandLoadLinked/ARM/atomic-expansion-v7.ll
llvm/test/Transforms/AtomicExpandLoadLinked/ARM/atomic-expansion-v8.ll
llvm/test/Transforms/AtomicExpandLoadLinked/ARM/cmpxchg-weak.ll [new file with mode: 0644]