aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-08-31 17:52:22 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-08-31 17:52:22 +0000
commit4d3f3294535a3b622c715f2d9675d4f3e86c3378 (patch)
tree74eb4fbf695376756e3bf395e6d8d85809a8cbcb /test
parent334b5305a6c381328178333b9b284b1c04b24f59 (diff)
downloadexternal_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.ll15
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
+}