[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / store-prepostinc.mir
blob35b2fd952633259a371c0dc46d897e0e2a9a5373
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 i8* @STR_pre4(i8* %p, i32 %v) { unreachable }
9   define i8* @STR_pre8(i8* %p, i32 %v) { unreachable }
10   define i8* @STR_pre255(i8* %p, i32 %v) { unreachable }
11   define i8* @STR_pre256(i8* %p, i32 %v) { unreachable }
13   define i8* @STRD_pre4(i8* %p, i32 %v) { unreachable }
14   define i8* @STRD_pre8(i8* %p, i32 %v) { unreachable }
15   define i8* @STRD_pre255(i8* %p, i32 %v) { unreachable }
16   define i8* @STRD_pre256(i8* %p, i32 %v) { unreachable }
17   define i8* @STRD_pre1020(i8* %p, i32 %v) { unreachable }
18   define i8* @STRD_pre1024(i8* %p, i32 %v) { unreachable }
19   define i8* @STRD_prem4(i8* %p, i32 %v) { unreachable }
20   define i8* @STRD_prem8(i8* %p, i32 %v) { unreachable }
21   define i8* @STRD_prem255(i8* %p, i32 %v) { unreachable }
22   define i8* @STRD_prem256(i8* %p, i32 %v) { unreachable }
23   define i8* @STRD_prem1020(i8* %p, i32 %v) { unreachable }
24   define i8* @STRD_prem1024(i8* %p, i32 %v) { unreachable }
26   define i8* @STR_post4(i8* %p, i32 %v) { unreachable }
27   define i8* @STR_post8(i8* %p, i32 %v) { unreachable }
28   define i8* @STR_post255(i8* %p, i32 %v) { unreachable }
29   define i8* @STR_post256(i8* %p, i32 %v) { unreachable }
31   define i8* @STRD_post4(i8* %p, i32 %v) { unreachable }
32   define i8* @STRD_post8(i8* %p, i32 %v) { unreachable }
33   define i8* @STRD_post255(i8* %p, i32 %v) { unreachable }
34   define i8* @STRD_post256(i8* %p, i32 %v) { unreachable }
35   define i8* @STRD_post1020(i8* %p, i32 %v) { unreachable }
36   define i8* @STRD_post1024(i8* %p, i32 %v) { unreachable }
37   define i8* @STRD_postm4(i8* %p, i32 %v) { unreachable }
38   define i8* @STRD_postm8(i8* %p, i32 %v) { unreachable }
39   define i8* @STRD_postm255(i8* %p, i32 %v) { unreachable }
40   define i8* @STRD_postm256(i8* %p, i32 %v) { unreachable }
41   define i8* @STRD_postm1020(i8* %p, i32 %v) { unreachable }
42   define i8* @STRD_postm1024(i8* %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: early-clobber $r0 = t2STR_PRE killed $r1, $r0, 4, 14 /* CC::al */, $noreg :: (store (s32))
59     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
60     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
61     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
62     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
64 ...
65 ---
66 name:            STR_pre8
67 alignment:       2
68 tracksRegLiveness: true
69 liveins:
70   - { reg: '$r0', virtual-reg: '' }
71   - { reg: '$r1', virtual-reg: '' }
72 body:             |
73   bb.0 (%ir-block.0):
74     liveins: $r0, $r1
76     ; CHECK-LABEL: name: STR_pre8
77     ; CHECK: liveins: $r0, $r1
78     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
79     ; CHECK: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
80     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
81     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
82     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
83     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
85 ...
86 ---
87 name:            STR_pre255
88 alignment:       2
89 tracksRegLiveness: true
90 liveins:
91   - { reg: '$r0', virtual-reg: '' }
92   - { reg: '$r1', virtual-reg: '' }
93 body:             |
94   bb.0 (%ir-block.0):
95     liveins: $r0, $r1
97     ; CHECK-LABEL: name: STR_pre255
98     ; CHECK: liveins: $r0, $r1
99     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
100     ; CHECK: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
101     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
102     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
103     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
104     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
108 name:            STR_pre256
109 alignment:       2
110 tracksRegLiveness: true
111 liveins:
112   - { reg: '$r0', virtual-reg: '' }
113   - { reg: '$r1', virtual-reg: '' }
114 body:             |
115   bb.0 (%ir-block.0):
116     liveins: $r0, $r1
118     ; CHECK-LABEL: name: STR_pre256
119     ; CHECK: liveins: $r0, $r1
120     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
121     ; CHECK: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
122     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
123     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
124     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
125     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
129 name:            STRD_pre4
130 alignment:       2
131 tracksRegLiveness: true
132 liveins:
133   - { reg: '$r0', virtual-reg: '' }
134   - { reg: '$r1', virtual-reg: '' }
135   - { reg: '$r2', virtual-reg: '' }
136 body:             |
137   bb.0 (%ir-block.0):
138     liveins: $r0, $r1, $r2
140     ; CHECK-LABEL: name: STRD_pre4
141     ; CHECK: liveins: $r0, $r1, $r2
142     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
143     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
144     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
145     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
146     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
147     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
151 name:            STRD_pre8
152 alignment:       2
153 tracksRegLiveness: true
154 liveins:
155   - { reg: '$r0', virtual-reg: '' }
156   - { reg: '$r1', virtual-reg: '' }
157   - { reg: '$r2', virtual-reg: '' }
158 body:             |
159   bb.0 (%ir-block.0):
160     liveins: $r0, $r1, $r2
162     ; CHECK-LABEL: name: STRD_pre8
163     ; CHECK: liveins: $r0, $r1, $r2
164     ; CHECK: $r0 = t2STRD_PRE killed renamable $r1, killed renamable $r2, killed $r0, 8, 14 /* CC::al */, $noreg :: (store (s64))
165     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
166     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
167     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
168     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
172 name:            STRD_pre255
173 alignment:       2
174 tracksRegLiveness: true
175 liveins:
176   - { reg: '$r0', virtual-reg: '' }
177   - { reg: '$r1', virtual-reg: '' }
178   - { reg: '$r2', virtual-reg: '' }
179 body:             |
180   bb.0 (%ir-block.0):
181     liveins: $r0, $r1, $r2
183     ; CHECK-LABEL: name: STRD_pre255
184     ; CHECK: liveins: $r0, $r1, $r2
185     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
186     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
187     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
188     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
189     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
190     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
194 name:            STRD_pre256
195 alignment:       2
196 tracksRegLiveness: true
197 liveins:
198   - { reg: '$r0', virtual-reg: '' }
199   - { reg: '$r1', virtual-reg: '' }
200   - { reg: '$r2', virtual-reg: '' }
201 body:             |
202   bb.0 (%ir-block.0):
203     liveins: $r0, $r1, $r2
205     ; CHECK-LABEL: name: STRD_pre256
206     ; CHECK: liveins: $r0, $r1, $r2
207     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
208     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
209     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
210     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
211     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
212     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
216 name:            STRD_pre1020
217 alignment:       2
218 tracksRegLiveness: true
219 liveins:
220   - { reg: '$r0', virtual-reg: '' }
221   - { reg: '$r1', virtual-reg: '' }
222   - { reg: '$r2', virtual-reg: '' }
223 body:             |
224   bb.0 (%ir-block.0):
225     liveins: $r0, $r1, $r2
227     ; CHECK-LABEL: name: STRD_pre1020
228     ; CHECK: liveins: $r0, $r1, $r2
229     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
230     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
231     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
232     renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
233     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
234     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
238 name:            STRD_pre1024
239 alignment:       2
240 tracksRegLiveness: true
241 liveins:
242   - { reg: '$r0', virtual-reg: '' }
243   - { reg: '$r1', virtual-reg: '' }
244   - { reg: '$r2', virtual-reg: '' }
245 body:             |
246   bb.0 (%ir-block.0):
247     liveins: $r0, $r1, $r2
249     ; CHECK-LABEL: name: STRD_pre1024
250     ; CHECK: liveins: $r0, $r1, $r2
251     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
252     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
253     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
254     renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
255     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
256     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
260 name:            STRD_prem4
261 alignment:       2
262 tracksRegLiveness: true
263 liveins:
264   - { reg: '$r0', virtual-reg: '' }
265   - { reg: '$r1', virtual-reg: '' }
266   - { reg: '$r2', virtual-reg: '' }
267 body:             |
268   bb.0 (%ir-block.0):
269     liveins: $r0, $r1, $r2
271     ; CHECK-LABEL: name: STRD_prem4
272     ; CHECK: liveins: $r0, $r1, $r2
273     ; CHECK: renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
274     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
275     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
276     renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
277     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
278     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
282 name:            STRD_prem8
283 alignment:       2
284 tracksRegLiveness: true
285 liveins:
286   - { reg: '$r0', virtual-reg: '' }
287   - { reg: '$r1', virtual-reg: '' }
288   - { reg: '$r2', virtual-reg: '' }
289 body:             |
290   bb.0 (%ir-block.0):
291     liveins: $r0, $r1, $r2
293     ; CHECK-LABEL: name: STRD_prem8
294     ; CHECK: liveins: $r0, $r1, $r2
295     ; CHECK: $r0 = t2STRD_PRE killed renamable $r1, killed renamable $r2, killed $r0, -8, 14 /* CC::al */, $noreg :: (store (s64))
296     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
297     renamable $r0 = nuw t2SUBri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
298     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
299     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
303 name:            STRD_prem255
304 alignment:       2
305 tracksRegLiveness: true
306 liveins:
307   - { reg: '$r0', virtual-reg: '' }
308   - { reg: '$r1', virtual-reg: '' }
309   - { reg: '$r2', virtual-reg: '' }
310 body:             |
311   bb.0 (%ir-block.0):
312     liveins: $r0, $r1, $r2
314     ; CHECK-LABEL: name: STRD_prem255
315     ; CHECK: liveins: $r0, $r1, $r2
316     ; CHECK: renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
317     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
318     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
319     renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
320     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
321     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
325 name:            STRD_prem256
326 alignment:       2
327 tracksRegLiveness: true
328 liveins:
329   - { reg: '$r0', virtual-reg: '' }
330   - { reg: '$r1', virtual-reg: '' }
331   - { reg: '$r2', virtual-reg: '' }
332 body:             |
333   bb.0 (%ir-block.0):
334     liveins: $r0, $r1, $r2
336     ; CHECK-LABEL: name: STRD_prem256
337     ; CHECK: liveins: $r0, $r1, $r2
338     ; CHECK: renamable $r0 = nuw t2SUBri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
339     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
340     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
341     renamable $r0 = nuw t2SUBri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
342     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
343     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
347 name:            STRD_prem1020
348 alignment:       2
349 tracksRegLiveness: true
350 liveins:
351   - { reg: '$r0', virtual-reg: '' }
352   - { reg: '$r1', virtual-reg: '' }
353   - { reg: '$r2', virtual-reg: '' }
354 body:             |
355   bb.0 (%ir-block.0):
356     liveins: $r0, $r1, $r2
358     ; CHECK-LABEL: name: STRD_prem1020
359     ; CHECK: liveins: $r0, $r1, $r2
360     ; CHECK: renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
361     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
362     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
363     renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
364     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
365     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
369 name:            STRD_prem1024
370 alignment:       2
371 tracksRegLiveness: true
372 liveins:
373   - { reg: '$r0', virtual-reg: '' }
374   - { reg: '$r1', virtual-reg: '' }
375   - { reg: '$r2', virtual-reg: '' }
376 body:             |
377   bb.0 (%ir-block.0):
378     liveins: $r0, $r1, $r2
380     ; CHECK-LABEL: name: STRD_prem1024
381     ; CHECK: liveins: $r0, $r1, $r2
382     ; CHECK: renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
383     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
384     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
385     renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
386     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
387     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
392 name:            STR_post4
393 alignment:       2
394 tracksRegLiveness: true
395 liveins:
396   - { reg: '$r0', virtual-reg: '' }
397   - { reg: '$r1', virtual-reg: '' }
398 body:             |
399   bb.0 (%ir-block.0):
400     liveins: $r0, $r1
402     ; CHECK-LABEL: name: STR_post4
403     ; CHECK: liveins: $r0, $r1
404     ; CHECK: early-clobber $r0 = t2STR_POST killed $r1, $r0, 4, 14 /* CC::al */, $noreg :: (store (s32))
405     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
406     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
407     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
408     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
412 name:            STR_post8
413 alignment:       2
414 tracksRegLiveness: true
415 liveins:
416   - { reg: '$r0', virtual-reg: '' }
417   - { reg: '$r1', virtual-reg: '' }
418 body:             |
419   bb.0 (%ir-block.0):
420     liveins: $r0, $r1
422     ; CHECK-LABEL: name: STR_post8
423     ; CHECK: liveins: $r0, $r1
424     ; CHECK: early-clobber $r0 = t2STR_POST killed $r1, $r0, 8, 14 /* CC::al */, $noreg :: (store (s32))
425     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
426     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
427     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
428     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
432 name:            STR_post255
433 alignment:       2
434 tracksRegLiveness: true
435 liveins:
436   - { reg: '$r0', virtual-reg: '' }
437   - { reg: '$r1', virtual-reg: '' }
438 body:             |
439   bb.0 (%ir-block.0):
440     liveins: $r0, $r1
442     ; CHECK-LABEL: name: STR_post255
443     ; CHECK: liveins: $r0, $r1
444     ; CHECK: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
445     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
446     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
447     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
448     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
449     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
453 name:            STR_post256
454 alignment:       2
455 tracksRegLiveness: true
456 liveins:
457   - { reg: '$r0', virtual-reg: '' }
458   - { reg: '$r1', virtual-reg: '' }
459 body:             |
460   bb.0 (%ir-block.0):
461     liveins: $r0, $r1
463     ; CHECK-LABEL: name: STR_post256
464     ; CHECK: liveins: $r0, $r1
465     ; CHECK: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
466     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
467     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
468     t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32))
469     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
470     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
474 name:            STRD_post4
475 alignment:       2
476 tracksRegLiveness: true
477 liveins:
478   - { reg: '$r0', virtual-reg: '' }
479   - { reg: '$r1', virtual-reg: '' }
480   - { reg: '$r2', virtual-reg: '' }
481 body:             |
482   bb.0 (%ir-block.0):
483     liveins: $r0, $r1, $r2
485     ; CHECK-LABEL: name: STRD_post4
486     ; CHECK: liveins: $r0, $r1, $r2
487     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 4, 14 /* CC::al */, $noreg :: (store (s64))
488     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
489     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
490     renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
491     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
495 name:            STRD_post8
496 alignment:       2
497 tracksRegLiveness: true
498 liveins:
499   - { reg: '$r0', virtual-reg: '' }
500   - { reg: '$r1', virtual-reg: '' }
501   - { reg: '$r2', virtual-reg: '' }
502 body:             |
503   bb.0 (%ir-block.0):
504     liveins: $r0, $r1, $r2
506     ; CHECK-LABEL: name: STRD_post8
507     ; CHECK: liveins: $r0, $r1, $r2
508     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 8, 14 /* CC::al */, $noreg :: (store (s64))
509     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
510     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
511     renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
512     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
516 name:            STRD_post255
517 alignment:       2
518 tracksRegLiveness: true
519 liveins:
520   - { reg: '$r0', virtual-reg: '' }
521   - { reg: '$r1', virtual-reg: '' }
522   - { reg: '$r2', virtual-reg: '' }
523 body:             |
524   bb.0 (%ir-block.0):
525     liveins: $r0, $r1, $r2
527     ; CHECK-LABEL: name: STRD_post255
528     ; CHECK: liveins: $r0, $r1, $r2
529     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
530     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
531     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
532     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
533     renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
534     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
538 name:            STRD_post256
539 alignment:       2
540 tracksRegLiveness: true
541 liveins:
542   - { reg: '$r0', virtual-reg: '' }
543   - { reg: '$r1', virtual-reg: '' }
544   - { reg: '$r2', virtual-reg: '' }
545 body:             |
546   bb.0 (%ir-block.0):
547     liveins: $r0, $r1, $r2
549     ; CHECK-LABEL: name: STRD_post256
550     ; CHECK: liveins: $r0, $r1, $r2
551     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 256, 14 /* CC::al */, $noreg :: (store (s64))
552     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
553     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
554     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
555     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
559 name:            STRD_post1020
560 alignment:       2
561 tracksRegLiveness: true
562 liveins:
563   - { reg: '$r0', virtual-reg: '' }
564   - { reg: '$r1', virtual-reg: '' }
565   - { reg: '$r2', virtual-reg: '' }
566 body:             |
567   bb.0 (%ir-block.0):
568     liveins: $r0, $r1, $r2
570     ; CHECK-LABEL: name: STRD_post1020
571     ; CHECK: liveins: $r0, $r1, $r2
572     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 1020, 14 /* CC::al */, $noreg :: (store (s64))
573     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
574     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
575     renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
576     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
580 name:            STRD_post1024
581 alignment:       2
582 tracksRegLiveness: true
583 liveins:
584   - { reg: '$r0', virtual-reg: '' }
585   - { reg: '$r1', virtual-reg: '' }
586   - { reg: '$r2', virtual-reg: '' }
587 body:             |
588   bb.0 (%ir-block.0):
589     liveins: $r0, $r1, $r2
591     ; CHECK-LABEL: name: STRD_post1024
592     ; CHECK: liveins: $r0, $r1, $r2
593     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
594     ; CHECK: renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
595     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
596     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
597     renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
598     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
602 name:            STRD_postm4
603 alignment:       2
604 tracksRegLiveness: true
605 liveins:
606   - { reg: '$r0', virtual-reg: '' }
607   - { reg: '$r1', virtual-reg: '' }
608   - { reg: '$r2', virtual-reg: '' }
609 body:             |
610   bb.0 (%ir-block.0):
611     liveins: $r0, $r1, $r2
613     ; CHECK-LABEL: name: STRD_postm4
614     ; CHECK: liveins: $r0, $r1, $r2
615     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -4, 14 /* CC::al */, $noreg :: (store (s64))
616     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
617     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
618     renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg
619     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
623 name:            STRD_postm8
624 alignment:       2
625 tracksRegLiveness: true
626 liveins:
627   - { reg: '$r0', virtual-reg: '' }
628   - { reg: '$r1', virtual-reg: '' }
629   - { reg: '$r2', virtual-reg: '' }
630 body:             |
631   bb.0 (%ir-block.0):
632     liveins: $r0, $r1, $r2
634     ; CHECK-LABEL: name: STRD_postm8
635     ; CHECK: liveins: $r0, $r1, $r2
636     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -8, 14 /* CC::al */, $noreg :: (store (s64))
637     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
638     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
639     renamable $r0 = nuw t2SUBri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg
640     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
644 name:            STRD_postm255
645 alignment:       2
646 tracksRegLiveness: true
647 liveins:
648   - { reg: '$r0', virtual-reg: '' }
649   - { reg: '$r1', virtual-reg: '' }
650   - { reg: '$r2', virtual-reg: '' }
651 body:             |
652   bb.0 (%ir-block.0):
653     liveins: $r0, $r1, $r2
655     ; CHECK-LABEL: name: STRD_postm255
656     ; CHECK: liveins: $r0, $r1, $r2
657     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
658     ; CHECK: renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
659     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
660     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
661     renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg
662     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
666 name:            STRD_postm256
667 alignment:       2
668 tracksRegLiveness: true
669 liveins:
670   - { reg: '$r0', virtual-reg: '' }
671   - { reg: '$r1', virtual-reg: '' }
672   - { reg: '$r2', virtual-reg: '' }
673 body:             |
674   bb.0 (%ir-block.0):
675     liveins: $r0, $r1, $r2
677     ; CHECK-LABEL: name: STRD_postm256
678     ; CHECK: liveins: $r0, $r1, $r2
679     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 256, 14 /* CC::al */, $noreg :: (store (s64))
680     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
681     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
682     renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg
683     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
687 name:            STRD_postm1020
688 alignment:       2
689 tracksRegLiveness: true
690 liveins:
691   - { reg: '$r0', virtual-reg: '' }
692   - { reg: '$r1', virtual-reg: '' }
693   - { reg: '$r2', virtual-reg: '' }
694 body:             |
695   bb.0 (%ir-block.0):
696     liveins: $r0, $r1, $r2
698     ; CHECK-LABEL: name: STRD_postm1020
699     ; CHECK: liveins: $r0, $r1, $r2
700     ; CHECK: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -1020, 14 /* CC::al */, $noreg :: (store (s64))
701     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
702     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
703     renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg
704     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
708 name:            STRD_postm1024
709 alignment:       2
710 tracksRegLiveness: true
711 liveins:
712   - { reg: '$r0', virtual-reg: '' }
713   - { reg: '$r1', virtual-reg: '' }
714   - { reg: '$r2', virtual-reg: '' }
715 body:             |
716   bb.0 (%ir-block.0):
717     liveins: $r0, $r1, $r2
719     ; CHECK-LABEL: name: STRD_postm1024
720     ; CHECK: liveins: $r0, $r1, $r2
721     ; CHECK: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
722     ; CHECK: renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
723     ; CHECK: tBX_RET 14 /* CC::al */, $noreg, implicit $r0
724     t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64))
725     renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg
726     tBX_RET 14 /* CC::al */, $noreg, implicit $r0