MIR Parser: Report an error when a fixed stack object is redefined.
[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   define i32 @tf() {
55   entry:
56     %a = load i32, i32* @G
57     %b = add i32 %a, 1
58     ret i32 %b
59   }
60
61 ...
62 ---
63 # CHECK: name: inc
64 name: inc
65 body:
66   - id: 0
67     name: entry
68     instructions:
69       # CHECK: - '%rax = MOV64rm %rip, 1, _, @G, _'
70       - '%rax = MOV64rm %rip, 1, _, @G, _'
71       - '%eax = MOV32rm %rax, 1, _, 0, _'
72       - '%eax = INC32r %eax, implicit-def %eflags'
73       - 'RETQ %eax'
74 ...
75 ---
76 # CHECK: name: inc2
77 name: inc2
78 body:
79   - id: 0
80     name: entry
81     instructions:
82       # CHECK: - '%rax = MOV64rm %rip, 1, _, @0, _'
83       - '%rax = MOV64rm %rip, 1, _, @0, _'
84       - '%eax = MOV32rm %rax, 1, _, 0, _'
85       - '%eax = INC32r %eax, implicit-def %eflags'
86       - 'RETQ %eax'
87 ...
88 ---
89 name:            test
90 body:
91   - id:              0
92     name:            entry
93     instructions:
94       # CHECK: , @".$0",
95       # CHECK: , @-_-,
96       # CHECK: , @_-_a,
97       # CHECK: , @"$.-B",
98       - '%rax = MOV64rm %rip, 1, _, @.$0, _'
99       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
100       - '%rcx = MOV64rm %rip, 1, _, @-_-, _'
101       - 'MOV32mr killed %rcx, 1, _, 0, _, killed %eax'
102       - '%rax = MOV64rm %rip, 1, _, @_-_a, _'
103       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
104       - '%rcx = MOV64rm %rip, 1, _, @$.-B, _'
105       - 'MOV32mr killed %rcx, 1, _, 0, _, %eax'
106       - 'RETQ %eax'
107 ...
108 ---
109 name:            test2
110 body:
111   - id:              0
112     name:            entry
113     instructions:
114       # CHECK: , @"\01Hello@$%09 \5C World,",
115       - '%rax = MOV64rm %rip, 1, _, @"\01Hello@$%09 \\ World,", _'
116       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
117       - 'RETQ %eax'
118 ...
119 ---
120 # CHECK: name: test3
121 name:            test3
122 body:
123   - id:              0
124     name:            entry
125     instructions:
126       # CHECK: , @".$0",
127       # CHECK: , @-_-,
128       # CHECK: , @_-_a + 4,
129       # CHECK: , @"$.-B" - 8,
130       - '%rax = MOV64rm %rip, 1, _, @.$0 + 0, _'
131       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
132       - '%rcx = MOV64rm %rip, 1, _, @-_- - 0, _'
133       - 'MOV32mr killed %rcx, 1, _, 0, _, killed %eax'
134       - '%rax = MOV64rm %rip, 1, _, @_-_a + 4, _'
135       - '%eax = MOV32rm killed %rax, 1, _, 0, _'
136       - '%rcx = MOV64rm %rip, 1, _, @$.-B - 8, _'
137       - 'MOV32mr killed %rcx, 1, _, 0, _, %eax'
138       - 'RETQ %eax'
139 ...
140 ---
141 # CHECK: name: tf
142 name: tf
143 body:
144   - id: 0
145     name: entry
146     instructions:
147 # CHECK: %rax = MOV64rm %rip, 1, _, target-flags(x86-gotpcrel) @G, _
148       - '%rax = MOV64rm %rip, 1, _, target-flags(x86-gotpcrel) @G, _'
149       - '%eax = MOV32rm %rax, 1, _, 0, _'
150       - '%eax = INC32r %eax, implicit-def %eflags'
151       - 'RETQ %eax'
152 ...