@@ -50,6 +50,8 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
5050; CHECK-NEXT: LV: Scalarizing: %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %idxprom
5151; CHECK-NEXT: LV: Scalarizing: %cmp = icmp ugt i64 %indvars.iv, 1
5252; CHECK-NEXT: LV: Scalarizing: %indvars.iv.next = add nsw i64 %indvars.iv, -1
53+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
54+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
5355; CHECK-NEXT: VPlan 'Initial VPlan for VF={vscale x 4},UF>=1' {
5456; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]]> = VF * UF
5557; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -112,6 +114,7 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
112114; CHECK-NEXT: LV(REG): RegisterClass: RISCV::GPRRC, 1 registers
113115; CHECK-NEXT: LV: The target has 31 registers of RISCV::GPRRC register class
114116; CHECK-NEXT: LV: The target has 32 registers of RISCV::VRRC register class
117+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
115118; CHECK-NEXT: LV: Loop cost is 32
116119; CHECK-NEXT: LV: IC is 1
117120; CHECK-NEXT: LV: VF is vscale x 4
@@ -121,6 +124,7 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
121124; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
122125; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
123126; CHECK: LV: Interleaving disabled by the pass manager
127+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
124128; CHECK-NEXT: LV: Vectorizing: innermost loop.
125129; CHECK-EMPTY:
126130;
@@ -191,6 +195,8 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
191195; CHECK-NEXT: LV: Scalarizing: %arrayidx3 = getelementptr inbounds float, ptr %A, i64 %idxprom
192196; CHECK-NEXT: LV: Scalarizing: %cmp = icmp ugt i64 %indvars.iv, 1
193197; CHECK-NEXT: LV: Scalarizing: %indvars.iv.next = add nsw i64 %indvars.iv, -1
198+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
199+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
194200; CHECK-NEXT: VPlan 'Initial VPlan for VF={vscale x 4},UF>=1' {
195201; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]]> = VF * UF
196202; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -253,6 +259,7 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
253259; CHECK-NEXT: LV(REG): RegisterClass: RISCV::GPRRC, 1 registers
254260; CHECK-NEXT: LV: The target has 31 registers of RISCV::GPRRC register class
255261; CHECK-NEXT: LV: The target has 32 registers of RISCV::VRRC register class
262+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
256263; CHECK-NEXT: LV: Loop cost is 32
257264; CHECK-NEXT: LV: IC is 1
258265; CHECK-NEXT: LV: VF is vscale x 4
@@ -262,6 +269,7 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
262269; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
263270; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
264271; CHECK: LV: Interleaving disabled by the pass manager
272+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
265273; CHECK-NEXT: LV: Vectorizing: innermost loop.
266274;
267275entry:
0 commit comments