[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / PowerPC / remove-redundant-load-imm.mir
blob1dd37955452f0ececf990dd202b0cdb513947dd1
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown -run-pass ppc-pre-emit-peephole %s -o - | FileCheck %s
4 ---
5 name:            t1
6 alignment:       16
7 tracksRegLiveness: true
8 machineFunctionInfo: {}
9 body:             |
10   bb.0.entry:
11     liveins: $x1
13     ; CHECK-LABEL: name: t1
14     ; CHECK: liveins: $x1
15     ; CHECK: renamable $x3 = LI8 0
16     ; CHECK: STD renamable $x3, 16, $x1
17     ; CHECK: STD killed renamable $x3, 8, $x1
18     ; CHECK: BLR8 implicit $lr8, implicit $rm
19     renamable $x3 = LI8 0
20     STD killed renamable $x3, 16, $x1
21     renamable $x3 = LI8 0
22     STD killed renamable $x3, 8, $x1
23     BLR8 implicit $lr8, implicit $rm
25 ...
26 ---
27 name:            t2
28 alignment:       16
29 tracksRegLiveness: true
30 machineFunctionInfo: {}
31 body:             |
32   bb.0.entry:
33     liveins: $x1
35     ; CHECK-LABEL: name: t2
36     ; CHECK: liveins: $x1
37     ; CHECK: renamable $x3 = LI8 0
38     ; CHECK: STD renamable $x3, 32, $x1
39     ; CHECK: STD renamable $x3, 24, $x1
40     ; CHECK: STD renamable $x3, 16, $x1
41     ; CHECK: STD killed renamable $x3, 8, $x1
42     ; CHECK: BLR8 implicit $lr8, implicit $rm
43     renamable $x3 = LI8 0
44     STD killed renamable $x3, 32, $x1
45     renamable $x3 = LI8 0
46     STD killed renamable $x3, 24, $x1
47     renamable $x3 = LI8 0
48     STD killed renamable $x3, 16, $x1
49     renamable $x3 = LI8 0
50     STD killed renamable $x3, 8, $x1
51     BLR8 implicit $lr8, implicit $rm
53 ...
54 ---
55 name:            t3
56 alignment:       16
57 tracksRegLiveness: true
58 machineFunctionInfo: {}
59 body:             |
60   bb.0.entry:
61     liveins: $x1
63     ; CHECK-LABEL: name: t3
64     ; CHECK: liveins: $x1
65     ; CHECK: renamable $x3 = LI8 0
66     ; CHECK: STD renamable $x3, 32, $x1
67     ; CHECK: STD renamable $x3, 24, $x1
68     ; CHECK: BLR8 implicit $lr8, implicit $rm
69     renamable $x3 = LI8 0
70     STD killed renamable $x3, 32, $x1
71     renamable $x3 = LI8 0
72     STD renamable $x3, 24, $x1
73     BLR8 implicit $lr8, implicit $rm
75 ...
76 ---
77 name:            t4
78 alignment:       16
79 tracksRegLiveness: true
80 machineFunctionInfo: {}
81 body:             |
82   bb.0.entry:
83     liveins: $x1
85     ; CHECK-LABEL: name: t4
86     ; CHECK: liveins: $x1
87     ; CHECK: renamable $x3 = LI8 0
88     ; CHECK: STD renamable $x3, 16, $x1
89     ; CHECK: renamable $x4 = ADDI8 renamable $x3, 8
90     ; CHECK: STD killed renamable $x3, 8, $x1
91     ; CHECK: BLR8 implicit $lr8, implicit $rm
92     renamable $x3 = LI8 0
93     STD killed renamable $x3, 16, $x1
94     renamable $x3 = LI8 0
95     renamable $x4 = ADDI8 killed renamable $x3, 8
96     renamable $x3 = LI8 0
97     STD killed renamable $x3, 8, $x1
98     BLR8 implicit $lr8, implicit $rm
102 name:            t5
103 alignment:       16
104 tracksRegLiveness: true
105 machineFunctionInfo: {}
106 body:             |
107   bb.0.entry:
108     liveins: $x1
110     ; CHECK-LABEL: name: t5
111     ; CHECK: liveins: $x1
112     ; CHECK: renamable $r3 = LI 0
113     ; CHECK: STW renamable $r3, 16, $x1
114     ; CHECK: STW killed renamable $r3, 12, $x1
115     ; CHECK: renamable $r3 = LI 1
116     ; CHECK: BLR8 implicit $lr8, implicit $rm
117     renamable $r3 = LI 0
118     STW killed renamable $r3, 16, $x1
119     renamable $r3 = LI 0
120     STW killed renamable $r3, 12, $x1
121     renamable $r3 = LI 1
122     BLR8 implicit $lr8, implicit $rm
126 name:            t6
127 alignment:       16
128 tracksRegLiveness: true
129 machineFunctionInfo: {}
130 body:             |
131   bb.0.entry:
132     liveins: $x1
134     ; CHECK-LABEL: name: t6
135     ; CHECK: liveins: $x1
136     ; CHECK: renamable $x3 = LI8 0
137     ; CHECK: renamable $x4 = LI8 1
138     ; CHECK: STD renamable $x3, 32, $x1
139     ; CHECK: STD renamable $x4, 24, $x1
140     ; CHECK: STD killed renamable $x3, 16, $x1
141     ; CHECK: STD killed renamable $x4, 8, $x1
142     ; CHECK: BLR8 implicit $lr8, implicit $rm
143     renamable $x3 = LI8 0
144     renamable $x4 = LI8 1
145     STD killed renamable $x3, 32, $x1
146     STD killed renamable $x4, 24, $x1
147     renamable $x3 = LI8 0
148     renamable $x4 = LI8 1
149     STD killed renamable $x3, 16, $x1
150     STD killed renamable $x4, 8, $x1
151     BLR8 implicit $lr8, implicit $rm
155 name:            t7
156 alignment:       16
157 tracksRegLiveness: true
158 machineFunctionInfo: {}
159 body:             |
160   bb.0.entry:
161     liveins: $x1, $x4
163     ; CHECK-LABEL: name: t7
164     ; CHECK: liveins: $x1, $x4
165     ; CHECK: renamable $x3 = LI8 0
166     ; CHECK: STD killed renamable $x3, 32, $x1
167     ; CHECK: renamable $x3 = ADDI8 $x4, 6
168     ; CHECK: BLR8 implicit $lr8, implicit $rm
169     renamable $x3 = LI8 0
170     STD killed renamable $x3, 32, $x1
171     renamable $x3 = ADDI8 $x4, 6
172     BLR8 implicit $lr8, implicit $rm
176 name:            t8
177 alignment:       16
178 tracksRegLiveness: true
179 machineFunctionInfo: {}
180 body:             |
181   bb.0.entry:
182     liveins: $x1
184     ; CHECK-LABEL: name: t8
185     ; CHECK: liveins: $x1
186     ; CHECK: renamable $x3 = LI8 0
187     ; CHECK: STD renamable $x3, 32, $x1
188     ; CHECK: BLR8 implicit $lr8, implicit $rm
189     renamable $x3 = LI8 0
190     STD killed renamable $x3, 32, $x1
191     renamable $x3 = LI8 0
192     BLR8 implicit $lr8, implicit $rm
196 name:            t9
197 alignment:       16
198 tracksRegLiveness: true
199 machineFunctionInfo: {}
200 body:             |
201   ; CHECK-LABEL: name: t9
202   ; CHECK: bb.0.entry:
203   ; CHECK:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
204   ; CHECK:   liveins: $x3
205   ; CHECK:   renamable $r4 = LI 0, implicit-def $x4
206   ; CHECK:   renamable $x24 = RLDICL renamable $x4, 0, 32
207   ; CHECK:   renamable $cr0 = CMPLDI renamable $x3, 0
208   ; CHECK:   BCC 68, killed renamable $cr0, %bb.1
209   ; CHECK:   B %bb.2
210   ; CHECK: bb.1:
211   ; CHECK:   liveins: $r4, $x1
212   ; CHECK:   STW killed renamable $r4, 16, $x1
213   ; CHECK:   BLR8 implicit $lr8, implicit $rm
214   ; CHECK: bb.2:
215   ; CHECK:   liveins: $r4, $x1
216   ; CHECK:   STW killed renamable $r4, 32, $x1
217   ; CHECK:   BLR8 implicit $lr8, implicit $rm
218   bb.0.entry:
219     liveins: $x3
220     successors: %bb.8, %bb.7
222     renamable $r4 = LI 0, implicit-def $x4
223     renamable $x24 = RLDICL killed renamable $x4, 0 , 32
224     renamable $cr0 = CMPLDI renamable $x3, 0
225     renamable $r4 = LI 0
226     BCC 68, killed renamable $cr0, %bb.7
227     B %bb.8
229   bb.7:
230     liveins: $r4, $x1
231     STW killed renamable $r4, 16, $x1
232     BLR8 implicit $lr8, implicit $rm
234   bb.8:
235     liveins: $r4, $x1
236     STW killed renamable $r4, 32, $x1
237     BLR8 implicit $lr8, implicit $rm
241 name:            t10
242 alignment:       16
243 tracksRegLiveness: true
244 machineFunctionInfo: {}
245 body:             |
246   bb.0.entry:
247     liveins: $x1
249     ; CHECK-LABEL: name: t10
250     ; CHECK: liveins: $x1
251     ; CHECK: renamable $x3 = LI8 24
252     ; CHECK: STD killed renamable $x3, 16, $x1
253     ; CHECK: renamable $r3 = LI 0
254     ; CHECK: STW killed renamable $r3, 26, $x1
255     ; CHECK: BLR8 implicit $lr8, implicit $rm
256     renamable $x3 = LI8 24
257     STD killed renamable $x3, 16, $x1
258     renamable $r3 = LI 0
259     STW killed renamable $r3, 26, $x1
260     BLR8 implicit $lr8, implicit $rm
264 name:            LIS8
265 alignment:       16
266 tracksRegLiveness: true
267 machineFunctionInfo: {}
268 body:             |
269   bb.0.entry:
270     liveins: $x1
272     ; CHECK-LABEL: name: LIS8
273     ; CHECK: liveins: $x1
274     ; CHECK: renamable $x3 = LIS8 0
275     ; CHECK: STD renamable $x3, 16, $x1
276     ; CHECK: STD killed renamable $x3, 8, $x1
277     ; CHECK: BLR8 implicit $lr8, implicit $rm
278     renamable $x3 = LIS8 0
279     STD killed renamable $x3, 16, $x1
280     renamable $x3 = LIS8 0
281     STD killed renamable $x3, 8, $x1
282     BLR8 implicit $lr8, implicit $rm
286 name:            LIS
287 alignment:       16
288 tracksRegLiveness: true
289 machineFunctionInfo: {}
290 body:             |
291   bb.0.entry:
292     liveins: $x1
294     ; CHECK-LABEL: name: LIS
295     ; CHECK: liveins: $x1
296     ; CHECK: renamable $r3 = LIS 0
297     ; CHECK: STW renamable $r3, 16, $x1
298     ; CHECK: STW killed renamable $r3, 12, $x1
299     ; CHECK: BLR8 implicit $lr8, implicit $rm
300     renamable $r3 = LIS 0
301     STW killed renamable $r3, 16, $x1
302     renamable $r3 = LIS 0
303     STW killed renamable $r3, 12, $x1
304     BLR8 implicit $lr8, implicit $rm
308 name:            modify_and_kill_the_reg_in_the_same_inst
309 alignment:       16
310 tracksRegLiveness: true
311 machineFunctionInfo: {}
312 body:             |
313   bb.0.entry:
315     ; CHECK-LABEL: name: modify_and_kill_the_reg_in_the_same_inst
316     ; CHECK: renamable $x6 = LI8 1
317     ; CHECK: renamable $x6 = RLDICR killed renamable $x6, 44, 19
318     ; CHECK: BLR8 implicit $lr8, implicit $rm
319     renamable $x6 = LI8 1
320     renamable $x6 = RLDICR killed renamable $x6, 44, 19
321     BLR8 implicit $lr8, implicit $rm
325 name:            dead_load_immediate_followed_by_a_redundancy
326 alignment:       16
327 tracksRegLiveness: true
328 machineFunctionInfo: {}
329 body:             |
330   bb.0.entry:
331     liveins: $x1
333     ; CHECK-LABEL: name: dead_load_immediate_followed_by_a_redundancy
334     ; CHECK: liveins: $x1
335     ; CHECK: renamable $r3 = LI 128
336     ; CHECK: renamable $x4 = ADDI8 $x1, -128
337     ; CHECK: renamable $x5 = ADDI8 $x1, -128
338     ; CHECK: STW killed renamable $r3, 16, $x4
339     ; CHECK: BLR8 implicit $lr8, implicit $rm
340     dead renamable $r3 = LI 128
341     renamable $x4 = ADDI8 $x1, -128
342     dead renamable $r3 = LI 128
343     renamable $x5 = ADDI8 $x1, -128
344     renamable $r3 = LI 128
345     STW killed renamable $r3, 16, $x4
346     BLR8 implicit $lr8, implicit $rm
350 name:            overwrite_reg_before_killed
351 alignment:       16
352 tracksRegLiveness: true
353 machineFunctionInfo: {}
354 body:             |
355   bb.0.entry:
356     liveins: $x1
358     ; CHECK-LABEL: name: overwrite_reg_before_killed
359     ; CHECK: liveins: $x1
360     ; CHECK: renamable $x3 = LI8 0
361     ; CHECK: STD renamable $x3, 16, $x1
362     ; CHECK: STD killed renamable $x3, 8, $x1
363     ; CHECK: BLR8 implicit $lr8, implicit $rm
364     renamable $x3 = LI8 0
365     STD renamable $x3, 16, $x1
366     renamable $x3 = LI8 0
367     STD killed renamable $x3, 8, $x1
368     BLR8 implicit $lr8, implicit $rm