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, killed 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
352 ; CHECK-LABEL: name: 12-ldrspre-ldrsui-no-merge
353 ; CHECK: liveins: $s0, $s1, $x1
355 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 12, implicit $w1 :: (load (s32))
356 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 2 :: (load (s32))
357 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
358 ; CHECK-NEXT: RET undef $lr
359 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))
360 renamable $s1 = LDRSui renamable $x1, 2 :: (load (s32))
361 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
362 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
368 name: 13-ldrqpre-ldrdui-no-merge
370 tracksRegLiveness: true
382 liveins: $q0, $d1, $x1
383 ; CHECK-LABEL: name: 13-ldrqpre-ldrdui-no-merge
384 ; CHECK: liveins: $d1, $q0, $x1
386 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
387 ; CHECK-NEXT: renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))
388 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))
389 ; CHECK-NEXT: STRDui renamable $d1, renamable $x1, 1 :: (store (s64))
390 ; CHECK-NEXT: RET undef $lr
391 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
392 renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))
393 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
394 STRDui killed renamable $d1, renamable $x1, 1 :: (store (s64))
400 name: 14-ldrqpre-strqui-no-merge
402 tracksRegLiveness: true
414 liveins: $q0, $q1, $x1
415 ; CHECK-LABEL: name: 14-ldrqpre-strqui-no-merge
416 ; CHECK: liveins: $q0, $q1, $x1
418 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
419 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))
420 ; CHECK-NEXT: RET undef $lr
421 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
422 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
428 name: 15-ldrqpre-ldrqui-same-dst-reg-no-merge
430 tracksRegLiveness: true
443 ; CHECK-LABEL: name: 15-ldrqpre-ldrqui-same-dst-reg-no-merge
444 ; CHECK: liveins: $q0, $q1, $x1
446 ; CHECK-NEXT: early-clobber $x1, dead $q2, renamable $q0 = LDPQpre renamable $x1, 2 :: (load (s128))
447 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))
448 ; CHECK-NEXT: RET undef $lr
449 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
450 renamable $q0 = LDRQui renamable $x1, 1 :: (load (s128))
451 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
457 name: 16-ldrqpre-ldrqui-diff-base-reg-no-merge
459 tracksRegLiveness: true
472 liveins: $q0, $q1, $x1, $x2
473 ; CHECK-LABEL: name: 16-ldrqpre-ldrqui-diff-base-reg-no-merge
474 ; CHECK: liveins: $q0, $q1, $x1, $x2
476 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
477 ; CHECK-NEXT: renamable $q1 = LDRQui renamable $x2, 1 :: (load (s128))
478 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
479 ; CHECK-NEXT: RET undef $lr
480 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
481 renamable $q1 = LDRQui renamable $x2, 1 :: (load (s128))
482 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
483 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
489 name: 17-ldrqpre-ldurqi-merge
491 tracksRegLiveness: true
503 liveins: $q0, $q1, $x1
504 ; CHECK-LABEL: name: 17-ldrqpre-ldurqi-merge
505 ; CHECK: liveins: $q0, $q1, $x1
507 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, 2 :: (load (s128))
508 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
509 ; CHECK-NEXT: RET undef $lr
510 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
511 renamable $q1 = LDURQi renamable $x1, 16 :: (load (s128))
512 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
513 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
519 name: 18-ldrqpre-ldurqi-no-merge
521 tracksRegLiveness: true
533 liveins: $q0, $q1, $x1
534 ; CHECK-LABEL: name: 18-ldrqpre-ldurqi-no-merge
535 ; CHECK: liveins: $q0, $q1, $x1
537 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1 :: (load (s128))
538 ; CHECK-NEXT: renamable $q1 = LDURQi renamable $x1, 1 :: (load (s128))
539 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))
540 ; CHECK-NEXT: RET undef $lr
541 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))
542 renamable $q1 = LDURQi renamable $x1, 1 :: (load (s128))
543 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))
544 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))
550 name: 19-ldrspre-ldrsui-max-merge
551 tracksRegLiveness: true
560 liveins: $s0, $s1, $x1
561 ; CHECK-LABEL: name: 19-ldrspre-ldrsui-max-merge
562 ; CHECK: liveins: $s0, $s1, $x1
564 ; CHECK-NEXT: early-clobber $x1, renamable $s0, renamable $s1 = LDPSpre renamable $x1, 63 :: (load (s32))
565 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
566 ; CHECK-NEXT: RET undef $lr
567 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 252 :: (load (s32))
568 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
569 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
570 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
576 name: 20-ldrspre-ldrsui-unaligned-no-merge
577 tracksRegLiveness: true
586 liveins: $s0, $s1, $x1
587 ; CHECK-LABEL: name: 20-ldrspre-ldrsui-unaligned-no-merge
588 ; CHECK: liveins: $s0, $s1, $x1
590 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 251, implicit $w1 :: (load (s32))
591 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
592 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))
593 ; CHECK-NEXT: RET undef $lr
594 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 251 :: (load (s32))
595 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))
596 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))
597 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))
603 name: 21-ldrswpre-ldrswui-merge
604 tracksRegLiveness: true
613 liveins: $x0, $x1, $x2
614 ; CHECK-LABEL: name: 21-ldrswpre-ldrswui-merge
615 ; CHECK: liveins: $x0, $x1, $x2
617 ; CHECK-NEXT: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))
618 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
619 ; CHECK-NEXT: RET undef $lr
620 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
621 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
622 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
623 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
629 name: 22-ldrswpre-ldurswi-merge
630 tracksRegLiveness: true
639 liveins: $x0, $x1, $x2
640 ; CHECK-LABEL: name: 22-ldrswpre-ldurswi-merge
641 ; CHECK: liveins: $x0, $x1, $x2
643 ; CHECK-NEXT: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))
644 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
645 ; CHECK-NEXT: RET undef $lr
646 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
647 renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))
648 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
649 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
655 name: 23-ldrswui-ldrswpre-no-merge
656 tracksRegLiveness: true
665 liveins: $x0, $x1, $x2
666 ; CHECK-LABEL: name: 23-ldrswui-ldrswpre-no-merge
667 ; CHECK: liveins: $x0, $x1, $x2
669 ; CHECK-NEXT: renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
670 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
671 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
672 ; CHECK-NEXT: RET undef $lr
673 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
674 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
675 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
676 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
682 name: 24-ldurswi-ldrswpre-no-merge
683 tracksRegLiveness: true
692 liveins: $x0, $x1, $x2
693 ; CHECK-LABEL: name: 24-ldurswi-ldrswpre-no-merge
694 ; CHECK: liveins: $x0, $x1, $x2
696 ; CHECK-NEXT: renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))
697 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
698 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
699 ; CHECK-NEXT: RET undef $lr
700 renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))
701 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
702 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
703 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
709 name: 25-ldrswpre-ldrswpre-no-merge
710 tracksRegLiveness: true
719 liveins: $x0, $x1, $x2
720 ; CHECK-LABEL: name: 25-ldrswpre-ldrswpre-no-merge
721 ; CHECK: liveins: $x0, $x1, $x2
723 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x0 = LDRSWpre renamable $x1, 48, implicit $w1 :: (load (s32))
724 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x2 = LDRSWpre renamable $x1, 1, implicit $w1 :: (load (s32))
725 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x0 = LDRSWpre renamable $x1, 16, implicit $w1 :: (load (s32))
726 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x2 = LDRSWpre renamable $x1, 12, implicit $w1 :: (load (s32))
727 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 16, implicit $w1 :: (load (s32))
728 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x2 = LDRSWpre renamable $x1, 16, implicit $w1 :: (load (s32))
729 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
730 ; CHECK-NEXT: RET undef $lr
731 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 48 :: (load (s32))
732 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 1 :: (load (s32))
733 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 16 :: (load (s32))
734 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 12 :: (load (s32))
735 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 16 :: (load (s32))
736 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 16 :: (load (s32))
737 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
738 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
744 name: 26-ldrswpre-ldrwui-no-merge
745 tracksRegLiveness: true
754 liveins: $x0, $x1, $x2
755 ; CHECK-LABEL: name: 26-ldrswpre-ldrwui-no-merge
756 ; CHECK: liveins: $x0, $x1, $x2
758 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1 :: (load (s32))
759 ; CHECK-NEXT: renamable $w2 = LDRWui renamable $x1, 1, implicit-def $x2 :: (load (s32))
760 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
761 ; CHECK-NEXT: RET undef $lr
762 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))
763 renamable $w2 = LDRWui renamable $x1, 1 :: (load (s32))
764 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
765 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
771 name: 27-ldrwpre-ldrswui-no-merge
772 tracksRegLiveness: true
781 liveins: $x0, $x1, $x2
782 ; CHECK-LABEL: name: 27-ldrwpre-ldrswui-no-merge
783 ; CHECK: liveins: $x0, $x1, $x2
785 ; CHECK-NEXT: early-clobber renamable $x1, renamable $w0 = LDRWpre renamable $x1, 40, implicit $w1 :: (load (s32))
786 ; CHECK-NEXT: renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
787 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))
788 ; CHECK-NEXT: RET undef $lr
789 early-clobber renamable $x1, renamable $w0 = LDRWpre killed renamable $x1, 40 :: (load (s32))
790 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))
791 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))
792 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))
798 name: 28-ldrswpre-ldrwpre-no-merge
799 tracksRegLiveness: true
808 ; CHECK-LABEL: name: 28-ldrswpre-ldrwpre-no-merge
809 ; CHECK: liveins: $x11, $x13
811 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 8, implicit $w11 :: (load (s32), align 8)
812 ; CHECK-NEXT: $x14 = EORXrs renamable $x11, renamable $x13, 0
813 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 4, implicit $w11 :: (load (s32))
814 ; CHECK-NEXT: $x13 = EORXrs renamable $x11, renamable $x13, 0
815 ; CHECK-NEXT: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))
816 ; CHECK-NEXT: RET undef $lr
817 early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 8 :: (load (s32), align 8)
818 $x14 = EORXrs renamable $x11, renamable $x13, 0
819 early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 4 :: (load (s32))
820 $x13 = EORXrs renamable $x11, killed renamable $x13, 0
821 STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))
822 STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))
828 name: 29-ldrwpre-ldrswpre-no-merge
829 tracksRegLiveness: true
838 ; CHECK-LABEL: name: 29-ldrwpre-ldrswpre-no-merge
839 ; CHECK: liveins: $x11, $x13
841 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 8, implicit $w11 :: (load (s32))
842 ; CHECK-NEXT: $x14 = EORXrs renamable $x11, renamable $x13, 0
843 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 4, implicit $w11 :: (load (s32), align 8)
844 ; CHECK-NEXT: $x13 = EORXrs renamable $x11, renamable $x13, 0
845 ; CHECK-NEXT: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))
846 ; CHECK-NEXT: RET undef $lr
847 early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 8 :: (load (s32))
848 $x14 = EORXrs renamable $x11, renamable $x13, 0
849 early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 4 :: (load (s32), align 8)
850 $x13 = EORXrs renamable $x11, killed renamable $x13, 0
851 STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))
852 STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))