251d1ff3617a77ccc2e6202b5de070ebf0b5fe94
[oota-llvm.git] / test / CodeGen / MIR / X86 / global-value-operands.mir
1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
2 # This test ensures that the MIR parser parses global value operands correctly.
3
4 --- |
5
6   @G = external global i32
7   @0 = external global i32
8
9   define i32 @inc() {
10   entry:
11     %a = load i32, i32* @G
12     %b = add i32 %a, 1
13     ret i32 %b
14   }
15
16   define i32 @inc2() {
17   entry:
18     %a = load i32, i32* @0
19     %b = add i32 %a, 1
20     ret i32 %b
21   }
22
23   @.$0  = external global i32
24   @-_-  = external global i32
25   @_-_a = external global i32
26   @$.-B = external global i32
27
28   define i32 @test() {
29   entry:
30     %a = load i32, i32* @.$0
31     store i32 %a, i32* @-_-
32     %b = load i32, i32* @_-_a
33     store i32 %b, i32* @$.-B
34     ret i32 %b
35   }
36
37   @"\01Hello@$%09 \\ World," = external global i32
38
39   define i32 @test2() {
40   entry:
41     %a = load i32, i32* @"\01Hello@$%09 \\ World,"
42     ret i32 %a
43   }
44
45   define i32 @test3() {
46   entry:
47     %a = load i32, i32* @.$0
48     store i32 %a, i32* @-_-
49     %b = load i32, i32* @_-_a
50     store i32 %b, i32* @$.-B
51     ret i32 %b
52   }
53
54 ...
55 ---
56 # CHECK: name: inc
57 name: inc
58 body:
59   - id: 0
60     name: entry
61     instructions:
62       # CHECK: - '%rax = MOV64rm %rip, 1, _, @G, _'
63       - '%rax = MOV64rm %rip, 1, _, @G, _'
64       - '%eax = MOV32rm %rax, 1, _, 0, _'
65       - '%eax = INC32r %eax, implicit-def %eflags'
66       - 'RETQ %eax'
67 ...
68 ---
69 # CHECK: name: inc2
70 name: inc2
71 body:
72   - id: 0
73     name: entry
74     instructions:
75       # CHECK: - '%rax = MOV64rm %rip, 1, _, @0, _'
76       - '%rax = MOV64rm %rip, 1, _, @0, _'
77       - '%eax = MOV32rm %rax, 1, _, 0, _'
78       - '%eax = INC32r %eax, implicit-def %eflags'
79       - 'RETQ %eax'
80 ...
81 ---
82 name:            test
83 body:
84   - id:              0
85     name:            entry
86     instructions:
87       # CHECK: , @".$0",
88       # CHECK: , @-_-,
89       # CHECK: , @_-_a,
90       # CHECK: , @"$.-B",
91       - '%rax = MOV64rm %rip, 1, _, @.$0, _'
92       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
93       - '%rcx = MOV64rm %rip, 1, _, @-_-, _'
94       - 'MOV32mr killed %rcx, 1, _, 0, _, killed %eax'
95       - '%rax = MOV64rm %rip, 1, _, @_-_a, _'
96       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
97       - '%rcx = MOV64rm %rip, 1, _, @$.-B, _'
98       - 'MOV32mr killed %rcx, 1, _, 0, _, %eax'
99       - 'RETQ %eax'
100 ...
101 ---
102 name:            test2
103 body:
104   - id:              0
105     name:            entry
106     instructions:
107       # CHECK: , @"\01Hello@$%09 \5C World,",
108       - '%rax = MOV64rm %rip, 1, _, @"\01Hello@$%09 \\ World,", _'
109       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
110       - 'RETQ %eax'
111 ...
112 ---
113 # CHECK: name: test3
114 name:            test3
115 body:
116   - id:              0
117     name:            entry
118     instructions:
119       # CHECK: , @".$0",
120       # CHECK: , @-_-,
121       # CHECK: , @_-_a + 4,
122       # CHECK: , @"$.-B" - 8,
123       - '%rax = MOV64rm %rip, 1, _, @.$0 + 0, _'
124       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
125       - '%rcx = MOV64rm %rip, 1, _, @-_- - 0, _'
126       - 'MOV32mr killed %rcx, 1, _, 0, _, killed %eax'
127       - '%rax = MOV64rm %rip, 1, _, @_-_a + 4, _'
128       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
129       - '%rcx = MOV64rm %rip, 1, _, @$.-B - 8, _'
130       - 'MOV32mr killed %rcx, 1, _, 0, _, %eax'
131       - 'RETQ %eax'
132 ...