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 ; TODO(kschimpf) Find out why lc2i is needed. | 6 ; TODO(kschimpf) Find out why lc2i is needed. |
jvoung (off chromium)
2014/10/21 19:12:01
Sorry I think I changed this one...
Karl
2014/10/21 21:14:18
Acknowledged.
| |
7 ; RUN: %lc2i -i %s --args -O2 --verbose none \ | 7 ; RUN: %lc2i -i %s --args -O2 --verbose none \ |
8 ; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \ | 8 ; RUN: | llvm-mc -triple=i686-none-nacl -x86-asm-syntax=intel -filetype=obj \ |
9 ; RUN: | llvm-objdump -d -r -symbolize -x86-asm-syntax=intel - | FileCheck %s | 9 ; RUN: | llvm-objdump -d -r -symbolize -x86-asm-syntax=intel - \ |
10 ; RUN: | %iflc FileCheck %s | |
10 | 11 |
11 ; TODO(jvoung): llvm-objdump doesn't symbolize global symbols well, so we | 12 ; TODO(jvoung): llvm-objdump doesn't symbolize global symbols well, so we |
12 ; have 0 == g32_a, 4 == g32_b, 8 == g32_c. | 13 ; have 0 == g32_a, 4 == g32_b, 8 == g32_c. |
13 ; g32_d is also 0 because it's in the .data section instead of .bss. | 14 ; g32_d is also 0 because it's in the .data section instead of .bss. |
14 | 15 |
15 declare void @llvm.nacl.atomic.fence.all() | 16 declare void @llvm.nacl.atomic.fence.all() |
16 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) | 17 declare i32 @llvm.nacl.atomic.load.i32(i32*, i32) |
17 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) | 18 declare void @llvm.nacl.atomic.store.i32(i32, i32*, i32) |
18 | 19 |
19 @g32_a = internal global [4 x i8] zeroinitializer, align 4 | 20 @g32_a = internal global [4 x i8] zeroinitializer, align 4 |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
224 } | 225 } |
225 ; CHECK-LABEL: could_have_hoisted_loads | 226 ; CHECK-LABEL: could_have_hoisted_loads |
226 ; CHECK: mov {{.*}}, 0 | 227 ; CHECK: mov {{.*}}, 0 |
227 ; CHECK-NEXT: R_386_32 | 228 ; CHECK-NEXT: R_386_32 |
228 ; CHECK: jne {{.*}} | 229 ; CHECK: jne {{.*}} |
229 ; CHECK: mov {{.*}}, dword ptr | 230 ; CHECK: mov {{.*}}, dword ptr |
230 ; CHECK: ret | 231 ; CHECK: ret |
231 ; CHECK: mfence | 232 ; CHECK: mfence |
232 ; CHECK: mov {{.*}}, dword ptr | 233 ; CHECK: mov {{.*}}, dword ptr |
233 ; CHECK: ret | 234 ; CHECK: ret |
OLD | NEW |