OLD | NEW |
---|---|
(Empty) | |
1 ; Tests the integrated assembler for instructions with multiple | |
2 ; relocations. | |
3 | |
4 ; 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.
| |
5 | |
6 @global_int = internal global [4 x i8] zeroinitializer, align 4 | |
7 @p_global_int = internal global [4 x i8] zeroinitializer, align 4 | |
8 declare void @dummy(i32) | |
9 | |
10 define internal void @store_immediate_to_global() { | |
Jim Stichnoth
2014/11/02 17:49:21
This is the only test that actually triggered the
| |
11 entry: | |
12 %p_global_int.bc = bitcast [4 x i8]* @p_global_int to i32* | |
13 %expanded1 = ptrtoint [4 x i8]* @global_int to i32 | |
14 store i32 %expanded1, i32* %p_global_int.bc, align 1 | |
15 ret void | |
16 } | |
17 ; CHECK-LABEL: store_immediate_to_global | |
18 ; CHECK: .long p_global_int | |
19 ; CHECK: .long global_int | |
20 | |
21 define internal void @add_in_place() { | |
22 entry: | |
23 %global_int.bc = bitcast [4 x i8]* @global_int to i32* | |
24 %0 = load i32* %global_int.bc, align 1 | |
25 %expanded1 = ptrtoint [4 x i8]* @p_global_int to i32 | |
26 %add = add i32 %0, %expanded1 | |
27 %global_int.bc3 = bitcast [4 x i8]* @global_int to i32* | |
28 store i32 %add, i32* %global_int.bc3, align 1 | |
29 ret void | |
30 } | |
31 ; CHECK-LABEL: add_in_place | |
32 ; 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
| |
33 ; CHECK: .long global_int | |
34 | |
35 define internal void @cmp_global_immediate() { | |
36 entry: | |
37 %p_global_int.bc = bitcast [4 x i8]* @p_global_int to i32* | |
38 %0 = load i32* %p_global_int.bc, align 1 | |
39 %expanded1 = ptrtoint [4 x i8]* @global_int to i32 | |
40 %cmp = icmp eq i32 %0, %expanded1 | |
41 br i1 %cmp, label %if.then, label %if.end | |
42 | |
43 if.then: ; preds = %entry | |
44 %dummy.bc = bitcast void (i32)* @dummy to void ()* | |
45 tail call void %dummy.bc() | |
46 br label %if.end | |
47 | |
48 if.end: ; preds = %if.then, %entry | |
49 ret void | |
50 } | |
51 ; CHECK-LABEL: cmp_global_immediate | |
52 ; CHECK: .long p_global_int | |
53 ; CHECK: .long global_int | |
54 ; CHECK: call dummy | |
OLD | NEW |