@@ -86,29 +86,30 @@ declare i64 @llvm.vscale.i64()
86
86
define void @sink_splat_add_scalable (ptr nocapture %a , i32 signext %x ) {
87
87
; NO-SINK-LABEL: sink_splat_add_scalable:
88
88
; NO-SINK: # %bb.0: # %entry
89
- ; NO-SINK-NEXT: csrr a2 , vlenb
90
- ; NO-SINK-NEXT: srli a2, a2 , 1
89
+ ; NO-SINK-NEXT: csrr a5 , vlenb
90
+ ; NO-SINK-NEXT: srli a2, a5 , 1
91
91
; NO-SINK-NEXT: li a3, 1024
92
92
; NO-SINK-NEXT: bgeu a3, a2, .LBB1_2
93
93
; NO-SINK-NEXT: # %bb.1:
94
94
; NO-SINK-NEXT: li a3, 0
95
95
; NO-SINK-NEXT: j .LBB1_5
96
96
; NO-SINK-NEXT: .LBB1_2: # %vector.ph
97
- ; NO-SINK-NEXT: li a5, 0
98
97
; NO-SINK-NEXT: addi a3, a2, -1
99
98
; NO-SINK-NEXT: andi a4, a3, 1024
100
99
; NO-SINK-NEXT: xori a3, a4, 1024
101
100
; NO-SINK-NEXT: vsetvli a6, zero, e32, m2, ta, ma
102
101
; NO-SINK-NEXT: vmv.v.x v8, a1
102
+ ; NO-SINK-NEXT: slli a5, a5, 1
103
+ ; NO-SINK-NEXT: mv a6, a0
104
+ ; NO-SINK-NEXT: mv a7, a3
103
105
; NO-SINK-NEXT: .LBB1_3: # %vector.body
104
106
; NO-SINK-NEXT: # =>This Inner Loop Header: Depth=1
105
- ; NO-SINK-NEXT: slli a6, a5, 2
106
- ; NO-SINK-NEXT: add a6, a0, a6
107
107
; NO-SINK-NEXT: vl2re32.v v10, (a6)
108
108
; NO-SINK-NEXT: vadd.vv v10, v10, v8
109
- ; NO-SINK-NEXT: add a5, a5, a2
110
109
; NO-SINK-NEXT: vs2r.v v10, (a6)
111
- ; NO-SINK-NEXT: bne a5, a3, .LBB1_3
110
+ ; NO-SINK-NEXT: sub a7, a7, a2
111
+ ; NO-SINK-NEXT: add a6, a6, a5
112
+ ; NO-SINK-NEXT: bnez a7, .LBB1_3
112
113
; NO-SINK-NEXT: # %bb.4: # %middle.block
113
114
; NO-SINK-NEXT: beqz a4, .LBB1_7
114
115
; NO-SINK-NEXT: .LBB1_5: # %for.body.preheader
@@ -128,28 +129,29 @@ define void @sink_splat_add_scalable(ptr nocapture %a, i32 signext %x) {
128
129
;
129
130
; SINK-LABEL: sink_splat_add_scalable:
130
131
; SINK: # %bb.0: # %entry
131
- ; SINK-NEXT: csrr a2 , vlenb
132
- ; SINK-NEXT: srli a2, a2 , 1
132
+ ; SINK-NEXT: csrr a5 , vlenb
133
+ ; SINK-NEXT: srli a2, a5 , 1
133
134
; SINK-NEXT: li a3, 1024
134
135
; SINK-NEXT: bgeu a3, a2, .LBB1_2
135
136
; SINK-NEXT: # %bb.1:
136
137
; SINK-NEXT: li a3, 0
137
138
; SINK-NEXT: j .LBB1_5
138
139
; SINK-NEXT: .LBB1_2: # %vector.ph
139
- ; SINK-NEXT: li a5, 0
140
140
; SINK-NEXT: addi a3, a2, -1
141
141
; SINK-NEXT: andi a4, a3, 1024
142
142
; SINK-NEXT: xori a3, a4, 1024
143
- ; SINK-NEXT: vsetvli a6, zero, e32, m2, ta, ma
143
+ ; SINK-NEXT: slli a5, a5, 1
144
+ ; SINK-NEXT: mv a6, a0
145
+ ; SINK-NEXT: mv a7, a3
146
+ ; SINK-NEXT: vsetvli t0, zero, e32, m2, ta, ma
144
147
; SINK-NEXT: .LBB1_3: # %vector.body
145
148
; SINK-NEXT: # =>This Inner Loop Header: Depth=1
146
- ; SINK-NEXT: slli a6, a5, 2
147
- ; SINK-NEXT: add a6, a0, a6
148
149
; SINK-NEXT: vl2re32.v v8, (a6)
149
150
; SINK-NEXT: vadd.vx v8, v8, a1
150
- ; SINK-NEXT: add a5, a5, a2
151
151
; SINK-NEXT: vs2r.v v8, (a6)
152
- ; SINK-NEXT: bne a5, a3, .LBB1_3
152
+ ; SINK-NEXT: sub a7, a7, a2
153
+ ; SINK-NEXT: add a6, a6, a5
154
+ ; SINK-NEXT: bnez a7, .LBB1_3
153
155
; SINK-NEXT: # %bb.4: # %middle.block
154
156
; SINK-NEXT: beqz a4, .LBB1_7
155
157
; SINK-NEXT: .LBB1_5: # %for.body.preheader
@@ -169,28 +171,29 @@ define void @sink_splat_add_scalable(ptr nocapture %a, i32 signext %x) {
169
171
;
170
172
; DEFAULT-LABEL: sink_splat_add_scalable:
171
173
; DEFAULT: # %bb.0: # %entry
172
- ; DEFAULT-NEXT: csrr a2 , vlenb
173
- ; DEFAULT-NEXT: srli a2, a2 , 1
174
+ ; DEFAULT-NEXT: csrr a5 , vlenb
175
+ ; DEFAULT-NEXT: srli a2, a5 , 1
174
176
; DEFAULT-NEXT: li a3, 1024
175
177
; DEFAULT-NEXT: bgeu a3, a2, .LBB1_2
176
178
; DEFAULT-NEXT: # %bb.1:
177
179
; DEFAULT-NEXT: li a3, 0
178
180
; DEFAULT-NEXT: j .LBB1_5
179
181
; DEFAULT-NEXT: .LBB1_2: # %vector.ph
180
- ; DEFAULT-NEXT: li a5, 0
181
182
; DEFAULT-NEXT: addi a3, a2, -1
182
183
; DEFAULT-NEXT: andi a4, a3, 1024
183
184
; DEFAULT-NEXT: xori a3, a4, 1024
184
- ; DEFAULT-NEXT: vsetvli a6, zero, e32, m2, ta, ma
185
+ ; DEFAULT-NEXT: slli a5, a5, 1
186
+ ; DEFAULT-NEXT: mv a6, a0
187
+ ; DEFAULT-NEXT: mv a7, a3
188
+ ; DEFAULT-NEXT: vsetvli t0, zero, e32, m2, ta, ma
185
189
; DEFAULT-NEXT: .LBB1_3: # %vector.body
186
190
; DEFAULT-NEXT: # =>This Inner Loop Header: Depth=1
187
- ; DEFAULT-NEXT: slli a6, a5, 2
188
- ; DEFAULT-NEXT: add a6, a0, a6
189
191
; DEFAULT-NEXT: vl2re32.v v8, (a6)
190
192
; DEFAULT-NEXT: vadd.vx v8, v8, a1
191
- ; DEFAULT-NEXT: add a5, a5, a2
192
193
; DEFAULT-NEXT: vs2r.v v8, (a6)
193
- ; DEFAULT-NEXT: bne a5, a3, .LBB1_3
194
+ ; DEFAULT-NEXT: sub a7, a7, a2
195
+ ; DEFAULT-NEXT: add a6, a6, a5
196
+ ; DEFAULT-NEXT: bnez a7, .LBB1_3
194
197
; DEFAULT-NEXT: # %bb.4: # %middle.block
195
198
; DEFAULT-NEXT: beqz a4, .LBB1_7
196
199
; DEFAULT-NEXT: .LBB1_5: # %for.body.preheader
@@ -404,32 +407,32 @@ define void @sink_splat_fadd_scalable(ptr nocapture %a, float %x) {
404
407
; NO-SINK-LABEL: sink_splat_fadd_scalable:
405
408
; NO-SINK: # %bb.0: # %entry
406
409
; NO-SINK-NEXT: csrr a1, vlenb
407
- ; NO-SINK-NEXT: srli a1 , a1, 2
408
- ; NO-SINK-NEXT: li a2 , 1024
409
- ; NO-SINK-NEXT: bgeu a2, a1 , .LBB4_2
410
+ ; NO-SINK-NEXT: srli a2 , a1, 2
411
+ ; NO-SINK-NEXT: li a3 , 1024
412
+ ; NO-SINK-NEXT: bgeu a3, a2 , .LBB4_2
410
413
; NO-SINK-NEXT: # %bb.1:
411
- ; NO-SINK-NEXT: li a2 , 0
414
+ ; NO-SINK-NEXT: li a3 , 0
412
415
; NO-SINK-NEXT: j .LBB4_5
413
416
; NO-SINK-NEXT: .LBB4_2: # %vector.ph
414
- ; NO-SINK-NEXT: li a4, 0
415
- ; NO-SINK-NEXT: addi a2, a1, -1
416
- ; NO-SINK-NEXT: andi a3, a2, 1024
417
- ; NO-SINK-NEXT: xori a2, a3, 1024
417
+ ; NO-SINK-NEXT: addi a3, a2, -1
418
+ ; NO-SINK-NEXT: andi a4, a3, 1024
419
+ ; NO-SINK-NEXT: xori a3, a4, 1024
418
420
; NO-SINK-NEXT: vsetvli a5, zero, e32, m1, ta, ma
419
421
; NO-SINK-NEXT: vfmv.v.f v8, fa0
422
+ ; NO-SINK-NEXT: mv a5, a0
423
+ ; NO-SINK-NEXT: mv a6, a3
420
424
; NO-SINK-NEXT: .LBB4_3: # %vector.body
421
425
; NO-SINK-NEXT: # =>This Inner Loop Header: Depth=1
422
- ; NO-SINK-NEXT: slli a5, a4, 2
423
- ; NO-SINK-NEXT: add a5, a0, a5
424
426
; NO-SINK-NEXT: vl1re32.v v9, (a5)
425
427
; NO-SINK-NEXT: vfadd.vv v9, v9, v8
426
- ; NO-SINK-NEXT: add a4, a4, a1
427
428
; NO-SINK-NEXT: vs1r.v v9, (a5)
428
- ; NO-SINK-NEXT: bne a4, a2, .LBB4_3
429
+ ; NO-SINK-NEXT: sub a6, a6, a2
430
+ ; NO-SINK-NEXT: add a5, a5, a1
431
+ ; NO-SINK-NEXT: bnez a6, .LBB4_3
429
432
; NO-SINK-NEXT: # %bb.4: # %middle.block
430
- ; NO-SINK-NEXT: beqz a3 , .LBB4_7
433
+ ; NO-SINK-NEXT: beqz a4 , .LBB4_7
431
434
; NO-SINK-NEXT: .LBB4_5: # %for.body.preheader
432
- ; NO-SINK-NEXT: slli a1, a2 , 2
435
+ ; NO-SINK-NEXT: slli a1, a3 , 2
433
436
; NO-SINK-NEXT: add a1, a0, a1
434
437
; NO-SINK-NEXT: lui a2, 1
435
438
; NO-SINK-NEXT: add a0, a0, a2
@@ -446,31 +449,31 @@ define void @sink_splat_fadd_scalable(ptr nocapture %a, float %x) {
446
449
; SINK-LABEL: sink_splat_fadd_scalable:
447
450
; SINK: # %bb.0: # %entry
448
451
; SINK-NEXT: csrr a1, vlenb
449
- ; SINK-NEXT: srli a1 , a1, 2
450
- ; SINK-NEXT: li a2 , 1024
451
- ; SINK-NEXT: bgeu a2, a1 , .LBB4_2
452
+ ; SINK-NEXT: srli a2 , a1, 2
453
+ ; SINK-NEXT: li a3 , 1024
454
+ ; SINK-NEXT: bgeu a3, a2 , .LBB4_2
452
455
; SINK-NEXT: # %bb.1:
453
- ; SINK-NEXT: li a2 , 0
456
+ ; SINK-NEXT: li a3 , 0
454
457
; SINK-NEXT: j .LBB4_5
455
458
; SINK-NEXT: .LBB4_2: # %vector.ph
456
- ; SINK-NEXT: li a4, 0
457
- ; SINK-NEXT: addi a2, a1, -1
458
- ; SINK-NEXT: andi a3, a2, 1024
459
- ; SINK-NEXT: xori a2, a3, 1024
460
- ; SINK-NEXT: vsetvli a5, zero, e32, m1, ta, ma
459
+ ; SINK-NEXT: addi a3, a2, -1
460
+ ; SINK-NEXT: andi a4, a3, 1024
461
+ ; SINK-NEXT: xori a3, a4, 1024
462
+ ; SINK-NEXT: mv a5, a0
463
+ ; SINK-NEXT: mv a6, a3
464
+ ; SINK-NEXT: vsetvli a7, zero, e32, m1, ta, ma
461
465
; SINK-NEXT: .LBB4_3: # %vector.body
462
466
; SINK-NEXT: # =>This Inner Loop Header: Depth=1
463
- ; SINK-NEXT: slli a5, a4, 2
464
- ; SINK-NEXT: add a5, a0, a5
465
467
; SINK-NEXT: vl1re32.v v8, (a5)
466
468
; SINK-NEXT: vfadd.vf v8, v8, fa0
467
- ; SINK-NEXT: add a4, a4, a1
468
469
; SINK-NEXT: vs1r.v v8, (a5)
469
- ; SINK-NEXT: bne a4, a2, .LBB4_3
470
+ ; SINK-NEXT: sub a6, a6, a2
471
+ ; SINK-NEXT: add a5, a5, a1
472
+ ; SINK-NEXT: bnez a6, .LBB4_3
470
473
; SINK-NEXT: # %bb.4: # %middle.block
471
- ; SINK-NEXT: beqz a3 , .LBB4_7
474
+ ; SINK-NEXT: beqz a4 , .LBB4_7
472
475
; SINK-NEXT: .LBB4_5: # %for.body.preheader
473
- ; SINK-NEXT: slli a1, a2 , 2
476
+ ; SINK-NEXT: slli a1, a3 , 2
474
477
; SINK-NEXT: add a1, a0, a1
475
478
; SINK-NEXT: lui a2, 1
476
479
; SINK-NEXT: add a0, a0, a2
@@ -487,31 +490,31 @@ define void @sink_splat_fadd_scalable(ptr nocapture %a, float %x) {
487
490
; DEFAULT-LABEL: sink_splat_fadd_scalable:
488
491
; DEFAULT: # %bb.0: # %entry
489
492
; DEFAULT-NEXT: csrr a1, vlenb
490
- ; DEFAULT-NEXT: srli a1 , a1, 2
491
- ; DEFAULT-NEXT: li a2 , 1024
492
- ; DEFAULT-NEXT: bgeu a2, a1 , .LBB4_2
493
+ ; DEFAULT-NEXT: srli a2 , a1, 2
494
+ ; DEFAULT-NEXT: li a3 , 1024
495
+ ; DEFAULT-NEXT: bgeu a3, a2 , .LBB4_2
493
496
; DEFAULT-NEXT: # %bb.1:
494
- ; DEFAULT-NEXT: li a2 , 0
497
+ ; DEFAULT-NEXT: li a3 , 0
495
498
; DEFAULT-NEXT: j .LBB4_5
496
499
; DEFAULT-NEXT: .LBB4_2: # %vector.ph
497
- ; DEFAULT-NEXT: li a4, 0
498
- ; DEFAULT-NEXT: addi a2, a1, -1
499
- ; DEFAULT-NEXT: andi a3, a2, 1024
500
- ; DEFAULT-NEXT: xori a2, a3, 1024
501
- ; DEFAULT-NEXT: vsetvli a5, zero, e32, m1, ta, ma
500
+ ; DEFAULT-NEXT: addi a3, a2, -1
501
+ ; DEFAULT-NEXT: andi a4, a3, 1024
502
+ ; DEFAULT-NEXT: xori a3, a4, 1024
503
+ ; DEFAULT-NEXT: mv a5, a0
504
+ ; DEFAULT-NEXT: mv a6, a3
505
+ ; DEFAULT-NEXT: vsetvli a7, zero, e32, m1, ta, ma
502
506
; DEFAULT-NEXT: .LBB4_3: # %vector.body
503
507
; DEFAULT-NEXT: # =>This Inner Loop Header: Depth=1
504
- ; DEFAULT-NEXT: slli a5, a4, 2
505
- ; DEFAULT-NEXT: add a5, a0, a5
506
508
; DEFAULT-NEXT: vl1re32.v v8, (a5)
507
509
; DEFAULT-NEXT: vfadd.vf v8, v8, fa0
508
- ; DEFAULT-NEXT: add a4, a4, a1
509
510
; DEFAULT-NEXT: vs1r.v v8, (a5)
510
- ; DEFAULT-NEXT: bne a4, a2, .LBB4_3
511
+ ; DEFAULT-NEXT: sub a6, a6, a2
512
+ ; DEFAULT-NEXT: add a5, a5, a1
513
+ ; DEFAULT-NEXT: bnez a6, .LBB4_3
511
514
; DEFAULT-NEXT: # %bb.4: # %middle.block
512
- ; DEFAULT-NEXT: beqz a3 , .LBB4_7
515
+ ; DEFAULT-NEXT: beqz a4 , .LBB4_7
513
516
; DEFAULT-NEXT: .LBB4_5: # %for.body.preheader
514
- ; DEFAULT-NEXT: slli a1, a2 , 2
517
+ ; DEFAULT-NEXT: slli a1, a3 , 2
515
518
; DEFAULT-NEXT: add a1, a0, a1
516
519
; DEFAULT-NEXT: lui a2, 1
517
520
; DEFAULT-NEXT: add a0, a0, a2
0 commit comments