[CodeGen] Remove some implict conversions of MCRegister to unsigned by using(). NFC
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / postinc-distribute.mir
blobfd8c2a837867103c02b649eba7a603d1ee0f9d82
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve.fp -run-pass arm-prera-ldst-opt %s -o - -verify-machineinstrs | FileCheck %s
4 --- |
5   define ptr @t2LDRi12(ptr %x, i32 %y) { unreachable }
6   define ptr @t2LDRHi12(ptr %x, i32 %y) { unreachable }
7   define ptr @t2LDRSHi12(ptr %x, i32 %y) { unreachable }
8   define ptr @t2LDRBi12(ptr %x, i32 %y) { unreachable }
9   define ptr @t2LDRSBi12(ptr %x, i32 %y) { unreachable }
10   define ptr @t2STRi12(ptr %x, i32 %y) { unreachable }
11   define ptr @t2STRHi12(ptr %x, i32 %y) { unreachable }
12   define ptr @t2STRBi12(ptr %x, i32 %y) { unreachable }
14   define ptr @storedadd(ptr %x, i32 %y) { unreachable }
15   define ptr @minsize2(ptr %x, i32 %y) minsize optsize { unreachable }
16   define ptr @minsize3(ptr %x, i32 %y) minsize optsize { unreachable }
18   define ptr @t2LDRi12_posoff(ptr %x, i32 %y) { unreachable }
19   define ptr @t2LDRHi12_posoff(ptr %x, i32 %y) { unreachable }
20   define ptr @t2LDRBi12_posoff(ptr %x, i32 %y) { unreachable }
21   define ptr @t2STRi12_posoff(ptr %x, i32 %y) { unreachable }
22   define ptr @t2STRHi12_posoff(ptr %x, i32 %y) { unreachable }
23   define ptr @t2STRBi12_posoff(ptr %x, i32 %y) { unreachable }
24   define ptr @t2LDRi12_negoff(ptr %x, i32 %y) { unreachable }
25   define ptr @t2LDRHi12_negoff(ptr %x, i32 %y) { unreachable }
26   define ptr @t2LDRBi12_negoff(ptr %x, i32 %y) { unreachable }
27   define ptr @t2STRi12_negoff(ptr %x, i32 %y) { unreachable }
28   define ptr @t2STRHi12_negoff(ptr %x, i32 %y) { unreachable }
29   define ptr @t2STRBi12_negoff(ptr %x, i32 %y) { unreachable }
31 ...
32 ---
33 name:            t2LDRi12
34 tracksRegLiveness: true
35 registers:
36   - { id: 0, class: gprnopc, preferred-register: '' }
37   - { id: 1, class: rgpr, preferred-register: '' }
38   - { id: 2, class: rgpr, preferred-register: '' }
39 liveins:
40   - { reg: '$r0', virtual-reg: '%0' }
41 body:             |
42   bb.0:
43     liveins: $r0
45     ; CHECK-LABEL: name: t2LDRi12
46     ; CHECK: liveins: $r0
47     ; CHECK-NEXT: {{  $}}
48     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
49     ; CHECK-NEXT: [[t2LDRi12_:%[0-9]+]]:rgpr = t2LDRi12 [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s32))
50     ; CHECK-NEXT: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
51     ; CHECK-NEXT: $r0 = COPY [[t2ADDri]]
52     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
53     %0:gprnopc = COPY $r0
54     %1:rgpr = t2LDRi12 %0, 0, 14, $noreg :: (load (s32), align 4)
55     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
56     $r0 = COPY %2
57     tBX_RET 14, $noreg, implicit $r0
59 ...
60 ---
61 name:            t2LDRHi12
62 tracksRegLiveness: true
63 registers:
64   - { id: 0, class: gprnopc, preferred-register: '' }
65   - { id: 1, class: rgpr, preferred-register: '' }
66   - { id: 2, class: rgpr, preferred-register: '' }
67 liveins:
68   - { reg: '$r0', virtual-reg: '%0' }
69 body:             |
70   bb.0:
71     liveins: $r0
73     ; CHECK-LABEL: name: t2LDRHi12
74     ; CHECK: liveins: $r0
75     ; CHECK-NEXT: {{  $}}
76     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
77     ; CHECK-NEXT: [[t2LDRH_POST:%[0-9]+]]:rgpr, [[t2LDRH_POST1:%[0-9]+]]:rgpr = t2LDRH_POST [[COPY]], 32, 14 /* CC::al */, $noreg :: (load (s32))
78     ; CHECK-NEXT: $r0 = COPY [[t2LDRH_POST1]]
79     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
80     %0:gprnopc = COPY $r0
81     %1:rgpr = t2LDRHi12 %0, 0, 14, $noreg :: (load (s32), align 4)
82     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
83     $r0 = COPY %2
84     tBX_RET 14, $noreg, implicit $r0
86 ...
87 ---
88 name:            t2LDRSHi12
89 tracksRegLiveness: true
90 registers:
91   - { id: 0, class: gprnopc, preferred-register: '' }
92   - { id: 1, class: rgpr, preferred-register: '' }
93   - { id: 2, class: rgpr, preferred-register: '' }
94 liveins:
95   - { reg: '$r0', virtual-reg: '%0' }
96 body:             |
97   bb.0:
98     liveins: $r0
100     ; CHECK-LABEL: name: t2LDRSHi12
101     ; CHECK: liveins: $r0
102     ; CHECK-NEXT: {{  $}}
103     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
104     ; CHECK-NEXT: [[t2LDRSH_POST:%[0-9]+]]:rgpr, [[t2LDRSH_POST1:%[0-9]+]]:rgpr = t2LDRSH_POST [[COPY]], 32, 14 /* CC::al */, $noreg :: (load (s32))
105     ; CHECK-NEXT: $r0 = COPY [[t2LDRSH_POST1]]
106     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
107     %0:gprnopc = COPY $r0
108     %1:rgpr = t2LDRSHi12 %0, 0, 14, $noreg :: (load (s32), align 4)
109     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
110     $r0 = COPY %2
111     tBX_RET 14, $noreg, implicit $r0
115 name:            t2LDRBi12
116 tracksRegLiveness: true
117 registers:
118   - { id: 0, class: gprnopc, preferred-register: '' }
119   - { id: 1, class: rgpr, preferred-register: '' }
120   - { id: 2, class: rgpr, preferred-register: '' }
121 liveins:
122   - { reg: '$r0', virtual-reg: '%0' }
123 body:             |
124   bb.0:
125     liveins: $r0
127     ; CHECK-LABEL: name: t2LDRBi12
128     ; CHECK: liveins: $r0
129     ; CHECK-NEXT: {{  $}}
130     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
131     ; CHECK-NEXT: [[t2LDRB_POST:%[0-9]+]]:rgpr, [[t2LDRB_POST1:%[0-9]+]]:rgpr = t2LDRB_POST [[COPY]], 32, 14 /* CC::al */, $noreg :: (load (s32))
132     ; CHECK-NEXT: $r0 = COPY [[t2LDRB_POST1]]
133     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
134     %0:gprnopc = COPY $r0
135     %1:rgpr = t2LDRBi12 %0, 0, 14, $noreg :: (load (s32), align 4)
136     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
137     $r0 = COPY %2
138     tBX_RET 14, $noreg, implicit $r0
142 name:            t2LDRSBi12
143 tracksRegLiveness: true
144 registers:
145   - { id: 0, class: gprnopc, preferred-register: '' }
146   - { id: 1, class: rgpr, preferred-register: '' }
147   - { id: 2, class: rgpr, preferred-register: '' }
148 liveins:
149   - { reg: '$r0', virtual-reg: '%0' }
150 body:             |
151   bb.0:
152     liveins: $r0
154     ; CHECK-LABEL: name: t2LDRSBi12
155     ; CHECK: liveins: $r0
156     ; CHECK-NEXT: {{  $}}
157     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
158     ; CHECK-NEXT: [[t2LDRSB_POST:%[0-9]+]]:rgpr, [[t2LDRSB_POST1:%[0-9]+]]:rgpr = t2LDRSB_POST [[COPY]], 32, 14 /* CC::al */, $noreg :: (load (s32))
159     ; CHECK-NEXT: $r0 = COPY [[t2LDRSB_POST1]]
160     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
161     %0:gprnopc = COPY $r0
162     %1:rgpr = t2LDRSBi12 %0, 0, 14, $noreg :: (load (s32), align 4)
163     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
164     $r0 = COPY %2
165     tBX_RET 14, $noreg, implicit $r0
169 name:            t2STRi12
170 tracksRegLiveness: true
171 registers:
172   - { id: 0, class: gprnopc, preferred-register: '' }
173   - { id: 1, class: rgpr, preferred-register: '' }
174   - { id: 2, class: rgpr, preferred-register: '' }
175 liveins:
176   - { reg: '$r0', virtual-reg: '%0' }
177   - { reg: '$r1', virtual-reg: '%1' }
178 body:             |
179   bb.0:
180     liveins: $r0, $r1
182     ; CHECK-LABEL: name: t2STRi12
183     ; CHECK: liveins: $r0, $r1
184     ; CHECK-NEXT: {{  $}}
185     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
186     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
187     ; CHECK-NEXT: t2STRi12 [[COPY1]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s32))
188     ; CHECK-NEXT: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
189     ; CHECK-NEXT: $r0 = COPY [[t2ADDri]]
190     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
191     %0:gprnopc = COPY $r0
192     %1:rgpr = COPY $r1
193     t2STRi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
194     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
195     $r0 = COPY %2
196     tBX_RET 14, $noreg, implicit $r0
200 name:            t2STRHi12
201 tracksRegLiveness: true
202 registers:
203   - { id: 0, class: gprnopc, preferred-register: '' }
204   - { id: 1, class: rgpr, preferred-register: '' }
205   - { id: 2, class: rgpr, preferred-register: '' }
206 liveins:
207   - { reg: '$r0', virtual-reg: '%0' }
208   - { reg: '$r1', virtual-reg: '%1' }
209 body:             |
210   bb.0:
211     liveins: $r0, $r1
213     ; CHECK-LABEL: name: t2STRHi12
214     ; CHECK: liveins: $r0, $r1
215     ; CHECK-NEXT: {{  $}}
216     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
217     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
218     ; CHECK-NEXT: early-clobber %2:rgpr = t2STRH_POST [[COPY1]], [[COPY]], 32, 14 /* CC::al */, $noreg :: (store (s32))
219     ; CHECK-NEXT: $r0 = COPY %2
220     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
221     %0:gprnopc = COPY $r0
222     %1:rgpr = COPY $r1
223     t2STRHi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
224     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
225     $r0 = COPY %2
226     tBX_RET 14, $noreg, implicit $r0
230 name:            t2STRBi12
231 tracksRegLiveness: true
232 registers:
233   - { id: 0, class: gprnopc, preferred-register: '' }
234   - { id: 1, class: rgpr, preferred-register: '' }
235   - { id: 2, class: rgpr, preferred-register: '' }
236 liveins:
237   - { reg: '$r0', virtual-reg: '%0' }
238   - { reg: '$r1', virtual-reg: '%1' }
239 body:             |
240   bb.0:
241     liveins: $r0, $r1
243     ; CHECK-LABEL: name: t2STRBi12
244     ; CHECK: liveins: $r0, $r1
245     ; CHECK-NEXT: {{  $}}
246     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
247     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
248     ; CHECK-NEXT: early-clobber %2:rgpr = t2STRB_POST [[COPY1]], [[COPY]], 32, 14 /* CC::al */, $noreg :: (store (s32))
249     ; CHECK-NEXT: $r0 = COPY %2
250     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
251     %0:gprnopc = COPY $r0
252     %1:rgpr = COPY $r1
253     t2STRBi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
254     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
255     $r0 = COPY %2
256     tBX_RET 14, $noreg, implicit $r0
260 name:            storedadd
261 tracksRegLiveness: true
262 registers:
263   - { id: 0, class: gprnopc, preferred-register: '' }
264   - { id: 1, class: rgpr, preferred-register: '' }
265 liveins:
266   - { reg: '$r0', virtual-reg: '%0' }
267 body:             |
268   bb.0:
269     liveins: $r0
271     ; CHECK-LABEL: name: storedadd
272     ; CHECK: liveins: $r0
273     ; CHECK-NEXT: {{  $}}
274     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
275     ; CHECK-NEXT: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
276     ; CHECK-NEXT: t2STRi12 [[t2ADDri]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s32))
277     ; CHECK-NEXT: $r0 = COPY [[t2ADDri]]
278     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
279     %0:gprnopc = COPY $r0
280     %1:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
281     t2STRi12 %1, %0, 0, 14, $noreg :: (store (s32), align 4)
282     $r0 = COPY %1
283     tBX_RET 14, $noreg, implicit $r0
287 name:            minsize2
288 tracksRegLiveness: true
289 registers:
290   - { id: 0, class: gprnopc, preferred-register: '' }
291   - { id: 1, class: rgpr, preferred-register: '' }
292   - { id: 2, class: rgpr, preferred-register: '' }
293   - { id: 3, class: rgpr, preferred-register: '' }
294 liveins:
295   - { reg: '$r0', virtual-reg: '%0' }
296 body:             |
297   bb.0:
298     liveins: $r0
300     ; CHECK-LABEL: name: minsize2
301     ; CHECK: liveins: $r0
302     ; CHECK-NEXT: {{  $}}
303     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
304     ; CHECK-NEXT: [[t2LDRB_POST:%[0-9]+]]:rgpr, [[t2LDRB_POST1:%[0-9]+]]:rgpr = t2LDRB_POST [[COPY]], 32, 14 /* CC::al */, $noreg :: (load (s32))
305     ; CHECK-NEXT: [[t2LDRBi8_:%[0-9]+]]:rgpr = t2LDRBi8 [[t2LDRB_POST1]], -30, 14 /* CC::al */, $noreg :: (load (s32))
306     ; CHECK-NEXT: $r0 = COPY [[t2LDRB_POST1]]
307     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
308     %0:gprnopc = COPY $r0
309     %1:rgpr = t2LDRBi12 %0, 0, 14, $noreg :: (load (s32), align 4)
310     %3:rgpr = t2LDRBi12 %0, 2, 14, $noreg :: (load (s32), align 4)
311     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
312     $r0 = COPY %2
313     tBX_RET 14, $noreg, implicit $r0
317 name:            minsize3
318 tracksRegLiveness: true
319 registers:
320   - { id: 0, class: gprnopc, preferred-register: '' }
321   - { id: 1, class: rgpr, preferred-register: '' }
322   - { id: 2, class: rgpr, preferred-register: '' }
323   - { id: 3, class: rgpr, preferred-register: '' }
324   - { id: 4, class: rgpr, preferred-register: '' }
325 liveins:
326   - { reg: '$r0', virtual-reg: '%0' }
327 body:             |
328   bb.0:
329     liveins: $r0
331     ; CHECK-LABEL: name: minsize3
332     ; CHECK: liveins: $r0
333     ; CHECK-NEXT: {{  $}}
334     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
335     ; CHECK-NEXT: [[t2LDRBi12_:%[0-9]+]]:rgpr = t2LDRBi12 [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s32))
336     ; CHECK-NEXT: [[t2LDRBi12_1:%[0-9]+]]:rgpr = t2LDRBi12 [[COPY]], 2, 14 /* CC::al */, $noreg :: (load (s32))
337     ; CHECK-NEXT: [[t2LDRBi12_2:%[0-9]+]]:rgpr = t2LDRBi12 [[COPY]], 4, 14 /* CC::al */, $noreg :: (load (s32))
338     ; CHECK-NEXT: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
339     ; CHECK-NEXT: $r0 = COPY [[t2ADDri]]
340     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
341     %0:gprnopc = COPY $r0
342     %1:rgpr = t2LDRBi12 %0, 0, 14, $noreg :: (load (s32), align 4)
343     %3:rgpr = t2LDRBi12 %0, 2, 14, $noreg :: (load (s32), align 4)
344     %4:rgpr = t2LDRBi12 %0, 4, 14, $noreg :: (load (s32), align 4)
345     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
346     $r0 = COPY %2
347     tBX_RET 14, $noreg, implicit $r0
351 name:            t2LDRi12_posoff
352 tracksRegLiveness: true
353 registers:
354   - { id: 0, class: gprnopc, preferred-register: '' }
355   - { id: 1, class: rgpr, preferred-register: '' }
356   - { id: 2, class: rgpr, preferred-register: '' }
357   - { id: 3, class: rgpr, preferred-register: '' }
358   - { id: 4, class: rgpr, preferred-register: '' }
359 liveins:
360   - { reg: '$r0', virtual-reg: '%0' }
361 body:             |
362   bb.0:
363     liveins: $r0
365     ; CHECK-LABEL: name: t2LDRi12_posoff
366     ; CHECK: liveins: $r0
367     ; CHECK-NEXT: {{  $}}
368     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
369     ; CHECK-NEXT: [[t2LDRDi8_:%[0-9]+]]:rgpr, [[t2LDRDi8_1:%[0-9]+]]:rgpr = t2LDRDi8 [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s32))
370     ; CHECK-NEXT: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
371     ; CHECK-NEXT: [[t2LDRi8_:%[0-9]+]]:rgpr = t2LDRi8 [[COPY]], -8, 14 /* CC::al */, $noreg :: (load (s32))
372     ; CHECK-NEXT: $r0 = COPY [[t2ADDri]]
373     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
374     %0:gprnopc = COPY $r0
375     %1:rgpr = t2LDRi12 %0, 0, 14, $noreg :: (load (s32), align 4)
376     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
377     %3:rgpr = t2LDRi12 %0, 4, 14, $noreg :: (load (s32), align 4)
378     %4:rgpr = t2LDRi8 %0, -8, 14, $noreg :: (load (s32), align 4)
379     $r0 = COPY %2
380     tBX_RET 14, $noreg, implicit $r0
384 name:            t2LDRHi12_posoff
385 tracksRegLiveness: true
386 registers:
387   - { id: 0, class: gprnopc, preferred-register: '' }
388   - { id: 1, class: rgpr, preferred-register: '' }
389   - { id: 2, class: rgpr, preferred-register: '' }
390   - { id: 3, class: rgpr, preferred-register: '' }
391   - { id: 4, class: rgpr, preferred-register: '' }
392   - { id: 5, class: rgpr, preferred-register: '' }
393 liveins:
394   - { reg: '$r0', virtual-reg: '%0' }
395 body:             |
396   bb.0:
397     liveins: $r0
399     ; CHECK-LABEL: name: t2LDRHi12_posoff
400     ; CHECK: liveins: $r0
401     ; CHECK-NEXT: {{  $}}
402     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
403     ; CHECK-NEXT: [[t2LDRH_POST:%[0-9]+]]:rgpr, [[t2LDRH_POST1:%[0-9]+]]:rgpr = t2LDRH_POST [[COPY]], 32, 14 /* CC::al */, $noreg :: (load (s32))
404     ; CHECK-NEXT: [[t2LDRHi8_:%[0-9]+]]:rgpr = t2LDRHi8 [[t2LDRH_POST1]], -28, 14 /* CC::al */, $noreg :: (load (s32))
405     ; CHECK-NEXT: [[t2LDRHi8_1:%[0-9]+]]:rgpr = t2LDRHi8 [[t2LDRH_POST1]], -40, 14 /* CC::al */, $noreg :: (load (s32))
406     ; CHECK-NEXT: [[t2LDRSHi8_:%[0-9]+]]:rgpr = t2LDRSHi8 [[t2LDRH_POST1]], -20, 14 /* CC::al */, $noreg :: (load (s32))
407     ; CHECK-NEXT: $r0 = COPY [[t2LDRH_POST1]]
408     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
409     %0:gprnopc = COPY $r0
410     %1:rgpr = t2LDRHi12 %0, 0, 14, $noreg :: (load (s32), align 4)
411     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
412     %3:rgpr = t2LDRHi12 %0, 4, 14, $noreg :: (load (s32), align 4)
413     %4:rgpr = t2LDRHi8 %0, -8, 14, $noreg :: (load (s32), align 4)
414     %5:rgpr = t2LDRSHi12 %0, 12, 14, $noreg :: (load (s32), align 4)
415     $r0 = COPY %2
416     tBX_RET 14, $noreg, implicit $r0
420 name:            t2LDRBi12_posoff
421 tracksRegLiveness: true
422 registers:
423   - { id: 0, class: gprnopc, preferred-register: '' }
424   - { id: 1, class: rgpr, preferred-register: '' }
425   - { id: 2, class: rgpr, preferred-register: '' }
426   - { id: 3, class: rgpr, preferred-register: '' }
427   - { id: 4, class: rgpr, preferred-register: '' }
428   - { id: 5, class: rgpr, preferred-register: '' }
429 liveins:
430   - { reg: '$r0', virtual-reg: '%0' }
431 body:             |
432   bb.0:
433     liveins: $r0
435     ; CHECK-LABEL: name: t2LDRBi12_posoff
436     ; CHECK: liveins: $r0
437     ; CHECK-NEXT: {{  $}}
438     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
439     ; CHECK-NEXT: [[t2LDRB_POST:%[0-9]+]]:rgpr, [[t2LDRB_POST1:%[0-9]+]]:rgpr = t2LDRB_POST [[COPY]], 32, 14 /* CC::al */, $noreg :: (load (s32))
440     ; CHECK-NEXT: [[t2LDRBi8_:%[0-9]+]]:rgpr = t2LDRBi8 [[t2LDRB_POST1]], -28, 14 /* CC::al */, $noreg :: (load (s32))
441     ; CHECK-NEXT: [[t2LDRBi8_1:%[0-9]+]]:rgpr = t2LDRBi8 [[t2LDRB_POST1]], -40, 14 /* CC::al */, $noreg :: (load (s32))
442     ; CHECK-NEXT: [[t2LDRSBi8_:%[0-9]+]]:rgpr = t2LDRSBi8 [[t2LDRB_POST1]], -20, 14 /* CC::al */, $noreg :: (load (s32))
443     ; CHECK-NEXT: $r0 = COPY [[t2LDRB_POST1]]
444     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
445     %0:gprnopc = COPY $r0
446     %1:rgpr = t2LDRBi12 %0, 0, 14, $noreg :: (load (s32), align 4)
447     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
448     %3:rgpr = t2LDRBi12 %0, 4, 14, $noreg :: (load (s32), align 4)
449     %4:rgpr = t2LDRBi8 %0, -8, 14, $noreg :: (load (s32), align 4)
450     %12:rgpr = t2LDRSBi12 %0, 12, 14, $noreg :: (load (s32), align 4)
451     $r0 = COPY %2
452     tBX_RET 14, $noreg, implicit $r0
456 name:            t2STRi12_posoff
457 tracksRegLiveness: true
458 registers:
459   - { id: 0, class: gprnopc, preferred-register: '' }
460   - { id: 1, class: rgpr, preferred-register: '' }
461   - { id: 2, class: rgpr, preferred-register: '' }
462 liveins:
463   - { reg: '$r0', virtual-reg: '%0' }
464   - { reg: '$r1', virtual-reg: '%1' }
465 body:             |
466   bb.0:
467     liveins: $r0, $r1
469     ; CHECK-LABEL: name: t2STRi12_posoff
470     ; CHECK: liveins: $r0, $r1
471     ; CHECK-NEXT: {{  $}}
472     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
473     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
474     ; CHECK-NEXT: [[t2ADDri:%[0-9]+]]:rgpr = nuw t2ADDri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
475     ; CHECK-NEXT: t2STRi12 [[COPY1]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s32))
476     ; CHECK-NEXT: t2STRi12 [[COPY1]], [[COPY]], 4, 14 /* CC::al */, $noreg :: (store (s32))
477     ; CHECK-NEXT: t2STRi8 [[COPY1]], [[COPY]], -8, 14 /* CC::al */, $noreg :: (store (s32))
478     ; CHECK-NEXT: $r0 = COPY [[t2ADDri]]
479     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
480     %0:gprnopc = COPY $r0
481     %1:rgpr = COPY $r1
482     t2STRi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
483     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
484     t2STRi12 %1:rgpr, %0, 4, 14, $noreg :: (store (s32), align 4)
485     t2STRi8 %1:rgpr, %0, -8, 14, $noreg :: (store (s32), align 4)
486     $r0 = COPY %2
487     tBX_RET 14, $noreg, implicit $r0
491 name:            t2STRHi12_posoff
492 tracksRegLiveness: true
493 registers:
494   - { id: 0, class: gprnopc, preferred-register: '' }
495   - { id: 1, class: rgpr, preferred-register: '' }
496   - { id: 2, class: rgpr, preferred-register: '' }
497 liveins:
498   - { reg: '$r0', virtual-reg: '%0' }
499   - { reg: '$r1', virtual-reg: '%1' }
500 body:             |
501   bb.0:
502     liveins: $r0, $r1
504     ; CHECK-LABEL: name: t2STRHi12_posoff
505     ; CHECK: liveins: $r0, $r1
506     ; CHECK-NEXT: {{  $}}
507     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
508     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
509     ; CHECK-NEXT: early-clobber %2:rgpr = t2STRH_POST [[COPY1]], [[COPY]], 32, 14 /* CC::al */, $noreg :: (store (s32))
510     ; CHECK-NEXT: t2STRHi8 [[COPY1]], %2, -28, 14 /* CC::al */, $noreg :: (store (s32))
511     ; CHECK-NEXT: t2STRHi8 [[COPY1]], %2, -40, 14 /* CC::al */, $noreg :: (store (s32))
512     ; CHECK-NEXT: $r0 = COPY %2
513     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
514     %0:gprnopc = COPY $r0
515     %1:rgpr = COPY $r1
516     t2STRHi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
517     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
518     t2STRHi12 %1:rgpr, %0, 4, 14, $noreg :: (store (s32), align 4)
519     t2STRHi8 %1:rgpr, %0, -8, 14, $noreg :: (store (s32), align 4)
520     $r0 = COPY %2
521     tBX_RET 14, $noreg, implicit $r0
525 name:            t2STRBi12_posoff
526 tracksRegLiveness: true
527 registers:
528   - { id: 0, class: gprnopc, preferred-register: '' }
529   - { id: 1, class: rgpr, preferred-register: '' }
530   - { id: 2, class: rgpr, preferred-register: '' }
531 liveins:
532   - { reg: '$r0', virtual-reg: '%0' }
533   - { reg: '$r1', virtual-reg: '%1' }
534 body:             |
535   bb.0:
536     liveins: $r0, $r1
538     ; CHECK-LABEL: name: t2STRBi12_posoff
539     ; CHECK: liveins: $r0, $r1
540     ; CHECK-NEXT: {{  $}}
541     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
542     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
543     ; CHECK-NEXT: early-clobber %2:rgpr = t2STRB_POST [[COPY1]], [[COPY]], 32, 14 /* CC::al */, $noreg :: (store (s32))
544     ; CHECK-NEXT: t2STRBi8 [[COPY1]], %2, -28, 14 /* CC::al */, $noreg :: (store (s32))
545     ; CHECK-NEXT: t2STRBi8 [[COPY1]], %2, -40, 14 /* CC::al */, $noreg :: (store (s32))
546     ; CHECK-NEXT: $r0 = COPY %2
547     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
548     %0:gprnopc = COPY $r0
549     %1:rgpr = COPY $r1
550     t2STRBi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
551     %2:rgpr = nuw t2ADDri %0, 32, 14, $noreg, $noreg
552     t2STRBi12 %1:rgpr, %0, 4, 14, $noreg :: (store (s32), align 4)
553     t2STRBi8 %1:rgpr, %0, -8, 14, $noreg :: (store (s32), align 4)
554     $r0 = COPY %2
555     tBX_RET 14, $noreg, implicit $r0
559 name:            t2LDRi12_negoff
560 tracksRegLiveness: true
561 registers:
562   - { id: 0, class: gprnopc, preferred-register: '' }
563   - { id: 1, class: rgpr, preferred-register: '' }
564   - { id: 2, class: rgpr, preferred-register: '' }
565   - { id: 3, class: rgpr, preferred-register: '' }
566   - { id: 4, class: rgpr, preferred-register: '' }
567 liveins:
568   - { reg: '$r0', virtual-reg: '%0' }
569 body:             |
570   bb.0:
571     liveins: $r0
573     ; CHECK-LABEL: name: t2LDRi12_negoff
574     ; CHECK: liveins: $r0
575     ; CHECK-NEXT: {{  $}}
576     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
577     ; CHECK-NEXT: [[t2LDRDi8_:%[0-9]+]]:rgpr, [[t2LDRDi8_1:%[0-9]+]]:rgpr = t2LDRDi8 [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s32))
578     ; CHECK-NEXT: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
579     ; CHECK-NEXT: [[t2LDRi8_:%[0-9]+]]:rgpr = t2LDRi8 [[COPY]], -8, 14 /* CC::al */, $noreg :: (load (s32))
580     ; CHECK-NEXT: $r0 = COPY [[t2SUBri]]
581     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
582     %0:gprnopc = COPY $r0
583     %1:rgpr = t2LDRi12 %0, 0, 14, $noreg :: (load (s32), align 4)
584     %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
585     %3:rgpr = t2LDRi12 %0, 4, 14, $noreg :: (load (s32), align 4)
586     %4:rgpr = t2LDRi8 %0, -8, 14, $noreg :: (load (s32), align 4)
587     $r0 = COPY %2
588     tBX_RET 14, $noreg, implicit $r0
592 name:            t2LDRHi12_negoff
593 tracksRegLiveness: true
594 registers:
595   - { id: 0, class: gprnopc, preferred-register: '' }
596   - { id: 1, class: rgpr, preferred-register: '' }
597   - { id: 2, class: rgpr, preferred-register: '' }
598   - { id: 3, class: rgpr, preferred-register: '' }
599   - { id: 4, class: rgpr, preferred-register: '' }
600   - { id: 5, class: rgpr, preferred-register: '' }
601 liveins:
602   - { reg: '$r0', virtual-reg: '%0' }
603 body:             |
604   bb.0:
605     liveins: $r0
607     ; CHECK-LABEL: name: t2LDRHi12_negoff
608     ; CHECK: liveins: $r0
609     ; CHECK-NEXT: {{  $}}
610     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
611     ; CHECK-NEXT: [[t2LDRHi12_:%[0-9]+]]:rgpr = t2LDRHi12 [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s32))
612     ; CHECK-NEXT: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
613     ; CHECK-NEXT: [[t2LDRHi12_1:%[0-9]+]]:rgpr = t2LDRHi12 [[COPY]], 4, 14 /* CC::al */, $noreg :: (load (s32))
614     ; CHECK-NEXT: [[t2LDRHi8_:%[0-9]+]]:rgpr = t2LDRHi8 [[COPY]], -8, 14 /* CC::al */, $noreg :: (load (s32))
615     ; CHECK-NEXT: [[t2LDRSHi12_:%[0-9]+]]:rgpr = t2LDRSHi12 [[COPY]], 12, 14 /* CC::al */, $noreg :: (load (s32))
616     ; CHECK-NEXT: $r0 = COPY [[t2SUBri]]
617     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
618     %0:gprnopc = COPY $r0
619     %1:rgpr = t2LDRHi12 %0, 0, 14, $noreg :: (load (s32), align 4)
620     %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
621     %3:rgpr = t2LDRHi12 %0, 4, 14, $noreg :: (load (s32), align 4)
622     %4:rgpr = t2LDRHi8 %0, -8, 14, $noreg :: (load (s32), align 4)
623     %5:rgpr = t2LDRSHi12 %0, 12, 14, $noreg :: (load (s32), align 4)
624     $r0 = COPY %2
625     tBX_RET 14, $noreg, implicit $r0
629 name:            t2LDRBi12_negoff
630 tracksRegLiveness: true
631 registers:
632   - { id: 0, class: gprnopc, preferred-register: '' }
633   - { id: 1, class: rgpr, preferred-register: '' }
634   - { id: 2, class: rgpr, preferred-register: '' }
635   - { id: 3, class: rgpr, preferred-register: '' }
636   - { id: 4, class: rgpr, preferred-register: '' }
637   - { id: 5, class: rgpr, preferred-register: '' }
638 liveins:
639   - { reg: '$r0', virtual-reg: '%0' }
640 body:             |
641   bb.0:
642     liveins: $r0
644     ; CHECK-LABEL: name: t2LDRBi12_negoff
645     ; CHECK: liveins: $r0
646     ; CHECK-NEXT: {{  $}}
647     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
648     ; CHECK-NEXT: [[t2LDRBi12_:%[0-9]+]]:rgpr = t2LDRBi12 [[COPY]], 0, 14 /* CC::al */, $noreg :: (load (s32))
649     ; CHECK-NEXT: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
650     ; CHECK-NEXT: [[t2LDRBi12_1:%[0-9]+]]:rgpr = t2LDRBi12 [[COPY]], 4, 14 /* CC::al */, $noreg :: (load (s32))
651     ; CHECK-NEXT: [[t2LDRBi8_:%[0-9]+]]:rgpr = t2LDRBi8 [[COPY]], -8, 14 /* CC::al */, $noreg :: (load (s32))
652     ; CHECK-NEXT: [[t2LDRSBi12_:%[0-9]+]]:rgpr = t2LDRSBi12 [[COPY]], 12, 14 /* CC::al */, $noreg :: (load (s32))
653     ; CHECK-NEXT: $r0 = COPY [[t2SUBri]]
654     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
655     %0:gprnopc = COPY $r0
656     %1:rgpr = t2LDRBi12 %0, 0, 14, $noreg :: (load (s32), align 4)
657     %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
658     %3:rgpr = t2LDRBi12 %0, 4, 14, $noreg :: (load (s32), align 4)
659     %4:rgpr = t2LDRBi8 %0, -8, 14, $noreg :: (load (s32), align 4)
660     %12:rgpr = t2LDRSBi12 %0, 12, 14, $noreg :: (load (s32), align 4)
661     $r0 = COPY %2
662     tBX_RET 14, $noreg, implicit $r0
666 name:            t2STRi12_negoff
667 tracksRegLiveness: true
668 registers:
669   - { id: 0, class: gprnopc, preferred-register: '' }
670   - { id: 1, class: rgpr, preferred-register: '' }
671   - { id: 2, class: rgpr, preferred-register: '' }
672 liveins:
673   - { reg: '$r0', virtual-reg: '%0' }
674   - { reg: '$r1', virtual-reg: '%1' }
675 body:             |
676   bb.0:
677     liveins: $r0, $r1
679     ; CHECK-LABEL: name: t2STRi12_negoff
680     ; CHECK: liveins: $r0, $r1
681     ; CHECK-NEXT: {{  $}}
682     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
683     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
684     ; CHECK-NEXT: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
685     ; CHECK-NEXT: t2STRi12 [[COPY1]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s32))
686     ; CHECK-NEXT: t2STRi12 [[COPY1]], [[COPY]], 4, 14 /* CC::al */, $noreg :: (store (s32))
687     ; CHECK-NEXT: t2STRi8 [[COPY1]], [[COPY]], -8, 14 /* CC::al */, $noreg :: (store (s32))
688     ; CHECK-NEXT: $r0 = COPY [[t2SUBri]]
689     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
690     %0:gprnopc = COPY $r0
691     %1:rgpr = COPY $r1
692     t2STRi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
693     %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
694     t2STRi12 %1:rgpr, %0, 4, 14, $noreg :: (store (s32), align 4)
695     t2STRi8 %1:rgpr, %0, -8, 14, $noreg :: (store (s32), align 4)
696     $r0 = COPY %2
697     tBX_RET 14, $noreg, implicit $r0
701 name:            t2STRHi12_negoff
702 tracksRegLiveness: true
703 registers:
704   - { id: 0, class: gprnopc, preferred-register: '' }
705   - { id: 1, class: rgpr, preferred-register: '' }
706   - { id: 2, class: rgpr, preferred-register: '' }
707 liveins:
708   - { reg: '$r0', virtual-reg: '%0' }
709   - { reg: '$r1', virtual-reg: '%1' }
710 body:             |
711   bb.0:
712     liveins: $r0, $r1
714     ; CHECK-LABEL: name: t2STRHi12_negoff
715     ; CHECK: liveins: $r0, $r1
716     ; CHECK-NEXT: {{  $}}
717     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
718     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
719     ; CHECK-NEXT: t2STRHi12 [[COPY1]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s32))
720     ; CHECK-NEXT: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
721     ; CHECK-NEXT: t2STRHi12 [[COPY1]], [[COPY]], 4, 14 /* CC::al */, $noreg :: (store (s32))
722     ; CHECK-NEXT: t2STRHi8 [[COPY1]], [[COPY]], -8, 14 /* CC::al */, $noreg :: (store (s32))
723     ; CHECK-NEXT: $r0 = COPY [[t2SUBri]]
724     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
725     %0:gprnopc = COPY $r0
726     %1:rgpr = COPY $r1
727     t2STRHi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
728     %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
729     t2STRHi12 %1:rgpr, %0, 4, 14, $noreg :: (store (s32), align 4)
730     t2STRHi8 %1:rgpr, %0, -8, 14, $noreg :: (store (s32), align 4)
731     $r0 = COPY %2
732     tBX_RET 14, $noreg, implicit $r0
736 name:            t2STRBi12_negoff
737 tracksRegLiveness: true
738 registers:
739   - { id: 0, class: gprnopc, preferred-register: '' }
740   - { id: 1, class: rgpr, preferred-register: '' }
741   - { id: 2, class: rgpr, preferred-register: '' }
742 liveins:
743   - { reg: '$r0', virtual-reg: '%0' }
744   - { reg: '$r1', virtual-reg: '%1' }
745 body:             |
746   bb.0:
747     liveins: $r0, $r1
749     ; CHECK-LABEL: name: t2STRBi12_negoff
750     ; CHECK: liveins: $r0, $r1
751     ; CHECK-NEXT: {{  $}}
752     ; CHECK-NEXT: [[COPY:%[0-9]+]]:gprnopc = COPY $r0
753     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:rgpr = COPY $r1
754     ; CHECK-NEXT: t2STRBi12 [[COPY1]], [[COPY]], 0, 14 /* CC::al */, $noreg :: (store (s32))
755     ; CHECK-NEXT: [[t2SUBri:%[0-9]+]]:rgpr = nuw t2SUBri [[COPY]], 32, 14 /* CC::al */, $noreg, $noreg
756     ; CHECK-NEXT: t2STRBi12 [[COPY1]], [[COPY]], 4, 14 /* CC::al */, $noreg :: (store (s32))
757     ; CHECK-NEXT: t2STRBi8 [[COPY1]], [[COPY]], -8, 14 /* CC::al */, $noreg :: (store (s32))
758     ; CHECK-NEXT: $r0 = COPY [[t2SUBri]]
759     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
760     %0:gprnopc = COPY $r0
761     %1:rgpr = COPY $r1
762     t2STRBi12 %1:rgpr, %0, 0, 14, $noreg :: (store (s32), align 4)
763     %2:rgpr = nuw t2SUBri %0, 32, 14, $noreg, $noreg
764     t2STRBi12 %1:rgpr, %0, 4, 14, $noreg :: (store (s32), align 4)
765     t2STRBi8 %1:rgpr, %0, -8, 14, $noreg :: (store (s32), align 4)
766     $r0 = COPY %2
767     tBX_RET 14, $noreg, implicit $r0