Index: tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll |
diff --git a/tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll b/tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll |
index ee81a090bd683a6f47e633dde43da9e539d00ffc..4b8d5207f328e9ed2224e505718116d9a6914112 100644 |
--- a/tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll |
+++ b/tests_lit/llvm2ice_tests/nacl-atomic-intrinsics.ll |
@@ -771,6 +771,16 @@ entry: |
; need to be reshuffled via movs. The next test stores the result |
; somewhere, so in that case they do need to be mov'ed. |
+define i64 @test_atomic_cmpxchg_64_undef(i32 %iptr, i64 %desired) { |
+entry: |
+ %ptr = inttoptr i32 %iptr to i64* |
+ %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 undef, |
+ i64 %desired, i32 6, i32 6) |
+ ret i64 %old |
+} |
+; CHECK-LABEL: test_atomic_cmpxchg_64_undef |
+; CHECK: lock cmpxchg8b QWORD PTR [e{{.[^x]}}+0x0] |
+ |
; Test a case where %old really does need to be copied out of edx:eax. |
define void @test_atomic_cmpxchg_64_store(i32 %ret_iptr, i32 %iptr, i64 %expected, i64 %desired) { |
entry: |