| Index: tests_lit/llvm2ice_tests/nacl-atomic-errors.ll
|
| diff --git a/tests_lit/llvm2ice_tests/nacl-atomic-errors.ll b/tests_lit/llvm2ice_tests/nacl-atomic-errors.ll
|
| index 92de7aac5fa8c50cabbdfa0259c88221fe5562e0..4c65d38efff5fb6bb5b9fa4a3730a1f91dae931a 100644
|
| --- a/tests_lit/llvm2ice_tests/nacl-atomic-errors.ll
|
| +++ b/tests_lit/llvm2ice_tests/nacl-atomic-errors.ll
|
| @@ -19,8 +19,8 @@ declare void @llvm.nacl.atomic.fence(i32)
|
| declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)
|
|
|
| ;;; Load
|
| -;;; Check unexpected memory order parameter (only sequential
|
| -;;; consistency == 6 is currently allowed).
|
| +;;; Check unexpected memory order parameter (release=4 and acq_rel=5
|
| +;;; are disallowed).
|
|
|
| define i32 @error_atomic_load_8(i32 %iptr) {
|
| entry:
|
| @@ -34,7 +34,7 @@ entry:
|
| define i32 @error_atomic_load_16(i32 %iptr) {
|
| entry:
|
| %ptr = inttoptr i32 %iptr to i16*
|
| - %i = call i16 @llvm.nacl.atomic.load.i16(i16* %ptr, i32 1)
|
| + %i = call i16 @llvm.nacl.atomic.load.i16(i16* %ptr, i32 4)
|
| %r = zext i16 %i to i32
|
| ret i32 %r
|
| }
|
| @@ -43,13 +43,14 @@ entry:
|
| define i64 @error_atomic_load_64(i32 %iptr) {
|
| entry:
|
| %ptr = inttoptr i32 %iptr to i64*
|
| - %r = call i64 @llvm.nacl.atomic.load.i64(i64* %ptr, i32 2)
|
| + %r = call i64 @llvm.nacl.atomic.load.i64(i64* %ptr, i32 5)
|
| ret i64 %r
|
| }
|
| ; CHECK: Unexpected memory ordering for AtomicLoad
|
|
|
|
|
| ;;; Store
|
| +;;; consume=2, acquire=3, acq_rel=5 are disallowed
|
|
|
| define void @error_atomic_store_32(i32 %iptr, i32 %v) {
|
| entry:
|
| @@ -70,19 +71,20 @@ entry:
|
| define void @error_atomic_store_64_const(i32 %iptr) {
|
| entry:
|
| %ptr = inttoptr i32 %iptr to i64*
|
| - call void @llvm.nacl.atomic.store.i64(i64 12345678901234, i64* %ptr, i32 4)
|
| + call void @llvm.nacl.atomic.store.i64(i64 12345678901234, i64* %ptr, i32 5)
|
| ret void
|
| }
|
| ; CHECK: Unexpected memory ordering for AtomicStore
|
|
|
| ;;; RMW
|
| ;;; Test atomic memory order and operation.
|
| +;;; All modes 1:6 allowed.
|
|
|
| define i32 @error_atomic_rmw_add_8(i32 %iptr, i32 %v) {
|
| entry:
|
| %trunc = trunc i32 %v to i8
|
| %ptr = inttoptr i32 %iptr to i8*
|
| - %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i8* %ptr, i8 %trunc, i32 5)
|
| + %a = call i8 @llvm.nacl.atomic.rmw.i8(i32 1, i8* %ptr, i8 %trunc, i32 0)
|
| %a_ext = zext i8 %a to i32
|
| ret i32 %a_ext
|
| }
|
| @@ -91,7 +93,7 @@ entry:
|
| define i64 @error_atomic_rmw_add_64(i32 %iptr, i64 %v) {
|
| entry:
|
| %ptr = inttoptr i32 %iptr to i64*
|
| - %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v, i32 4)
|
| + %a = call i64 @llvm.nacl.atomic.rmw.i64(i32 1, i64* %ptr, i64 %v, i32 7)
|
| ret i64 %a
|
| }
|
| ; CHECK: Unexpected memory ordering for AtomicRMW
|
| @@ -131,7 +133,7 @@ entry:
|
| i32 %desired, i32 0, i32 6)
|
| ret i32 %old
|
| }
|
| -; CHECK: Unexpected memory ordering (success) for AtomicCmpxchg
|
| +; CHECK: Unexpected memory ordering for AtomicCmpxchg
|
|
|
| define i32 @error_atomic_cmpxchg_32_failure(i32 %iptr, i32 %expected, i32 %desired) {
|
| entry:
|
| @@ -140,22 +142,22 @@ entry:
|
| i32 %desired, i32 6, i32 0)
|
| ret i32 %old
|
| }
|
| -; CHECK: Unexpected memory ordering (failure) for AtomicCmpxchg
|
| +; CHECK: Unexpected memory ordering for AtomicCmpxchg
|
|
|
| define i64 @error_atomic_cmpxchg_64_failure(i32 %iptr, i64 %expected, i64 %desired) {
|
| entry:
|
| %ptr = inttoptr i32 %iptr to i64*
|
| %old = call i64 @llvm.nacl.atomic.cmpxchg.i64(i64* %ptr, i64 %expected,
|
| - i64 %desired, i32 6, i32 3)
|
| + i64 %desired, i32 4, i32 1)
|
| ret i64 %old
|
| }
|
| -; CHECK: Unexpected memory ordering (failure) for AtomicCmpxchg
|
| +; CHECK: Unexpected memory ordering for AtomicCmpxchg
|
|
|
| ;;; Fence and is-lock-free.
|
|
|
| define void @error_atomic_fence() {
|
| entry:
|
| - call void @llvm.nacl.atomic.fence(i32 1)
|
| + call void @llvm.nacl.atomic.fence(i32 0)
|
| ret void
|
| }
|
| ; CHECK: Unexpected memory ordering for AtomicFence
|
|
|