1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
2 # RUN: llc -o - %s -mtriple=aarch64 -mcpu=cortex-a55 -lsr-preferred-addressing-mode=preindexed -stop-after=aarch64-ldst-opt | FileCheck %s
5 name: 1-ldrwpre-ldrwui-merge
6 tracksRegLiveness: true
15 liveins: $w0, $w1, $x1
16 ; CHECK-LABEL: name: 1-ldrwpre-ldrwui-merge
17 ; CHECK: liveins: $w0, $w1, $x1
19 ; CHECK-NEXT: early-clobber $x1, renamable $w0, renamable $w2 = LDPWpre renamable $x1, 5 :: (load (s32))
20 ; CHECK-NEXT: STPWi renamable $w0, renamable $w2, renamable $x1, 0 :: (store (s32))
21 ; CHECK-NEXT: RET undef $lr
22 early-clobber renamable $x1, renamable $w0 = LDRWpre killed renamable $x1, 20 :: (load (s32))
23 renamable $w2 = LDRWui renamable $x1, 1 :: (load (s32))
24 STRWui killed renamable $w0, renamable $x1, 0 :: (store (s32))
25 STRWui killed renamable $w2, renamable $x1, 1 :: (store (s32))
31 name: 2-ldrxpre-ldrxui-merge
32 tracksRegLiveness: true
41 liveins: $x2, $x3, $x1
42 ; CHECK-LABEL: name: 2-ldrxpre-ldrxui-merge
43 ; CHECK: liveins: $x1, $x2, $x3
45 ; CHECK-NEXT: early-clobber $x1, renamable $x2, renamable $x3 = LDPXpre renamable $x1, 3 :: (load (s64))
46 ; CHECK-NEXT: STPXi renamable $x2, renamable $x3, renamable $x1, 0 :: (store (s64))
47 ; CHECK-NEXT: RET undef $lr
48 early-clobber renamable $x1, renamable $x2 = LDRXpre killed renamable $x1, 24 :: (load (s64))
49 renamable $x3 = LDRXui renamable $x1, 1 :: (load (s64))
50 STRXui killed renamable $x2, renamable $x1, 0 :: (store (s64))
51 STRXui killed renamable $x3, renamable $x1, 1 :: (store (s64))
57 name: 3-ldrspre-ldrsui-merge
58 tracksRegLiveness: true
67 liveins: $s0, $s1, $x1
68 ; CHECK-LABEL: name: 3-ldrspre-ldrsui-merge
69 ; CHECK: liveins: $s0, $s1, $x1
71 ; CHECK-NEXT: early-clobber $x1, renamable $s0, renamable $s1 = LDPSpre renamable $x1, 3 :: (load (s32))
72 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
73 ; CHECK-NEXT: RET undef $lr
74 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))
75 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
76 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
77 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
83 name: 4-ldrqdre-ldrdui-merge
84 tracksRegLiveness: true
93 liveins: $d0, $d1, $x1
94 ; CHECK-LABEL: name: 4-ldrqdre-ldrdui-merge
95 ; CHECK: liveins: $d0, $d1, $x1
97 ; CHECK-NEXT: early-clobber $x1, renamable $d0, renamable $d1 = LDPDpre renamable $x1, 16 :: (load (s64))
98 ; CHECK-NEXT: STPDi renamable $d0, renamable $d1, renamable $x1, 0 :: (store (s64))
99 ; CHECK-NEXT: RET undef $lr
100 early-clobber renamable $x1, renamable $d0 = LDRDpre killed renamable $x1, 128 :: (load (s64))
101 renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))
102 STRDui killed renamable $d0, renamable $x1, 0 :: (store (s64))
103 STRDui killed renamable $d1, renamable $x1, 1 :: (store (s64))
109 name: 5-ldrqpre-ldrqui-merge
111 tracksRegLiveness: true
123 liveins: $q0, $q1, $x1
124 ; CHECK-LABEL: name: 5-ldrqpre-ldrqui-merge
125 ; CHECK: liveins: $q0, $q1, $x1
127 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, 3 :: (load (s128))
128 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
129 ; CHECK-NEXT: RET undef $lr
130 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 48 :: (load (s128))
131 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))
132 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
133 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
139 name: 6-ldrqui-ldrqpre-no-merge
141 tracksRegLiveness: true
153 liveins: $q0, $q1, $x1
154 ; CHECK-LABEL: name: 6-ldrqui-ldrqpre-no-merge
155 ; CHECK: liveins: $q0, $q1, $x1
157 ; CHECK-NEXT: renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))
158 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 48, implicit $w1 :: (load (s128))
159 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
160 ; CHECK-NEXT: RET undef $lr
161 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))
162 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 48 :: (load (s128))
163 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
164 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
170 name: 7-ldrqpre-ldrqui-max-offset-merge
172 tracksRegLiveness: true
184 liveins: $q0, $q1, $x1
185 ; CHECK-LABEL: name: 7-ldrqpre-ldrqui-max-offset-merge
186 ; CHECK: liveins: $q0, $q1, $x1
188 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, 15 :: (load (s128))
189 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
190 ; CHECK-NEXT: RET undef $lr
191 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 240 :: (load (s128))
192 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))
193 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
194 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
200 name: 8-ldrqpre-ldrqui-min-offset-merge
202 tracksRegLiveness: true
214 liveins: $q0, $q1, $x1
215 ; CHECK-LABEL: name: 8-ldrqpre-ldrqui-min-offset-merge
216 ; CHECK: liveins: $q0, $q1, $x1
218 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, -16 :: (load (s128))
219 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
220 ; CHECK-NEXT: RET undef $lr
221 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, -256 :: (load (s128))
222 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))
223 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
224 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
230 name: 9-ldrspre-ldrsui-mod-base-reg-no-merge
232 tracksRegLiveness: true
245 liveins: $s0, $s1, $x0, $x1
246 ; CHECK-LABEL: name: 9-ldrspre-ldrsui-mod-base-reg-no-merge
247 ; CHECK: liveins: $s0, $s1, $x0, $x1
249 ; CHECK-NEXT: dead early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 12, implicit $w1 :: (load (s32))
250 ; CHECK-NEXT: renamable $x1 = LDRXui renamable $x0, 1 :: (load (s64))
251 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
252 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
253 ; CHECK-NEXT: RET undef $lr
254 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))
255 renamable $x1 = LDRXui renamable $x0, 1 :: (load (s64))
256 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
257 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
258 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
264 name: 10-ldrspre-ldrsui-used-base-reg-no-merge
266 tracksRegLiveness: true
279 liveins: $s0, $s1, $x0, $x1
280 ; CHECK-LABEL: name: 10-ldrspre-ldrsui-used-base-reg-no-merge
281 ; CHECK: liveins: $s0, $s1, $x0, $x1
283 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 12, implicit $w1 :: (load (s32))
284 ; CHECK-NEXT: renamable $x0 = LDRXui renamable $x1, 1 :: (load (s64))
285 ; CHECK-NEXT: STRXui renamable $x0, renamable $x0, 1 :: (store (s64))
286 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
287 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
288 ; CHECK-NEXT: RET undef $lr
289 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))
290 renamable $x0 = LDRXui renamable $x1, 1 :: (load (s64))
291 STRXui killed renamable $x0, renamable $x0, 1 :: (store (s64))
292 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
293 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
294 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
300 name: 11-ldrqpre-ldrqpre-no-merge
302 tracksRegLiveness: true
314 liveins: $q0, $q1, $x1
315 ; CHECK-LABEL: name: 11-ldrqpre-ldrqpre-no-merge
316 ; CHECK: liveins: $q0, $q1, $x1
318 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q0 = LDRQpre renamable $x1, 48, implicit $w1 :: (load (s128))
319 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q1 = LDRQpre renamable $x1, 1, implicit $w1 :: (load (s128))
320 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q0 = LDRQpre renamable $x1, 16, implicit $w1 :: (load (s128))
321 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q1 = LDRQpre renamable $x1, 12, implicit $w1 :: (load (s128))
322 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 16, implicit $w1 :: (load (s128))
323 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q1 = LDRQpre renamable $x1, 16, implicit $w1 :: (load (s128))
324 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
325 ; CHECK-NEXT: RET undef $lr
326 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 48 :: (load (s128))
327 early-clobber renamable $x1, renamable $q1 = LDRQpre killed renamable $x1, 1 :: (load (s128))
328 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 16 :: (load (s128))
329 early-clobber renamable $x1, renamable $q1 = LDRQpre killed renamable $x1, 12 :: (load (s128))
330 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 16 :: (load (s128))
331 early-clobber renamable $x1, renamable $q1 = LDRQpre killed renamable $x1, 16 :: (load (s128))
332 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
333 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
339 name: 12-ldrspre-ldrsui-no-merge
340 tracksRegLiveness: true
349 liveins: $s0, $s1, $x1
351 ; The offset of the second load is not equal to the
352 ; size of the destination register, and hence can’t be merged.
354 ; CHECK-LABEL: name: 12-ldrspre-ldrsui-no-merge
355 ; CHECK: liveins: $s0, $s1, $x1
357 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 12, implicit $w1 :: (load (s32))
358 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 2 :: (load (s32))
359 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
360 ; CHECK-NEXT: RET undef $lr
361 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))
362 renamable $s1 = LDRSui renamable $x1, 2 :: (load (s32))
363 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
364 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
370 name: 13-ldrqpre-ldrdui-no-merge
372 tracksRegLiveness: true
384 liveins: $q0, $d1, $x1
385 ; CHECK-LABEL: name: 13-ldrqpre-ldrdui-no-merge
386 ; CHECK: liveins: $d1, $q0, $x1
388 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
389 ; CHECK-NEXT: renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))
390 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))
391 ; CHECK-NEXT: STRDui renamable $d1, renamable $x1, 1 :: (store (s64))
392 ; CHECK-NEXT: RET undef $lr
393 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
394 renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))
395 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
396 STRDui killed renamable $d1, renamable $x1, 1 :: (store (s64))
402 name: 14-ldrqpre-strqui-no-merge
404 tracksRegLiveness: true
416 liveins: $q0, $q1, $x1
417 ; CHECK-LABEL: name: 14-ldrqpre-strqui-no-merge
418 ; CHECK: liveins: $q0, $q1, $x1
420 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
421 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))
422 ; CHECK-NEXT: RET undef $lr
423 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
424 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
430 name: 15-ldrqpre-ldrqui-same-dst-reg-no-merge
432 tracksRegLiveness: true
445 ; CHECK-LABEL: name: 15-ldrqpre-ldrqui-same-dst-reg-no-merge
446 ; CHECK: liveins: $q0, $q1, $x1
448 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
449 ; CHECK-NEXT: renamable $q0 = LDRQui renamable $x1, 1 :: (load (s128))
450 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))
451 ; CHECK-NEXT: RET undef $lr
452 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
453 renamable $q0 = LDRQui renamable $x1, 1 :: (load (s128))
454 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
460 name: 16-ldrqpre-ldrqui-diff-base-reg-no-merge
462 tracksRegLiveness: true
475 liveins: $q0, $q1, $x1, $x2
476 ; CHECK-LABEL: name: 16-ldrqpre-ldrqui-diff-base-reg-no-merge
477 ; CHECK: liveins: $q0, $q1, $x1, $x2
479 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
480 ; CHECK-NEXT: renamable $q1 = LDRQui renamable $x2, 1 :: (load (s128))
481 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
482 ; CHECK-NEXT: RET undef $lr
483 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
484 renamable $q1 = LDRQui renamable $x2, 1 :: (load (s128))
485 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
486 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
492 name: 17-ldrqpre-ldurqi-merge
494 tracksRegLiveness: true
506 liveins: $q0, $q1, $x1
507 ; CHECK-LABEL: name: 17-ldrqpre-ldurqi-merge
508 ; CHECK: liveins: $q0, $q1, $x1
510 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, 2 :: (load (s128))
511 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
512 ; CHECK-NEXT: RET undef $lr
513 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
514 renamable $q1 = LDURQi renamable $x1, 16 :: (load (s128))
515 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
516 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
522 name: 18-ldrqpre-ldurqi-no-merge
524 tracksRegLiveness: true
536 liveins: $q0, $q1, $x1
537 ; CHECK-LABEL: name: 18-ldrqpre-ldurqi-no-merge
538 ; CHECK: liveins: $q0, $q1, $x1
540 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
541 ; CHECK-NEXT: renamable $q1 = LDURQi renamable $x1, 1 :: (load (s128))
542 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
543 ; CHECK-NEXT: RET undef $lr
544 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
545 renamable $q1 = LDURQi renamable $x1, 1 :: (load (s128))
546 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
547 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
553 name: 19-ldrspre-ldrsui-max-merge
554 tracksRegLiveness: true
563 liveins: $s0, $s1, $x1
564 ; CHECK-LABEL: name: 19-ldrspre-ldrsui-max-merge
565 ; CHECK: liveins: $s0, $s1, $x1
567 ; CHECK-NEXT: early-clobber $x1, renamable $s0, renamable $s1 = LDPSpre renamable $x1, 63 :: (load (s32))
568 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
569 ; CHECK-NEXT: RET undef $lr
570 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 252 :: (load (s32))
571 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
572 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
573 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
579 name: 20-ldrspre-ldrsui-unaligned-no-merge
580 tracksRegLiveness: true
589 liveins: $s0, $s1, $x1
590 ; CHECK-LABEL: name: 20-ldrspre-ldrsui-unaligned-no-merge
591 ; CHECK: liveins: $s0, $s1, $x1
593 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 251, implicit $w1 :: (load (s32))
594 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
595 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
596 ; CHECK-NEXT: RET undef $lr
597 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 251 :: (load (s32))
598 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
599 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
600 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
606 name: 21-ldrswpre-ldrswui-merge
607 tracksRegLiveness: true
616 liveins: $x0, $x1, $x2
617 ; CHECK-LABEL: name: 21-ldrswpre-ldrswui-merge
618 ; CHECK: liveins: $x0, $x1, $x2
620 ; CHECK-NEXT: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))
621 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
622 ; CHECK-NEXT: RET undef $lr
623 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
624 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
625 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
626 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
632 name: 22-ldrswpre-ldurswi-merge
633 tracksRegLiveness: true
642 liveins: $x0, $x1, $x2
643 ; CHECK-LABEL: name: 22-ldrswpre-ldurswi-merge
644 ; CHECK: liveins: $x0, $x1, $x2
646 ; CHECK-NEXT: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))
647 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
648 ; CHECK-NEXT: RET undef $lr
649 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
650 renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))
651 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
652 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
658 name: 23-ldrswui-ldrswpre-no-merge
659 tracksRegLiveness: true
668 liveins: $x0, $x1, $x2
669 ; CHECK-LABEL: name: 23-ldrswui-ldrswpre-no-merge
670 ; CHECK: liveins: $x0, $x1, $x2
672 ; CHECK-NEXT: renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
673 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
674 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
675 ; CHECK-NEXT: RET undef $lr
676 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
677 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
678 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
679 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
685 name: 24-ldurswi-ldrswpre-no-merge
686 tracksRegLiveness: true
695 liveins: $x0, $x1, $x2
696 ; CHECK-LABEL: name: 24-ldurswi-ldrswpre-no-merge
697 ; CHECK: liveins: $x0, $x1, $x2
699 ; CHECK-NEXT: renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))
700 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
701 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
702 ; CHECK-NEXT: RET undef $lr
703 renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))
704 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
705 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
706 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
712 name: 25-ldrswpre-ldrswpre-no-merge
713 tracksRegLiveness: true
722 liveins: $x0, $x1, $x2
723 ; CHECK-LABEL: name: 25-ldrswpre-ldrswpre-no-merge
724 ; CHECK: liveins: $x0, $x1, $x2
726 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x0 = LDRSWpre renamable $x1, 48, implicit $w1 :: (load (s32))
727 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x2 = LDRSWpre renamable $x1, 1, implicit $w1 :: (load (s32))
728 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x0 = LDRSWpre renamable $x1, 16, implicit $w1 :: (load (s32))
729 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x2 = LDRSWpre renamable $x1, 12, implicit $w1 :: (load (s32))
730 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 16, implicit $w1 :: (load (s32))
731 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x2 = LDRSWpre renamable $x1, 16, implicit $w1 :: (load (s32))
732 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
733 ; CHECK-NEXT: RET undef $lr
734 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 48 :: (load (s32))
735 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 1 :: (load (s32))
736 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 16 :: (load (s32))
737 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 12 :: (load (s32))
738 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 16 :: (load (s32))
739 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 16 :: (load (s32))
740 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
741 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
747 name: 26-ldrswpre-ldrwui-no-merge
748 tracksRegLiveness: true
757 liveins: $x0, $x1, $x2
758 ; CHECK-LABEL: name: 26-ldrswpre-ldrwui-no-merge
759 ; CHECK: liveins: $x0, $x1, $x2
761 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
762 ; CHECK-NEXT: renamable $w2 = LDRWui renamable $x1, 1, implicit-def $x2 :: (load (s32))
763 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
764 ; CHECK-NEXT: RET undef $lr
765 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
766 renamable $w2 = LDRWui renamable $x1, 1 :: (load (s32))
767 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
768 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
774 name: 27-ldrwpre-ldrswui-no-merge
775 tracksRegLiveness: true
784 liveins: $x0, $x1, $x2
785 ; CHECK-LABEL: name: 27-ldrwpre-ldrswui-no-merge
786 ; CHECK: liveins: $x0, $x1, $x2
788 ; CHECK-NEXT: early-clobber renamable $x1, renamable $w0 = LDRWpre renamable $x1, 40, implicit $w1 :: (load (s32))
789 ; CHECK-NEXT: renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
790 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
791 ; CHECK-NEXT: RET undef $lr
792 early-clobber renamable $x1, renamable $w0 = LDRWpre killed renamable $x1, 40 :: (load (s32))
793 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
794 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
795 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
801 name: 28-ldrswpre-ldrwpre-no-merge
802 tracksRegLiveness: true
811 ; CHECK-LABEL: name: 28-ldrswpre-ldrwpre-no-merge
812 ; CHECK: liveins: $x11, $x13
814 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 8, implicit $w11 :: (load (s32), align 8)
815 ; CHECK-NEXT: $x14 = EORXrs renamable $x11, renamable $x13, 0
816 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 4, implicit $w11 :: (load (s32))
817 ; CHECK-NEXT: $x13 = EORXrs renamable $x11, renamable $x13, 0
818 ; CHECK-NEXT: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))
819 ; CHECK-NEXT: RET undef $lr
820 early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 8 :: (load (s32), align 8)
821 $x14 = EORXrs renamable $x11, renamable $x13, 0
822 early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 4 :: (load (s32))
823 $x13 = EORXrs renamable $x11, killed renamable $x13, 0
824 STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))
825 STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))
831 name: 29-ldrwpre-ldrswpre-no-merge
832 tracksRegLiveness: true
841 ; CHECK-LABEL: name: 29-ldrwpre-ldrswpre-no-merge
842 ; CHECK: liveins: $x11, $x13
844 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 8, implicit $w11 :: (load (s32))
845 ; CHECK-NEXT: $x14 = EORXrs renamable $x11, renamable $x13, 0
846 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 4, implicit $w11 :: (load (s32), align 8)
847 ; CHECK-NEXT: $x13 = EORXrs renamable $x11, renamable $x13, 0
848 ; CHECK-NEXT: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))
849 ; CHECK-NEXT: RET undef $lr
850 early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 8 :: (load (s32))
851 $x14 = EORXrs renamable $x11, renamable $x13, 0
852 early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 4 :: (load (s32), align 8)
853 $x13 = EORXrs renamable $x11, killed renamable $x13, 0
854 STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))
855 STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))