OLD | NEW |
1 ; Test that loads/stores don't move across a nacl.atomic.fence.all. | 1 ; Test that loads/stores don't move across a nacl.atomic.fence.all. |
2 ; This should apply to both atomic and non-atomic loads/stores | 2 ; This should apply to both atomic and non-atomic loads/stores |
3 ; (unlike the non-"all" variety of nacl.atomic.fence, which only | 3 ; (unlike the non-"all" variety of nacl.atomic.fence, which only |
4 ; applies to atomic load/stores). | 4 ; applies to atomic load/stores). |
5 ; | 5 ; |
6 ; RUN: %llvm2ice -O2 --verbose none %s | FileCheck %s | 6 ; RUN: %llvm2ice -O2 --verbose none %s | FileCheck %s |
7 ; RUN: %llvm2ice -O2 --verbose none %s | llvm-mc -x86-asm-syntax=intel | 7 ; RUIN: %llvm2ice -O2 --verbose none %s \ |
| 8 ; RUIN: | llvm-mc -arch=x86 -x86-asm-syntax=intel -filetype=obj |
8 | 9 |
9 declare void @llvm.nacl.atomic.fence.all() | 10 declare void @llvm.nacl.atomic.fence.all() |
10 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) | 11 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) |
11 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) | 12 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) |
12 | 13 |
13 @g32_a = internal global [4 x i8] zeroinitializer, align 4 | 14 @g32_a = internal global [4 x i8] zeroinitializer, align 4 |
14 @g32_b = internal global [4 x i8] zeroinitializer, align 4 | 15 @g32_b = internal global [4 x i8] zeroinitializer, align 4 |
15 @g32_c = internal global [4 x i8] zeroinitializer, align 4 | 16 @g32_c = internal global [4 x i8] zeroinitializer, align 4 |
16 @g32_d = internal global [4 x i8] c"\02\00\00\00", align 4 | 17 @g32_d = internal global [4 x i8] c"\02\00\00\00", align 4 |
17 | 18 |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 } | 209 } |
209 ; CHECK-LABEL: could_have_hoisted_loads | 210 ; CHECK-LABEL: could_have_hoisted_loads |
210 ; CHECK: lea {{.*}}, g32_d | 211 ; CHECK: lea {{.*}}, g32_d |
211 ; CHECK: je {{.*}} | 212 ; CHECK: je {{.*}} |
212 ; CHECK: jmp {{.*}} | 213 ; CHECK: jmp {{.*}} |
213 ; CHECK: mov {{.*}}, dword ptr | 214 ; CHECK: mov {{.*}}, dword ptr |
214 ; CHECK: ret | 215 ; CHECK: ret |
215 ; CHECK: mfence | 216 ; CHECK: mfence |
216 ; CHECK: mov {{.*}}, dword ptr | 217 ; CHECK: mov {{.*}}, dword ptr |
217 ; CHECK: ret | 218 ; CHECK: ret |
OLD | NEW |