| 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: %p2i -i %s --args -O2 --verbose none \ | 6 ; RUN: %p2i -i %s --args -O2 --verbose none \ |
| 7 ; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \ | 7 ; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \ |
| 8 ; RUN: | llvm-objdump -d -r -symbolize -x86-asm-syntax=intel - | FileCheck %s | 8 ; RUN: | llvm-objdump -d -r -symbolize -x86-asm-syntax=intel - | FileCheck %s |
| 9 | 9 |
| 10 ; TODO(jvoung): llvm-objdump doesn't symbolize global symbols well, so we | 10 ; TODO(jvoung): llvm-objdump doesn't symbolize global symbols well, so we |
| 11 ; have 0 == g32_a, 4 == g32_b, 8 == g32_c, 12 == g32_d | 11 ; have 0 == g32_a, 4 == g32_b, 8 == g32_c, 12 == g32_d |
| 12 | 12 |
| 13 declare void @llvm.nacl.atomic.fence.all() | 13 declare void @llvm.nacl.atomic.fence.all() |
| 14 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) | 14 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) |
| 15 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) | 15 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) |
| 16 | 16 |
| 17 @g32_a = internal global [4 x i8] zeroinitializer, align 4 | 17 @g32_a = internal global [4 x i8] zeroinitializer, align 4 |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 } | 212 } |
| 213 ; CHECK-LABEL: could_have_hoisted_loads | 213 ; CHECK-LABEL: could_have_hoisted_loads |
| 214 ; CHECK: jne {{.*}} | 214 ; CHECK: jne {{.*}} |
| 215 ; CHECK: mov {{.*}}, dword ptr [12] | 215 ; CHECK: mov {{.*}}, dword ptr [12] |
| 216 ; CHECK-NEXT: R_386_32 | 216 ; CHECK-NEXT: R_386_32 |
| 217 ; CHECK: ret | 217 ; CHECK: ret |
| 218 ; CHECK: mfence | 218 ; CHECK: mfence |
| 219 ; CHECK: mov {{.*}}, dword ptr [12] | 219 ; CHECK: mov {{.*}}, dword ptr [12] |
| 220 ; CHECK-NEXT: R_386_32 | 220 ; CHECK-NEXT: R_386_32 |
| 221 ; CHECK: ret | 221 ; CHECK: ret |
| OLD | NEW |