| 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 |