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 | 8 |
8 declare void @llvm.nacl.atomic.fence.all() | 9 declare void @llvm.nacl.atomic.fence.all() |
9 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) | 10 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) |
10 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) | 11 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) |
11 | 12 |
12 @g32_a = internal global [4 x i8] zeroinitializer, align 4 | 13 @g32_a = internal global [4 x i8] zeroinitializer, align 4 |
13 @g32_b = internal global [4 x i8] zeroinitializer, align 4 | 14 @g32_b = internal global [4 x i8] zeroinitializer, align 4 |
14 @g32_c = internal global [4 x i8] zeroinitializer, align 4 | 15 @g32_c = internal global [4 x i8] zeroinitializer, align 4 |
15 @g32_d = internal global [4 x i8] c"\02\00\00\00", align 4 | 16 @g32_d = internal global [4 x i8] c"\02\00\00\00", align 4 |
16 | 17 |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 } | 208 } |
208 ; CHECK-LABEL: could_have_hoisted_loads | 209 ; CHECK-LABEL: could_have_hoisted_loads |
209 ; CHECK: lea {{.*}}, g32_d | 210 ; CHECK: lea {{.*}}, g32_d |
210 ; CHECK: je {{.*}} | 211 ; CHECK: je {{.*}} |
211 ; CHECK: jmp {{.*}} | 212 ; CHECK: jmp {{.*}} |
212 ; CHECK: mov {{.*}}, dword ptr | 213 ; CHECK: mov {{.*}}, dword ptr |
213 ; CHECK: ret | 214 ; CHECK: ret |
214 ; CHECK: mfence | 215 ; CHECK: mfence |
215 ; CHECK: mov {{.*}}, dword ptr | 216 ; CHECK: mov {{.*}}, dword ptr |
216 ; CHECK: ret | 217 ; CHECK: ret |
OLD | NEW |