Chromium Code Reviews| Index: tests_lit/llvm2ice_tests/ias-multi-reloc.ll |
| diff --git a/tests_lit/llvm2ice_tests/ias-multi-reloc.ll b/tests_lit/llvm2ice_tests/ias-multi-reloc.ll |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ad17162b74de4392e3252d0e987091227f104bc1 |
| --- /dev/null |
| +++ b/tests_lit/llvm2ice_tests/ias-multi-reloc.ll |
| @@ -0,0 +1,54 @@ |
| +; Tests the integrated assembler for instructions with multiple |
| +; relocations. |
| + |
| +; RUN: %p2i -i %s --args -O2 -ias=1 | FileCheck %s |
|
jvoung (off chromium)
2014/11/03 17:18:55
nit: the other integrated assembler tests don't us
Jim Stichnoth
2014/11/03 19:35:50
OK, removed for consistency.
|
| + |
| +@global_int = internal global [4 x i8] zeroinitializer, align 4 |
| +@p_global_int = internal global [4 x i8] zeroinitializer, align 4 |
| +declare void @dummy(i32) |
| + |
| +define internal void @store_immediate_to_global() { |
|
Jim Stichnoth
2014/11/02 17:49:21
This is the only test that actually triggered the
|
| +entry: |
| + %p_global_int.bc = bitcast [4 x i8]* @p_global_int to i32* |
| + %expanded1 = ptrtoint [4 x i8]* @global_int to i32 |
| + store i32 %expanded1, i32* %p_global_int.bc, align 1 |
| + ret void |
| +} |
| +; CHECK-LABEL: store_immediate_to_global |
| +; CHECK: .long p_global_int |
| +; CHECK: .long global_int |
| + |
| +define internal void @add_in_place() { |
| +entry: |
| + %global_int.bc = bitcast [4 x i8]* @global_int to i32* |
| + %0 = load i32* %global_int.bc, align 1 |
| + %expanded1 = ptrtoint [4 x i8]* @p_global_int to i32 |
| + %add = add i32 %0, %expanded1 |
| + %global_int.bc3 = bitcast [4 x i8]* @global_int to i32* |
| + store i32 %add, i32* %global_int.bc3, align 1 |
| + ret void |
| +} |
| +; CHECK-LABEL: add_in_place |
| +; CHECK: .long p_global_int |
|
jvoung (off chromium)
2014/11/03 17:18:55
Hmm, I would have thought that "global_int" is the
Jim Stichnoth
2014/11/03 19:35:50
I swapped the order to be consistent. This also m
|
| +; CHECK: .long global_int |
| + |
| +define internal void @cmp_global_immediate() { |
| +entry: |
| + %p_global_int.bc = bitcast [4 x i8]* @p_global_int to i32* |
| + %0 = load i32* %p_global_int.bc, align 1 |
| + %expanded1 = ptrtoint [4 x i8]* @global_int to i32 |
| + %cmp = icmp eq i32 %0, %expanded1 |
| + br i1 %cmp, label %if.then, label %if.end |
| + |
| +if.then: ; preds = %entry |
| + %dummy.bc = bitcast void (i32)* @dummy to void ()* |
| + tail call void %dummy.bc() |
| + br label %if.end |
| + |
| +if.end: ; preds = %if.then, %entry |
| + ret void |
| +} |
| +; CHECK-LABEL: cmp_global_immediate |
| +; CHECK: .long p_global_int |
| +; CHECK: .long global_int |
| +; CHECK: call dummy |