diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-08-31 17:52:22 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-08-31 17:52:22 +0000 |
commit | 4d3f3294535a3b622c715f2d9675d4f3e86c3378 (patch) | |
tree | 74eb4fbf695376756e3bf395e6d8d85809a8cbcb /test | |
parent | 334b5305a6c381328178333b9b284b1c04b24f59 (diff) | |
download | external_llvm-4d3f3294535a3b622c715f2d9675d4f3e86c3378.zip external_llvm-4d3f3294535a3b622c715f2d9675d4f3e86c3378.tar.gz external_llvm-4d3f3294535a3b622c715f2d9675d4f3e86c3378.tar.bz2 |
64-bit atomic cmpxchg for ARM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138868 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/ARM/atomic-64bit.ll | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/atomic-64bit.ll b/test/CodeGen/ARM/atomic-64bit.ll index 9a2b998..abe1acc 100644 --- a/test/CodeGen/ARM/atomic-64bit.ll +++ b/test/CodeGen/ARM/atomic-64bit.ll @@ -81,3 +81,18 @@ define i64 @test6(i64* %ptr, i64 %val) { %r = atomicrmw xchg i64* %ptr, i64 %val seq_cst ret i64 %r } + +define i64 @test7(i64* %ptr, i64 %val1, i64 %val2) { +; CHECK: test7 +; CHECK: dmb ish +; CHECK: ldrexd r2, r3 +; CHECK: cmp r2 +; CHECK: cmpeq r3 +; CHECK: bne +; CHECK: strexd {{r[0-9]+}}, r0, r1 +; CHECK: cmp +; CHECK: bne +; CHECK: dmb ish + %r = cmpxchg i64* %ptr, i64 %val1, i64 %val2 seq_cst + ret i64 %r +} |