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)
commit33fe993f2ec3a146e5954db14aa9a751141677f0
treede28a35ca3db99ec629451e0fa50509093d765e3
parent6b3ed2b8214778b8eedae81be5193d1b89c49a66
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210917 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/AtomicExpandLoadLinkedPass.cpp
test/CodeGen/ARM/atomic-64bit.ll
test/CodeGen/ARM/cmpxchg-weak.ll [new file with mode: 0644]
test/Transforms/AtomicExpandLoadLinked/ARM/atomic-expansion-v7.ll
test/Transforms/AtomicExpandLoadLinked/ARM/atomic-expansion-v8.ll
test/Transforms/AtomicExpandLoadLinked/ARM/cmpxchg-weak.ll [new file with mode: 0644]