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 |