[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / store-prepostinc.mir
blob18a47f7aee026deed7d1c951acf208d9c641c7c1
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -run-pass=arm-ldst-opt %s -o - | FileCheck %s
4 --- |
5   target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
6   target triple = "thumbv7m-none-unknown-eabi"
8   define ptr @STR_pre4(ptr %p, i32 %v) { unreachable }
9   define ptr @STR_pre8(ptr %p, i32 %v) { unreachable }
10   define ptr @STR_pre255(ptr %p, i32 %v) { unreachable }
11   define ptr @STR_pre256(ptr %p, i32 %v) { unreachable }
13   define ptr @STRD_pre4(ptr %p, i32 %v) { unreachable }
14   define ptr @STRD_pre8(ptr %p, i32 %v) { unreachable }
15   define ptr @STRD_pre255(ptr %p, i32 %v) { unreachable }
16   define ptr @STRD_pre256(ptr %p, i32 %v) { unreachable }
17   define ptr @STRD_pre1020(ptr %p, i32 %v) { unreachable }
18   define ptr @STRD_pre1024(ptr %p, i32 %v) { unreachable }
19   define ptr @STRD_prem4(ptr %p, i32 %v) { unreachable }
20   define ptr @STRD_prem8(ptr %p, i32 %v) { unreachable }
21   define ptr @STRD_prem255(ptr %p, i32 %v) { unreachable }
22   define ptr @STRD_prem256(ptr %p, i32 %v) { unreachable }
23   define ptr @STRD_prem1020(ptr %p, i32 %v) { unreachable }
24   define ptr @STRD_prem1024(ptr %p, i32 %v) { unreachable }
26   define ptr @STR_post4(ptr %p, i32 %v) { unreachable }
27   define ptr @STR_post8(ptr %p, i32 %v) { unreachable }
28   define ptr @STR_post255(ptr %p, i32 %v) { unreachable }
29   define ptr @STR_post256(ptr %p, i32 %v) { unreachable }
31   define ptr @STRD_post4(ptr %p, i32 %v) { unreachable }
32   define ptr @STRD_post8(ptr %p, i32 %v) { unreachable }
33   define ptr @STRD_post255(ptr %p, i32 %v) { unreachable }
34   define ptr @STRD_post256(ptr %p, i32 %v) { unreachable }
35   define ptr @STRD_post1020(ptr %p, i32 %v) { unreachable }
36   define ptr @STRD_post1024(ptr %p, i32 %v) { unreachable }
37   define ptr @STRD_postm4(ptr %p, i32 %v) { unreachable }
38   define ptr @STRD_postm8(ptr %p, i32 %v) { unreachable }
39   define ptr @STRD_postm255(ptr %p, i32 %v) { unreachable }
40   define ptr @STRD_postm256(ptr %p, i32 %v) { unreachable }
41   define ptr @STRD_postm1020(ptr %p, i32 %v) { unreachable }
42   define ptr @STRD_postm1024(ptr %p, i32 %v) { unreachable }
44 ...
45 ---
46 name:            STR_pre4
47 alignment:       2
48 tracksRegLiveness: true
49 liveins:
50   - { reg: '$r0', virtual-reg: '' }
51   - { reg: '$r1', virtual-reg: '' }
52 body:             |
53   bb.0 (%ir-block.0):
54     liveins: $r0, $r1
56     ; CHECK-LABEL: name: STR_pre4
57     ; CHECK: liveins: $r0, $r1
58     ; CHECK-NEXT: {{  $}}
59     ; CHECK-NEXT: early-clobber $r0 = t2STR_PRE killed $r1, $r0, 4, 14 /* CC::al */, $noreg :: (store (s32))
60     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
61     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
62     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
63     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
65 ...
66 ---
67 name:            STR_pre8
68 alignment:       2
69 tracksRegLiveness: true
70 liveins:
71   - { reg: '$r0', virtual-reg: '' }
72   - { reg: '$r1', virtual-reg: '' }
73 body:             |
74   bb.0 (%ir-block.0):
75     liveins: $r0, $r1
77     ; CHECK-LABEL: name: STR_pre8
78     ; CHECK: liveins: $r0, $r1
79     ; CHECK-NEXT: {{  $}}
80     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
81     ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
82     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
83     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
84     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
85     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
87 ...
88 ---
89 name:            STR_pre255
90 alignment:       2
91 tracksRegLiveness: true
92 liveins:
93   - { reg: '$r0', virtual-reg: '' }
94   - { reg: '$r1', virtual-reg: '' }
95 body:             |
96   bb.0 (%ir-block.0):
97     liveins: $r0, $r1
99     ; CHECK-LABEL: name: STR_pre255
100     ; CHECK: liveins: $r0, $r1
101     ; CHECK-NEXT: {{  $}}
102     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
103     ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
104     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
105     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
106     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
107     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
111 name:            STR_pre256
112 alignment:       2
113 tracksRegLiveness: true
114 liveins:
115   - { reg: '$r0', virtual-reg: '' }
116   - { reg: '$r1', virtual-reg: '' }
117 body:             |
118   bb.0 (%ir-block.0):
119     liveins: $r0, $r1
121     ; CHECK-LABEL: name: STR_pre256
122     ; CHECK: liveins: $r0, $r1
123     ; CHECK-NEXT: {{  $}}
124     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
125     ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
126     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
127     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
128     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
129     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
133 name:            STRD_pre4
134 alignment:       2
135 tracksRegLiveness: true
136 liveins:
137   - { reg: '$r0', virtual-reg: '' }
138   - { reg: '$r1', virtual-reg: '' }
139   - { reg: '$r2', virtual-reg: '' }
140 body:             |
141   bb.0 (%ir-block.0):
142     liveins: $r0, $r1, $r2
144     ; CHECK-LABEL: name: STRD_pre4
145     ; CHECK: liveins: $r0, $r1, $r2
146     ; CHECK-NEXT: {{  $}}
147     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
148     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
149     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
150     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
151     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
152     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
156 name:            STRD_pre8
157 alignment:       2
158 tracksRegLiveness: true
159 liveins:
160   - { reg: '$r0', virtual-reg: '' }
161   - { reg: '$r1', virtual-reg: '' }
162   - { reg: '$r2', virtual-reg: '' }
163 body:             |
164   bb.0 (%ir-block.0):
165     liveins: $r0, $r1, $r2
167     ; CHECK-LABEL: name: STRD_pre8
168     ; CHECK: liveins: $r0, $r1, $r2
169     ; CHECK-NEXT: {{  $}}
170     ; CHECK-NEXT: $r0 = t2STRD_PRE killed renamable $r1, killed renamable $r2, killed $r0, 8, 14 /* CC::al */, $noreg :: (store (s64))
171     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
172     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
173     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
174     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
178 name:            STRD_pre255
179 alignment:       2
180 tracksRegLiveness: true
181 liveins:
182   - { reg: '$r0', virtual-reg: '' }
183   - { reg: '$r1', virtual-reg: '' }
184   - { reg: '$r2', virtual-reg: '' }
185 body:             |
186   bb.0 (%ir-block.0):
187     liveins: $r0, $r1, $r2
189     ; CHECK-LABEL: name: STRD_pre255
190     ; CHECK: liveins: $r0, $r1, $r2
191     ; CHECK-NEXT: {{  $}}
192     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
193     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
194     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
195     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
196     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
197     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
201 name:            STRD_pre256
202 alignment:       2
203 tracksRegLiveness: true
204 liveins:
205   - { reg: '$r0', virtual-reg: '' }
206   - { reg: '$r1', virtual-reg: '' }
207   - { reg: '$r2', virtual-reg: '' }
208 body:             |
209   bb.0 (%ir-block.0):
210     liveins: $r0, $r1, $r2
212     ; CHECK-LABEL: name: STRD_pre256
213     ; CHECK: liveins: $r0, $r1, $r2
214     ; CHECK-NEXT: {{  $}}
215     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
216     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
217     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
218     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
219     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
220     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
224 name:            STRD_pre1020
225 alignment:       2
226 tracksRegLiveness: true
227 liveins:
228   - { reg: '$r0', virtual-reg: '' }
229   - { reg: '$r1', virtual-reg: '' }
230   - { reg: '$r2', virtual-reg: '' }
231 body:             |
232   bb.0 (%ir-block.0):
233     liveins: $r0, $r1, $r2
235     ; CHECK-LABEL: name: STRD_pre1020
236     ; CHECK: liveins: $r0, $r1, $r2
237     ; CHECK-NEXT: {{  $}}
238     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
239     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
240     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
241     renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
242     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
243     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
247 name:            STRD_pre1024
248 alignment:       2
249 tracksRegLiveness: true
250 liveins:
251   - { reg: '$r0', virtual-reg: '' }
252   - { reg: '$r1', virtual-reg: '' }
253   - { reg: '$r2', virtual-reg: '' }
254 body:             |
255   bb.0 (%ir-block.0):
256     liveins: $r0, $r1, $r2
258     ; CHECK-LABEL: name: STRD_pre1024
259     ; CHECK: liveins: $r0, $r1, $r2
260     ; CHECK-NEXT: {{  $}}
261     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
262     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
263     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
264     renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
265     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
266     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
270 name:            STRD_prem4
271 alignment:       2
272 tracksRegLiveness: true
273 liveins:
274   - { reg: '$r0', virtual-reg: '' }
275   - { reg: '$r1', virtual-reg: '' }
276   - { reg: '$r2', virtual-reg: '' }
277 body:             |
278   bb.0 (%ir-block.0):
279     liveins: $r0, $r1, $r2
281     ; CHECK-LABEL: name: STRD_prem4
282     ; CHECK: liveins: $r0, $r1, $r2
283     ; CHECK-NEXT: {{  $}}
284     ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
285     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
286     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
287     renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
288     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
289     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
293 name:            STRD_prem8
294 alignment:       2
295 tracksRegLiveness: true
296 liveins:
297   - { reg: '$r0', virtual-reg: '' }
298   - { reg: '$r1', virtual-reg: '' }
299   - { reg: '$r2', virtual-reg: '' }
300 body:             |
301   bb.0 (%ir-block.0):
302     liveins: $r0, $r1, $r2
304     ; CHECK-LABEL: name: STRD_prem8
305     ; CHECK: liveins: $r0, $r1, $r2
306     ; CHECK-NEXT: {{  $}}
307     ; CHECK-NEXT: $r0 = t2STRD_PRE killed renamable $r1, killed renamable $r2, killed $r0, -8, 14 /* CC::al */, $noreg :: (store (s64))
308     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
309     renamable $r0 = nuw t2SUBri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
310     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
311     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
315 name:            STRD_prem255
316 alignment:       2
317 tracksRegLiveness: true
318 liveins:
319   - { reg: '$r0', virtual-reg: '' }
320   - { reg: '$r1', virtual-reg: '' }
321   - { reg: '$r2', virtual-reg: '' }
322 body:             |
323   bb.0 (%ir-block.0):
324     liveins: $r0, $r1, $r2
326     ; CHECK-LABEL: name: STRD_prem255
327     ; CHECK: liveins: $r0, $r1, $r2
328     ; CHECK-NEXT: {{  $}}
329     ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
330     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
331     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
332     renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
333     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
334     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
338 name:            STRD_prem256
339 alignment:       2
340 tracksRegLiveness: true
341 liveins:
342   - { reg: '$r0', virtual-reg: '' }
343   - { reg: '$r1', virtual-reg: '' }
344   - { reg: '$r2', virtual-reg: '' }
345 body:             |
346   bb.0 (%ir-block.0):
347     liveins: $r0, $r1, $r2
349     ; CHECK-LABEL: name: STRD_prem256
350     ; CHECK: liveins: $r0, $r1, $r2
351     ; CHECK-NEXT: {{  $}}
352     ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
353     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
354     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
355     renamable $r0 = nuw t2SUBri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
356     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
357     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
361 name:            STRD_prem1020
362 alignment:       2
363 tracksRegLiveness: true
364 liveins:
365   - { reg: '$r0', virtual-reg: '' }
366   - { reg: '$r1', virtual-reg: '' }
367   - { reg: '$r2', virtual-reg: '' }
368 body:             |
369   bb.0 (%ir-block.0):
370     liveins: $r0, $r1, $r2
372     ; CHECK-LABEL: name: STRD_prem1020
373     ; CHECK: liveins: $r0, $r1, $r2
374     ; CHECK-NEXT: {{  $}}
375     ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
376     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
377     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
378     renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
379     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
380     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
384 name:            STRD_prem1024
385 alignment:       2
386 tracksRegLiveness: true
387 liveins:
388   - { reg: '$r0', virtual-reg: '' }
389   - { reg: '$r1', virtual-reg: '' }
390   - { reg: '$r2', virtual-reg: '' }
391 body:             |
392   bb.0 (%ir-block.0):
393     liveins: $r0, $r1, $r2
395     ; CHECK-LABEL: name: STRD_prem1024
396     ; CHECK: liveins: $r0, $r1, $r2
397     ; CHECK-NEXT: {{  $}}
398     ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
399     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
400     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
401     renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
402     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
403     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
408 name:            STR_post4
409 alignment:       2
410 tracksRegLiveness: true
411 liveins:
412   - { reg: '$r0', virtual-reg: '' }
413   - { reg: '$r1', virtual-reg: '' }
414 body:             |
415   bb.0 (%ir-block.0):
416     liveins: $r0, $r1
418     ; CHECK-LABEL: name: STR_post4
419     ; CHECK: liveins: $r0, $r1
420     ; CHECK-NEXT: {{  $}}
421     ; CHECK-NEXT: early-clobber $r0 = t2STR_POST killed $r1, $r0, 4, 14 /* CC::al */, $noreg :: (store (s32))
422     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
423     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
424     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
425     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
429 name:            STR_post8
430 alignment:       2
431 tracksRegLiveness: true
432 liveins:
433   - { reg: '$r0', virtual-reg: '' }
434   - { reg: '$r1', virtual-reg: '' }
435 body:             |
436   bb.0 (%ir-block.0):
437     liveins: $r0, $r1
439     ; CHECK-LABEL: name: STR_post8
440     ; CHECK: liveins: $r0, $r1
441     ; CHECK-NEXT: {{  $}}
442     ; CHECK-NEXT: early-clobber $r0 = t2STR_POST killed $r1, $r0, 8, 14 /* CC::al */, $noreg :: (store (s32))
443     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
444     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
445     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
446     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
450 name:            STR_post255
451 alignment:       2
452 tracksRegLiveness: true
453 liveins:
454   - { reg: '$r0', virtual-reg: '' }
455   - { reg: '$r1', virtual-reg: '' }
456 body:             |
457   bb.0 (%ir-block.0):
458     liveins: $r0, $r1
460     ; CHECK-LABEL: name: STR_post255
461     ; CHECK: liveins: $r0, $r1
462     ; CHECK-NEXT: {{  $}}
463     ; CHECK-NEXT: early-clobber $r0 = t2STR_POST killed $r1, $r0, 255, 14 /* CC::al */, $noreg :: (store (s32))
464     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
465     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
466     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
467     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
471 name:            STR_post256
472 alignment:       2
473 tracksRegLiveness: true
474 liveins:
475   - { reg: '$r0', virtual-reg: '' }
476   - { reg: '$r1', virtual-reg: '' }
477 body:             |
478   bb.0 (%ir-block.0):
479     liveins: $r0, $r1
481     ; CHECK-LABEL: name: STR_post256
482     ; CHECK: liveins: $r0, $r1
483     ; CHECK-NEXT: {{  $}}
484     ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
485     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
486     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
487     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
488     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
489     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
493 name:            STRD_post4
494 alignment:       2
495 tracksRegLiveness: true
496 liveins:
497   - { reg: '$r0', virtual-reg: '' }
498   - { reg: '$r1', virtual-reg: '' }
499   - { reg: '$r2', virtual-reg: '' }
500 body:             |
501   bb.0 (%ir-block.0):
502     liveins: $r0, $r1, $r2
504     ; CHECK-LABEL: name: STRD_post4
505     ; CHECK: liveins: $r0, $r1, $r2
506     ; CHECK-NEXT: {{  $}}
507     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 4, 14 /* CC::al */, $noreg :: (store (s64))
508     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
509     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
510     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
511     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
515 name:            STRD_post8
516 alignment:       2
517 tracksRegLiveness: true
518 liveins:
519   - { reg: '$r0', virtual-reg: '' }
520   - { reg: '$r1', virtual-reg: '' }
521   - { reg: '$r2', virtual-reg: '' }
522 body:             |
523   bb.0 (%ir-block.0):
524     liveins: $r0, $r1, $r2
526     ; CHECK-LABEL: name: STRD_post8
527     ; CHECK: liveins: $r0, $r1, $r2
528     ; CHECK-NEXT: {{  $}}
529     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 8, 14 /* CC::al */, $noreg :: (store (s64))
530     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
531     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
532     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
533     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
537 name:            STRD_post255
538 alignment:       2
539 tracksRegLiveness: true
540 liveins:
541   - { reg: '$r0', virtual-reg: '' }
542   - { reg: '$r1', virtual-reg: '' }
543   - { reg: '$r2', virtual-reg: '' }
544 body:             |
545   bb.0 (%ir-block.0):
546     liveins: $r0, $r1, $r2
548     ; CHECK-LABEL: name: STRD_post255
549     ; CHECK: liveins: $r0, $r1, $r2
550     ; CHECK-NEXT: {{  $}}
551     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
552     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
553     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
554     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
555     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
556     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
560 name:            STRD_post256
561 alignment:       2
562 tracksRegLiveness: true
563 liveins:
564   - { reg: '$r0', virtual-reg: '' }
565   - { reg: '$r1', virtual-reg: '' }
566   - { reg: '$r2', virtual-reg: '' }
567 body:             |
568   bb.0 (%ir-block.0):
569     liveins: $r0, $r1, $r2
571     ; CHECK-LABEL: name: STRD_post256
572     ; CHECK: liveins: $r0, $r1, $r2
573     ; CHECK-NEXT: {{  $}}
574     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 256, 14 /* CC::al */, $noreg :: (store (s64))
575     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
576     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
577     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
578     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
582 name:            STRD_post1020
583 alignment:       2
584 tracksRegLiveness: true
585 liveins:
586   - { reg: '$r0', virtual-reg: '' }
587   - { reg: '$r1', virtual-reg: '' }
588   - { reg: '$r2', virtual-reg: '' }
589 body:             |
590   bb.0 (%ir-block.0):
591     liveins: $r0, $r1, $r2
593     ; CHECK-LABEL: name: STRD_post1020
594     ; CHECK: liveins: $r0, $r1, $r2
595     ; CHECK-NEXT: {{  $}}
596     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 1020, 14 /* CC::al */, $noreg :: (store (s64))
597     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
598     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
599     renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
600     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
604 name:            STRD_post1024
605 alignment:       2
606 tracksRegLiveness: true
607 liveins:
608   - { reg: '$r0', virtual-reg: '' }
609   - { reg: '$r1', virtual-reg: '' }
610   - { reg: '$r2', virtual-reg: '' }
611 body:             |
612   bb.0 (%ir-block.0):
613     liveins: $r0, $r1, $r2
615     ; CHECK-LABEL: name: STRD_post1024
616     ; CHECK: liveins: $r0, $r1, $r2
617     ; CHECK-NEXT: {{  $}}
618     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
619     ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
620     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
621     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
622     renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
623     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
627 name:            STRD_postm4
628 alignment:       2
629 tracksRegLiveness: true
630 liveins:
631   - { reg: '$r0', virtual-reg: '' }
632   - { reg: '$r1', virtual-reg: '' }
633   - { reg: '$r2', virtual-reg: '' }
634 body:             |
635   bb.0 (%ir-block.0):
636     liveins: $r0, $r1, $r2
638     ; CHECK-LABEL: name: STRD_postm4
639     ; CHECK: liveins: $r0, $r1, $r2
640     ; CHECK-NEXT: {{  $}}
641     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -4, 14 /* CC::al */, $noreg :: (store (s64))
642     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
643     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
644     renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
645     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
649 name:            STRD_postm8
650 alignment:       2
651 tracksRegLiveness: true
652 liveins:
653   - { reg: '$r0', virtual-reg: '' }
654   - { reg: '$r1', virtual-reg: '' }
655   - { reg: '$r2', virtual-reg: '' }
656 body:             |
657   bb.0 (%ir-block.0):
658     liveins: $r0, $r1, $r2
660     ; CHECK-LABEL: name: STRD_postm8
661     ; CHECK: liveins: $r0, $r1, $r2
662     ; CHECK-NEXT: {{  $}}
663     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -8, 14 /* CC::al */, $noreg :: (store (s64))
664     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
665     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
666     renamable $r0 = nuw t2SUBri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
667     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
671 name:            STRD_postm255
672 alignment:       2
673 tracksRegLiveness: true
674 liveins:
675   - { reg: '$r0', virtual-reg: '' }
676   - { reg: '$r1', virtual-reg: '' }
677   - { reg: '$r2', virtual-reg: '' }
678 body:             |
679   bb.0 (%ir-block.0):
680     liveins: $r0, $r1, $r2
682     ; CHECK-LABEL: name: STRD_postm255
683     ; CHECK: liveins: $r0, $r1, $r2
684     ; CHECK-NEXT: {{  $}}
685     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
686     ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
687     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
688     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
689     renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
690     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
694 name:            STRD_postm256
695 alignment:       2
696 tracksRegLiveness: true
697 liveins:
698   - { reg: '$r0', virtual-reg: '' }
699   - { reg: '$r1', virtual-reg: '' }
700   - { reg: '$r2', virtual-reg: '' }
701 body:             |
702   bb.0 (%ir-block.0):
703     liveins: $r0, $r1, $r2
705     ; CHECK-LABEL: name: STRD_postm256
706     ; CHECK: liveins: $r0, $r1, $r2
707     ; CHECK-NEXT: {{  $}}
708     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 256, 14 /* CC::al */, $noreg :: (store (s64))
709     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
710     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
711     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
712     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
716 name:            STRD_postm1020
717 alignment:       2
718 tracksRegLiveness: true
719 liveins:
720   - { reg: '$r0', virtual-reg: '' }
721   - { reg: '$r1', virtual-reg: '' }
722   - { reg: '$r2', virtual-reg: '' }
723 body:             |
724   bb.0 (%ir-block.0):
725     liveins: $r0, $r1, $r2
727     ; CHECK-LABEL: name: STRD_postm1020
728     ; CHECK: liveins: $r0, $r1, $r2
729     ; CHECK-NEXT: {{  $}}
730     ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -1020, 14 /* CC::al */, $noreg :: (store (s64))
731     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
732     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
733     renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
734     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
738 name:            STRD_postm1024
739 alignment:       2
740 tracksRegLiveness: true
741 liveins:
742   - { reg: '$r0', virtual-reg: '' }
743   - { reg: '$r1', virtual-reg: '' }
744   - { reg: '$r2', virtual-reg: '' }
745 body:             |
746   bb.0 (%ir-block.0):
747     liveins: $r0, $r1, $r2
749     ; CHECK-LABEL: name: STRD_postm1024
750     ; CHECK: liveins: $r0, $r1, $r2
751     ; CHECK-NEXT: {{  $}}
752     ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
753     ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
754     ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
755     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
756     renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
757     tBX_RET 14 /* CC::al */, $noreg, implicit $r0