@@ -86,29 +86,30 @@ declare i64 @llvm.vscale.i64()
8686define void @sink_splat_add_scalable (ptr nocapture %a , i32 signext %x ) {
8787; NO-SINK-LABEL: sink_splat_add_scalable:
8888; 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
9191; NO-SINK-NEXT: li a3, 1024
9292; NO-SINK-NEXT: bgeu a3, a2, .LBB1_2
9393; NO-SINK-NEXT: # %bb.1:
9494; NO-SINK-NEXT: li a3, 0
9595; NO-SINK-NEXT: j .LBB1_5
9696; NO-SINK-NEXT: .LBB1_2: # %vector.ph
97- ; NO-SINK-NEXT: li a5, 0
9897; NO-SINK-NEXT: addi a3, a2, -1
9998; NO-SINK-NEXT: andi a4, a3, 1024
10099; NO-SINK-NEXT: xori a3, a4, 1024
101100; NO-SINK-NEXT: vsetvli a6, zero, e32, m2, ta, ma
102101; 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
103105; NO-SINK-NEXT: .LBB1_3: # %vector.body
104106; 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
107107; NO-SINK-NEXT: vl2re32.v v10, (a6)
108108; NO-SINK-NEXT: vadd.vv v10, v10, v8
109- ; NO-SINK-NEXT: add a5, a5, a2
110109; 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
112113; NO-SINK-NEXT: # %bb.4: # %middle.block
113114; NO-SINK-NEXT: beqz a4, .LBB1_7
114115; NO-SINK-NEXT: .LBB1_5: # %for.body.preheader
@@ -128,28 +129,29 @@ define void @sink_splat_add_scalable(ptr nocapture %a, i32 signext %x) {
128129;
129130; SINK-LABEL: sink_splat_add_scalable:
130131; 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
133134; SINK-NEXT: li a3, 1024
134135; SINK-NEXT: bgeu a3, a2, .LBB1_2
135136; SINK-NEXT: # %bb.1:
136137; SINK-NEXT: li a3, 0
137138; SINK-NEXT: j .LBB1_5
138139; SINK-NEXT: .LBB1_2: # %vector.ph
139- ; SINK-NEXT: li a5, 0
140140; SINK-NEXT: addi a3, a2, -1
141141; SINK-NEXT: andi a4, a3, 1024
142142; 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
144147; SINK-NEXT: .LBB1_3: # %vector.body
145148; SINK-NEXT: # =>This Inner Loop Header: Depth=1
146- ; SINK-NEXT: slli a6, a5, 2
147- ; SINK-NEXT: add a6, a0, a6
148149; SINK-NEXT: vl2re32.v v8, (a6)
149150; SINK-NEXT: vadd.vx v8, v8, a1
150- ; SINK-NEXT: add a5, a5, a2
151151; 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
153155; SINK-NEXT: # %bb.4: # %middle.block
154156; SINK-NEXT: beqz a4, .LBB1_7
155157; SINK-NEXT: .LBB1_5: # %for.body.preheader
@@ -169,28 +171,29 @@ define void @sink_splat_add_scalable(ptr nocapture %a, i32 signext %x) {
169171;
170172; DEFAULT-LABEL: sink_splat_add_scalable:
171173; 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
174176; DEFAULT-NEXT: li a3, 1024
175177; DEFAULT-NEXT: bgeu a3, a2, .LBB1_2
176178; DEFAULT-NEXT: # %bb.1:
177179; DEFAULT-NEXT: li a3, 0
178180; DEFAULT-NEXT: j .LBB1_5
179181; DEFAULT-NEXT: .LBB1_2: # %vector.ph
180- ; DEFAULT-NEXT: li a5, 0
181182; DEFAULT-NEXT: addi a3, a2, -1
182183; DEFAULT-NEXT: andi a4, a3, 1024
183184; 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
185189; DEFAULT-NEXT: .LBB1_3: # %vector.body
186190; DEFAULT-NEXT: # =>This Inner Loop Header: Depth=1
187- ; DEFAULT-NEXT: slli a6, a5, 2
188- ; DEFAULT-NEXT: add a6, a0, a6
189191; DEFAULT-NEXT: vl2re32.v v8, (a6)
190192; DEFAULT-NEXT: vadd.vx v8, v8, a1
191- ; DEFAULT-NEXT: add a5, a5, a2
192193; 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
194197; DEFAULT-NEXT: # %bb.4: # %middle.block
195198; DEFAULT-NEXT: beqz a4, .LBB1_7
196199; DEFAULT-NEXT: .LBB1_5: # %for.body.preheader
@@ -404,32 +407,32 @@ define void @sink_splat_fadd_scalable(ptr nocapture %a, float %x) {
404407; NO-SINK-LABEL: sink_splat_fadd_scalable:
405408; NO-SINK: # %bb.0: # %entry
406409; 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
410413; NO-SINK-NEXT: # %bb.1:
411- ; NO-SINK-NEXT: li a2 , 0
414+ ; NO-SINK-NEXT: li a3 , 0
412415; NO-SINK-NEXT: j .LBB4_5
413416; 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
418420; NO-SINK-NEXT: vsetvli a5, zero, e32, m1, ta, ma
419421; NO-SINK-NEXT: vfmv.v.f v8, fa0
422+ ; NO-SINK-NEXT: mv a5, a0
423+ ; NO-SINK-NEXT: mv a6, a3
420424; NO-SINK-NEXT: .LBB4_3: # %vector.body
421425; 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
424426; NO-SINK-NEXT: vl1re32.v v9, (a5)
425427; NO-SINK-NEXT: vfadd.vv v9, v9, v8
426- ; NO-SINK-NEXT: add a4, a4, a1
427428; 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
429432; NO-SINK-NEXT: # %bb.4: # %middle.block
430- ; NO-SINK-NEXT: beqz a3 , .LBB4_7
433+ ; NO-SINK-NEXT: beqz a4 , .LBB4_7
431434; NO-SINK-NEXT: .LBB4_5: # %for.body.preheader
432- ; NO-SINK-NEXT: slli a1, a2 , 2
435+ ; NO-SINK-NEXT: slli a1, a3 , 2
433436; NO-SINK-NEXT: add a1, a0, a1
434437; NO-SINK-NEXT: lui a2, 1
435438; NO-SINK-NEXT: add a0, a0, a2
@@ -446,31 +449,31 @@ define void @sink_splat_fadd_scalable(ptr nocapture %a, float %x) {
446449; SINK-LABEL: sink_splat_fadd_scalable:
447450; SINK: # %bb.0: # %entry
448451; 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
452455; SINK-NEXT: # %bb.1:
453- ; SINK-NEXT: li a2 , 0
456+ ; SINK-NEXT: li a3 , 0
454457; SINK-NEXT: j .LBB4_5
455458; 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
461465; SINK-NEXT: .LBB4_3: # %vector.body
462466; SINK-NEXT: # =>This Inner Loop Header: Depth=1
463- ; SINK-NEXT: slli a5, a4, 2
464- ; SINK-NEXT: add a5, a0, a5
465467; SINK-NEXT: vl1re32.v v8, (a5)
466468; SINK-NEXT: vfadd.vf v8, v8, fa0
467- ; SINK-NEXT: add a4, a4, a1
468469; 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
470473; SINK-NEXT: # %bb.4: # %middle.block
471- ; SINK-NEXT: beqz a3 , .LBB4_7
474+ ; SINK-NEXT: beqz a4 , .LBB4_7
472475; SINK-NEXT: .LBB4_5: # %for.body.preheader
473- ; SINK-NEXT: slli a1, a2 , 2
476+ ; SINK-NEXT: slli a1, a3 , 2
474477; SINK-NEXT: add a1, a0, a1
475478; SINK-NEXT: lui a2, 1
476479; SINK-NEXT: add a0, a0, a2
@@ -487,31 +490,31 @@ define void @sink_splat_fadd_scalable(ptr nocapture %a, float %x) {
487490; DEFAULT-LABEL: sink_splat_fadd_scalable:
488491; DEFAULT: # %bb.0: # %entry
489492; 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
493496; DEFAULT-NEXT: # %bb.1:
494- ; DEFAULT-NEXT: li a2 , 0
497+ ; DEFAULT-NEXT: li a3 , 0
495498; DEFAULT-NEXT: j .LBB4_5
496499; 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
502506; DEFAULT-NEXT: .LBB4_3: # %vector.body
503507; DEFAULT-NEXT: # =>This Inner Loop Header: Depth=1
504- ; DEFAULT-NEXT: slli a5, a4, 2
505- ; DEFAULT-NEXT: add a5, a0, a5
506508; DEFAULT-NEXT: vl1re32.v v8, (a5)
507509; DEFAULT-NEXT: vfadd.vf v8, v8, fa0
508- ; DEFAULT-NEXT: add a4, a4, a1
509510; 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
511514; DEFAULT-NEXT: # %bb.4: # %middle.block
512- ; DEFAULT-NEXT: beqz a3 , .LBB4_7
515+ ; DEFAULT-NEXT: beqz a4 , .LBB4_7
513516; DEFAULT-NEXT: .LBB4_5: # %for.body.preheader
514- ; DEFAULT-NEXT: slli a1, a2 , 2
517+ ; DEFAULT-NEXT: slli a1, a3 , 2
515518; DEFAULT-NEXT: add a1, a0, a1
516519; DEFAULT-NEXT: lui a2, 1
517520; DEFAULT-NEXT: add a0, a0, a2
0 commit comments