@@ -24,29 +24,26 @@ define i64 @test_no_prep(ptr %arg, i32 signext %arg1) {
24
24
; CHECK-NEXT: cmplwi r4, 0
25
25
; CHECK-NEXT: beq cr0, .LBB0_4
26
26
; CHECK-NEXT: # %bb.1: # %bb3.preheader
27
- ; CHECK-NEXT: cmpldi r4, 1
28
- ; CHECK-NEXT: li r5, 1
29
- ; CHECK-NEXT: addi r3, r3, 4004
27
+ ; CHECK-NEXT: mtctr r4
28
+ ; CHECK-NEXT: addi r5, r3, 4004
29
+ ; CHECK-NEXT: li r3, 0
30
30
; CHECK-NEXT: li r6, -3
31
31
; CHECK-NEXT: li r7, -2
32
32
; CHECK-NEXT: li r8, -1
33
- ; CHECK-NEXT: iselgt r5, r4, r5
34
- ; CHECK-NEXT: mtctr r5
35
- ; CHECK-NEXT: li r5, 0
36
33
; CHECK-NEXT: .p2align 4
37
34
; CHECK-NEXT: .LBB0_2: # %bb3
38
35
; CHECK-NEXT: #
39
- ; CHECK-NEXT: ldx r9, r3 , r6
40
- ; CHECK-NEXT: ldx r10, r3 , r7
41
- ; CHECK-NEXT: ldx r11, r3 , r8
42
- ; CHECK-NEXT: ld r12, 0(r3 )
43
- ; CHECK-NEXT: addi r3, r3 , 1
36
+ ; CHECK-NEXT: ldx r9, r5 , r6
37
+ ; CHECK-NEXT: ldx r10, r5 , r7
38
+ ; CHECK-NEXT: ldx r11, r5 , r8
39
+ ; CHECK-NEXT: ld r12, 0(r5 )
40
+ ; CHECK-NEXT: addi r5, r5 , 1
44
41
; CHECK-NEXT: mulld r9, r10, r9
45
42
; CHECK-NEXT: mulld r9, r9, r11
46
- ; CHECK-NEXT: maddld r5 , r9, r12, r5
43
+ ; CHECK-NEXT: maddld r3 , r9, r12, r3
47
44
; CHECK-NEXT: bdnz .LBB0_2
48
45
; CHECK-NEXT: # %bb.3: # %bb25
49
- ; CHECK-NEXT: add r3, r5 , r4
46
+ ; CHECK-NEXT: add r3, r3 , r4
50
47
; CHECK-NEXT: blr
51
48
; CHECK-NEXT: .LBB0_4:
52
49
; CHECK-NEXT: addi r3, r4, 0
@@ -105,21 +102,19 @@ define i64 @test_ds_prep(ptr %arg, i32 signext %arg1) {
105
102
; CHECK-NEXT: cmplwi r4, 0
106
103
; CHECK-NEXT: beq cr0, .LBB1_4
107
104
; CHECK-NEXT: # %bb.1: # %bb3.preheader
108
- ; CHECK-NEXT: cmpldi r4, 1
109
- ; CHECK-NEXT: li r5, 1
110
- ; CHECK-NEXT: addi r6, r3, 4002
111
- ; CHECK-NEXT: li r7, -1
112
- ; CHECK-NEXT: iselgt r3, r4, r5
113
- ; CHECK-NEXT: mtctr r3
105
+ ; CHECK-NEXT: mtctr r4
106
+ ; CHECK-NEXT: addi r7, r3, 4002
114
107
; CHECK-NEXT: li r3, 0
108
+ ; CHECK-NEXT: li r5, -1
109
+ ; CHECK-NEXT: li r6, 1
115
110
; CHECK-NEXT: .p2align 4
116
111
; CHECK-NEXT: .LBB1_2: # %bb3
117
112
; CHECK-NEXT: #
118
- ; CHECK-NEXT: ldx r8, r6, r7
119
- ; CHECK-NEXT: ld r9, 0(r6 )
120
- ; CHECK-NEXT: ldx r10, r6, r5
121
- ; CHECK-NEXT: ld r11, 4(r6 )
122
- ; CHECK-NEXT: addi r6, r6 , 1
113
+ ; CHECK-NEXT: ldx r8, r7, r5
114
+ ; CHECK-NEXT: ld r9, 0(r7 )
115
+ ; CHECK-NEXT: ldx r10, r7, r6
116
+ ; CHECK-NEXT: ld r11, 4(r7 )
117
+ ; CHECK-NEXT: addi r7, r7 , 1
123
118
; CHECK-NEXT: mulld r8, r9, r8
124
119
; CHECK-NEXT: mulld r8, r8, r10
125
120
; CHECK-NEXT: maddld r3, r8, r11, r3
@@ -194,28 +189,26 @@ define i64 @test_max_number_reminder(ptr %arg, i32 signext %arg1) {
194
189
; CHECK-NEXT: cmplwi r4, 0
195
190
; CHECK-NEXT: beq cr0, .LBB2_4
196
191
; CHECK-NEXT: # %bb.1: # %bb3.preheader
197
- ; CHECK-NEXT: cmpldi r4, 1
198
- ; CHECK-NEXT: li r5, 1
199
- ; CHECK-NEXT: addi r10, r3, 4002
200
192
; CHECK-NEXT: std r25, -56(r1) # 8-byte Folded Spill
201
- ; CHECK-NEXT: li r6, -1
202
193
; CHECK-NEXT: std r26, -48(r1) # 8-byte Folded Spill
194
+ ; CHECK-NEXT: addi r10, r3, 4002
195
+ ; CHECK-NEXT: li r3, 0
196
+ ; CHECK-NEXT: li r5, -1
197
+ ; CHECK-NEXT: li r6, 1
203
198
; CHECK-NEXT: li r7, 3
204
199
; CHECK-NEXT: li r8, 5
205
200
; CHECK-NEXT: li r9, 9
206
201
; CHECK-NEXT: std r27, -40(r1) # 8-byte Folded Spill
207
202
; CHECK-NEXT: std r28, -32(r1) # 8-byte Folded Spill
208
203
; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill
209
204
; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill
210
- ; CHECK-NEXT: iselgt r3, r4, r5
211
- ; CHECK-NEXT: mtctr r3
212
- ; CHECK-NEXT: li r3, 0
205
+ ; CHECK-NEXT: mtctr r4
213
206
; CHECK-NEXT: .p2align 4
214
207
; CHECK-NEXT: .LBB2_2: # %bb3
215
208
; CHECK-NEXT: #
216
- ; CHECK-NEXT: ldx r11, r10, r6
209
+ ; CHECK-NEXT: ldx r11, r10, r5
217
210
; CHECK-NEXT: ld r12, 0(r10)
218
- ; CHECK-NEXT: ldx r0, r10, r5
211
+ ; CHECK-NEXT: ldx r0, r10, r6
219
212
; CHECK-NEXT: ldx r30, r10, r7
220
213
; CHECK-NEXT: mulld r11, r12, r11
221
214
; CHECK-NEXT: ld r29, 4(r10)
@@ -313,26 +306,24 @@ define dso_local i64 @test_update_ds_prep_interact(ptr %arg, i32 signext %arg1)
313
306
; CHECK-NEXT: cmplwi r4, 0
314
307
; CHECK-NEXT: beq cr0, .LBB3_4
315
308
; CHECK-NEXT: # %bb.1: # %bb3.preheader
316
- ; CHECK-NEXT: cmpldi r4, 1
317
- ; CHECK-NEXT: li r6, 1
318
- ; CHECK-NEXT: addi r3, r3, 3998
319
- ; CHECK-NEXT: li r7, -1
320
- ; CHECK-NEXT: iselgt r5, r4, r6
321
- ; CHECK-NEXT: mtctr r5
322
- ; CHECK-NEXT: li r5, 0
309
+ ; CHECK-NEXT: mtctr r4
310
+ ; CHECK-NEXT: addi r5, r3, 3998
311
+ ; CHECK-NEXT: li r3, 0
312
+ ; CHECK-NEXT: li r6, -1
313
+ ; CHECK-NEXT: li r7, 1
323
314
; CHECK-NEXT: .p2align 5
324
315
; CHECK-NEXT: .LBB3_2: # %bb3
325
316
; CHECK-NEXT: #
326
- ; CHECK-NEXT: ldu r8, 4(r3 )
327
- ; CHECK-NEXT: ldx r9, r3, r7
328
- ; CHECK-NEXT: ldx r10, r3, r6
329
- ; CHECK-NEXT: ld r11, 4(r3 )
317
+ ; CHECK-NEXT: ldu r8, 4(r5 )
318
+ ; CHECK-NEXT: ldx r9, r5, r6
319
+ ; CHECK-NEXT: ldx r10, r5, r7
320
+ ; CHECK-NEXT: ld r11, 4(r5 )
330
321
; CHECK-NEXT: mulld r8, r8, r9
331
322
; CHECK-NEXT: mulld r8, r8, r10
332
- ; CHECK-NEXT: maddld r5 , r8, r11, r5
323
+ ; CHECK-NEXT: maddld r3 , r8, r11, r3
333
324
; CHECK-NEXT: bdnz .LBB3_2
334
325
; CHECK-NEXT: # %bb.3: # %bb26
335
- ; CHECK-NEXT: add r3, r5 , r4
326
+ ; CHECK-NEXT: add r3, r3 , r4
336
327
; CHECK-NEXT: blr
337
328
; CHECK-NEXT: .LBB3_4:
338
329
; CHECK-NEXT: addi r3, r4, 0
@@ -392,28 +383,25 @@ define i64 @test_update_ds_prep_nointeract(ptr %arg, i32 signext %arg1) {
392
383
; CHECK-NEXT: cmplwi r4, 0
393
384
; CHECK-NEXT: beq cr0, .LBB4_4
394
385
; CHECK-NEXT: # %bb.1: # %bb3.preheader
395
- ; CHECK-NEXT: cmpldi r4, 1
396
- ; CHECK-NEXT: li r6, 1
386
+ ; CHECK-NEXT: mtctr r4
397
387
; CHECK-NEXT: addi r5, r3, 4000
398
- ; CHECK-NEXT: addi r3, r3, 4003
388
+ ; CHECK-NEXT: addi r6, r3, 4003
389
+ ; CHECK-NEXT: li r3, 0
399
390
; CHECK-NEXT: li r7, -1
400
- ; CHECK-NEXT: iselgt r6, r4, r6
401
- ; CHECK-NEXT: mtctr r6
402
- ; CHECK-NEXT: li r6, 0
403
391
; CHECK-NEXT: .p2align 4
404
392
; CHECK-NEXT: .LBB4_2: # %bb3
405
393
; CHECK-NEXT: #
406
394
; CHECK-NEXT: lbzu r8, 1(r5)
407
- ; CHECK-NEXT: ldx r9, r3 , r7
408
- ; CHECK-NEXT: ld r10, 0(r3 )
409
- ; CHECK-NEXT: ld r11, 4(r3 )
410
- ; CHECK-NEXT: addi r3, r3 , 1
395
+ ; CHECK-NEXT: ldx r9, r6 , r7
396
+ ; CHECK-NEXT: ld r10, 0(r6 )
397
+ ; CHECK-NEXT: ld r11, 4(r6 )
398
+ ; CHECK-NEXT: addi r6, r6 , 1
411
399
; CHECK-NEXT: mulld r8, r9, r8
412
400
; CHECK-NEXT: mulld r8, r8, r10
413
- ; CHECK-NEXT: maddld r6 , r8, r11, r6
401
+ ; CHECK-NEXT: maddld r3 , r8, r11, r3
414
402
; CHECK-NEXT: bdnz .LBB4_2
415
403
; CHECK-NEXT: # %bb.3: # %bb25
416
- ; CHECK-NEXT: add r3, r6 , r4
404
+ ; CHECK-NEXT: add r3, r3 , r4
417
405
; CHECK-NEXT: blr
418
406
; CHECK-NEXT: .LBB4_4:
419
407
; CHECK-NEXT: addi r3, r4, 0
@@ -477,23 +465,20 @@ define dso_local i64 @test_ds_multiple_chains(ptr %arg, ptr %arg1, i32 signext %
477
465
; CHECK-NEXT: cmplwi r5, 0
478
466
; CHECK-NEXT: beq cr0, .LBB5_4
479
467
; CHECK-NEXT: # %bb.1: # %bb4.preheader
480
- ; CHECK-NEXT: cmpldi r5, 1
481
- ; CHECK-NEXT: li r6, 1
482
468
; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill
483
- ; CHECK-NEXT: addi r3 , r3, 4001
469
+ ; CHECK-NEXT: addi r6 , r3, 4001
484
470
; CHECK-NEXT: addi r4, r4, 4001
471
+ ; CHECK-NEXT: li r3, 0
485
472
; CHECK-NEXT: li r7, 9
486
- ; CHECK-NEXT: iselgt r6, r5, r6
487
- ; CHECK-NEXT: mtctr r6
488
- ; CHECK-NEXT: li r6, 0
473
+ ; CHECK-NEXT: mtctr r5
489
474
; CHECK-NEXT: .p2align 4
490
475
; CHECK-NEXT: .LBB5_2: # %bb4
491
476
; CHECK-NEXT: #
492
- ; CHECK-NEXT: ld r8, 0(r3 )
493
- ; CHECK-NEXT: ldx r9, r3 , r7
494
- ; CHECK-NEXT: ld r10, 4(r3 )
495
- ; CHECK-NEXT: ld r11, 8(r3 )
496
- ; CHECK-NEXT: addi r3, r3 , 1
477
+ ; CHECK-NEXT: ld r8, 0(r6 )
478
+ ; CHECK-NEXT: ldx r9, r6 , r7
479
+ ; CHECK-NEXT: ld r10, 4(r6 )
480
+ ; CHECK-NEXT: ld r11, 8(r6 )
481
+ ; CHECK-NEXT: addi r6, r6 , 1
497
482
; CHECK-NEXT: mulld r8, r9, r8
498
483
; CHECK-NEXT: ld r12, 0(r4)
499
484
; CHECK-NEXT: ldx r0, r4, r7
@@ -505,11 +490,11 @@ define dso_local i64 @test_ds_multiple_chains(ptr %arg, ptr %arg1, i32 signext %
505
490
; CHECK-NEXT: mulld r8, r8, r12
506
491
; CHECK-NEXT: mulld r8, r8, r0
507
492
; CHECK-NEXT: mulld r8, r8, r30
508
- ; CHECK-NEXT: maddld r6 , r8, r9, r6
493
+ ; CHECK-NEXT: maddld r3 , r8, r9, r3
509
494
; CHECK-NEXT: bdnz .LBB5_2
510
495
; CHECK-NEXT: # %bb.3:
511
496
; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload
512
- ; CHECK-NEXT: add r3, r6 , r5
497
+ ; CHECK-NEXT: add r3, r3 , r5
513
498
; CHECK-NEXT: blr
514
499
; CHECK-NEXT: .LBB5_4:
515
500
; CHECK-NEXT: addi r3, r5, 0
@@ -598,72 +583,70 @@ define i64 @test_ds_cross_basic_blocks(ptr %arg, i32 signext %arg1) {
598
583
; CHECK-NEXT: beq cr0, .LBB6_9
599
584
; CHECK-NEXT: # %bb.1: # %bb3
600
585
; CHECK-NEXT: addis r5, r2, .LC0@toc@ha
601
- ; CHECK-NEXT: cmpldi r4, 1
602
- ; CHECK-NEXT: li r7, 1
603
- ; CHECK-NEXT: addi r6, r3, 4009
604
586
; CHECK-NEXT: std r28, -32(r1) # 8-byte Folded Spill
605
- ; CHECK-NEXT: ld r5, .LC0@toc@l(r5)
606
- ; CHECK-NEXT: iselgt r3, r4, r7
607
587
; CHECK-NEXT: std r29, -24(r1) # 8-byte Folded Spill
588
+ ; CHECK-NEXT: ld r5, .LC0@toc@l(r5)
608
589
; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill
609
- ; CHECK-NEXT: li r4, -7
590
+ ; CHECK-NEXT: addi r6, r3, 4009
591
+ ; CHECK-NEXT: li r3, 0
592
+ ; CHECK-NEXT: li r7, -7
610
593
; CHECK-NEXT: li r8, -6
611
594
; CHECK-NEXT: li r9, 1
612
595
; CHECK-NEXT: li r10, 1
613
596
; CHECK-NEXT: li r11, 1
614
597
; CHECK-NEXT: li r12, 1
615
- ; CHECK-NEXT: li r30 , 1
598
+ ; CHECK-NEXT: li r0 , 1
616
599
; CHECK-NEXT: ld r5, 0(r5)
617
- ; CHECK-NEXT: mtctr r3
618
- ; CHECK-NEXT: li r3, 0
600
+ ; CHECK-NEXT: mtctr r4
601
+ ; CHECK-NEXT: li r4, 1
619
602
; CHECK-NEXT: addi r5, r5, -1
620
603
; CHECK-NEXT: b .LBB6_4
621
604
; CHECK-NEXT: .p2align 4
622
605
; CHECK-NEXT: .LBB6_2: # %bb18
623
606
; CHECK-NEXT: #
624
- ; CHECK-NEXT: addi r29 , r6, -9
625
- ; CHECK-NEXT: ld r0 , 0(r29 )
626
- ; CHECK-NEXT: add r30, r0, r30
627
- ; CHECK-NEXT: ld r0 , -8(r6)
628
- ; CHECK-NEXT: add r12, r0 , r12
607
+ ; CHECK-NEXT: addi r30 , r6, -9
608
+ ; CHECK-NEXT: ld r30 , 0(r30 )
609
+ ; CHECK-NEXT: add r0, r30, r0
610
+ ; CHECK-NEXT: ld r30 , -8(r6)
611
+ ; CHECK-NEXT: add r12, r30 , r12
629
612
; CHECK-NEXT: .LBB6_3: # %bb49
630
613
; CHECK-NEXT: #
631
- ; CHECK-NEXT: mulld r0 , r12, r30
614
+ ; CHECK-NEXT: mulld r30 , r12, r0
632
615
; CHECK-NEXT: addi r6, r6, 1
633
- ; CHECK-NEXT: mulld r0, r0 , r11
634
- ; CHECK-NEXT: mulld r0, r0 , r10
635
- ; CHECK-NEXT: mulld r0, r0 , r9
636
- ; CHECK-NEXT: maddld r3, r0, r7 , r3
616
+ ; CHECK-NEXT: mulld r30, r30 , r11
617
+ ; CHECK-NEXT: mulld r30, r30 , r10
618
+ ; CHECK-NEXT: mulld r30, r30 , r9
619
+ ; CHECK-NEXT: maddld r3, r30, r4 , r3
637
620
; CHECK-NEXT: bdz .LBB6_8
638
621
; CHECK-NEXT: .LBB6_4: # %bb5
639
622
; CHECK-NEXT: #
640
- ; CHECK-NEXT: lbzu r0 , 1(r5)
641
- ; CHECK-NEXT: mulli r29, r0 , 171
623
+ ; CHECK-NEXT: lbzu r30 , 1(r5)
624
+ ; CHECK-NEXT: mulli r29, r30 , 171
642
625
; CHECK-NEXT: rlwinm r28, r29, 24, 8, 30
643
626
; CHECK-NEXT: srwi r29, r29, 9
644
627
; CHECK-NEXT: add r29, r29, r28
645
- ; CHECK-NEXT: sub r0, r0 , r29
646
- ; CHECK-NEXT: clrlwi r0, r0 , 24
647
- ; CHECK-NEXT: cmplwi r0 , 1
628
+ ; CHECK-NEXT: sub r30, r30 , r29
629
+ ; CHECK-NEXT: clrlwi r30, r30 , 24
630
+ ; CHECK-NEXT: cmplwi r30 , 1
648
631
; CHECK-NEXT: beq cr0, .LBB6_2
649
632
; CHECK-NEXT: # %bb.5: # %bb28
650
633
; CHECK-NEXT: #
651
- ; CHECK-NEXT: cmplwi r0 , 2
634
+ ; CHECK-NEXT: cmplwi r30 , 2
652
635
; CHECK-NEXT: bne cr0, .LBB6_7
653
636
; CHECK-NEXT: # %bb.6: # %bb31
654
637
; CHECK-NEXT: #
655
- ; CHECK-NEXT: ldx r0 , r6, r4
656
- ; CHECK-NEXT: add r11, r0 , r11
657
- ; CHECK-NEXT: ld r0 , -4(r6)
658
- ; CHECK-NEXT: add r10, r0 , r10
638
+ ; CHECK-NEXT: ldx r30 , r6, r7
639
+ ; CHECK-NEXT: add r11, r30 , r11
640
+ ; CHECK-NEXT: ld r30 , -4(r6)
641
+ ; CHECK-NEXT: add r10, r30 , r10
659
642
; CHECK-NEXT: b .LBB6_3
660
643
; CHECK-NEXT: .p2align 4
661
644
; CHECK-NEXT: .LBB6_7: # %bb40
662
645
; CHECK-NEXT: #
663
- ; CHECK-NEXT: ldx r0 , r6, r8
664
- ; CHECK-NEXT: add r9, r0 , r9
665
- ; CHECK-NEXT: ld r0 , 0(r6)
666
- ; CHECK-NEXT: add r7, r0, r7
646
+ ; CHECK-NEXT: ldx r30 , r6, r8
647
+ ; CHECK-NEXT: add r9, r30 , r9
648
+ ; CHECK-NEXT: ld r30 , 0(r6)
649
+ ; CHECK-NEXT: add r4, r30, r4
667
650
; CHECK-NEXT: b .LBB6_3
668
651
; CHECK-NEXT: .LBB6_8:
669
652
; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload
0 commit comments