@@ -50,6 +50,8 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
50
50
; CHECK-NEXT: LV: Scalarizing: %arrayidx3 = getelementptr inbounds i32, ptr %A, i64 %idxprom
51
51
; CHECK-NEXT: LV: Scalarizing: %cmp = icmp ugt i64 %indvars.iv, 1
52
52
; 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
53
55
; CHECK-NEXT: VPlan 'Initial VPlan for VF={vscale x 4},UF>=1' {
54
56
; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]]> = VF * UF
55
57
; 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
112
114
; CHECK-NEXT: LV(REG): RegisterClass: RISCV::GPRRC, 1 registers
113
115
; CHECK-NEXT: LV: The target has 31 registers of RISCV::GPRRC register class
114
116
; CHECK-NEXT: LV: The target has 32 registers of RISCV::VRRC register class
117
+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
115
118
; CHECK-NEXT: LV: Loop cost is 32
116
119
; CHECK-NEXT: LV: IC is 1
117
120
; CHECK-NEXT: LV: VF is vscale x 4
@@ -121,6 +124,7 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
121
124
; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
122
125
; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
123
126
; CHECK: LV: Interleaving disabled by the pass manager
127
+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
124
128
; CHECK-NEXT: LV: Vectorizing: innermost loop.
125
129
; CHECK-EMPTY:
126
130
;
@@ -191,6 +195,8 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
191
195
; CHECK-NEXT: LV: Scalarizing: %arrayidx3 = getelementptr inbounds float, ptr %A, i64 %idxprom
192
196
; CHECK-NEXT: LV: Scalarizing: %cmp = icmp ugt i64 %indvars.iv, 1
193
197
; 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
194
200
; CHECK-NEXT: VPlan 'Initial VPlan for VF={vscale x 4},UF>=1' {
195
201
; CHECK-NEXT: Live-in vp<[[VFxUF:%.+]]> = VF * UF
196
202
; 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
253
259
; CHECK-NEXT: LV(REG): RegisterClass: RISCV::GPRRC, 1 registers
254
260
; CHECK-NEXT: LV: The target has 31 registers of RISCV::GPRRC register class
255
261
; CHECK-NEXT: LV: The target has 32 registers of RISCV::VRRC register class
262
+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
256
263
; CHECK-NEXT: LV: Loop cost is 32
257
264
; CHECK-NEXT: LV: IC is 1
258
265
; CHECK-NEXT: LV: VF is vscale x 4
@@ -262,6 +269,7 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
262
269
; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
263
270
; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
264
271
; CHECK: LV: Interleaving disabled by the pass manager
272
+ ; CHECK-NEXT: LV: Loop does not require scalar epilogue
265
273
; CHECK-NEXT: LV: Vectorizing: innermost loop.
266
274
;
267
275
entry:
0 commit comments