@@ -142,11 +142,11 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
142142; CHECK-NEXT: LV: Interleaving is not beneficial.
143143; CHECK-NEXT: LV: Found a vectorizable loop (vscale x 4) in <stdin>
144144; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
145- ; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
145+ ; CHECK: Executing best plan with VF=vscale x 4, UF=1
146146; CHECK-NEXT: VPlan 'Final VPlan for VF={vscale x 4},UF={1}' {
147- ; CHECK-NEXT: Live-in vp <[[VF:%.+]]> = VF
148- ; CHECK-NEXT: Live-in vp <[[VFxUF:%.+]]> = VF * UF
149- ; CHECK-NEXT: Live-in vp <[[VEC_TC:%.+]]> = vector-trip-count
147+ ; CHECK-NEXT: Live-in ir <[[VF:%.+]]> = VF
148+ ; CHECK-NEXT: Live-in ir <[[VFxUF:%.+]]>.1 = VF * UF
149+ ; CHECK-NEXT: Live-in ir <[[VEC_TC:%.+]]> = vector-trip-count
150150; CHECK-NEXT: vp<[[TC:%.+]]> = original trip-count
151151; CHECK-EMPTY:
152152; CHECK-NEXT: ir-bb<for.body.preheader>:
@@ -159,35 +159,37 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
159159; CHECK-EMPTY:
160160; CHECK-NEXT: <x1> vector loop: {
161161; CHECK-NEXT: vector.body:
162- ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]]> = CANONICAL-INDUCTION
162+ ; CHECK-NEXT: SCALAR-PHI vp<[[CAN_IV:%.+]]> = phi ir<0>, vp<[[CAN_IV_NEXT:%.+]]>
163163; CHECK-NEXT: vp<[[DEV_IV:%.+]]> = DERIVED-IV ir<%n> + vp<[[CAN_IV]]> * ir<-1>
164164; CHECK-NEXT: vp<[[STEPS:%.+]]> = SCALAR-STEPS vp<[[DEV_IV]]>, ir<-1>
165165; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<[[STEPS]]>, ir<-1>
166166; CHECK-NEXT: CLONE ir<%idxprom> = zext ir<%i.0>
167167; CHECK-NEXT: CLONE ir<%arrayidx> = getelementptr inbounds ir<%B>, ir<%idxprom>
168- ; CHECK-NEXT: vp<[[VEC_PTR:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx>, vp <[[VF]]>
169- ; CHECK-NEXT: WIDEN ir<%13 > = load vp<[[VEC_PTR]]>
170- ; CHECK-NEXT: WIDEN ir<%add9> = add ir<%13 >, ir<1>
168+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx>, ir <[[VF]]>
169+ ; CHECK-NEXT: WIDEN ir<[[L:%.+]] > = load vp<[[VEC_PTR]]>
170+ ; CHECK-NEXT: WIDEN ir<%add9> = add ir<[[L]] >, ir<1>
171171; CHECK-NEXT: CLONE ir<%arrayidx3> = getelementptr inbounds ir<%A>, ir<%idxprom>
172- ; CHECK-NEXT: vp<[[VEC_PTR2:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx3>, vp <[[VF]]>
172+ ; CHECK-NEXT: vp<[[VEC_PTR2:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx3>, ir <[[VF]]>
173173; CHECK-NEXT: WIDEN store vp<[[VEC_PTR2]]>, ir<%add9>
174- ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT:%.+ ]]> = add nuw vp<[[CAN_IV]]>, vp <[[VFxUF]]>
175- ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]]>, vp <[[VEC_TC]]>
174+ ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT]]> = add nuw vp<[[CAN_IV]]>, ir <[[VFxUF]]>.1
175+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]]>, ir <[[VEC_TC]]>
176176; CHECK-NEXT: No successors
177177; CHECK-NEXT: }
178- ; CHECK-NEXT: Successor(s): middle.block
178+ ; CHECK-NEXT: Successor(s): ir-bb< middle.block>
179179; CHECK-EMPTY:
180- ; CHECK-NEXT: middle.block:
181- ; CHECK-NEXT: EMIT vp<[[CMP:%.+]]> = icmp eq vp<[[TC]]>, vp <[[VEC_TC]]>
180+ ; CHECK-NEXT: ir-bb< middle.block> :
181+ ; CHECK-NEXT: EMIT vp<[[CMP:%.+]]> = icmp eq vp<[[TC]]>, ir <[[VEC_TC]]>
182182; CHECK-NEXT: EMIT branch-on-cond vp<[[CMP]]>
183- ; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
183+ ; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, ir-bb< scalar.ph>
184184; CHECK-EMPTY:
185- ; CHECK-NEXT: scalar.ph:
185+ ; CHECK-NEXT: ir-bb<scalar.ph>:
186+ ; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi ir<%ind.end>, ir<%0>
187+ ; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi ir<%ind.end3>, ir<%n>
186188; CHECK-NEXT: Successor(s): ir-bb<for.body>
187189; CHECK-EMPTY:
188190; CHECK-NEXT: ir-bb<for.body>:
189- ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]
190- ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %for.body.preheader ], [ %i.0, %for.body ]
191+ ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %scalar.ph ], [ %indvars.iv.next, %for.body ] (extra operand: vp<[[RESUME1]]> from ir-bb<scalar.ph>
192+ ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %scalar.ph ], [ %i.0, %for.body ] (extra operand: vp<[[RESUME2]]>.1 from ir-bb<scalar.ph>
191193; CHECK: IR %indvars.iv.next = add nsw i64 %indvars.iv, -1
192194; CHECK-NEXT: No successors
193195; CHECK-EMPTY:
@@ -356,11 +358,11 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
356358; CHECK-NEXT: LV: Interleaving is not beneficial.
357359; CHECK-NEXT: LV: Found a vectorizable loop (vscale x 4) in <stdin>
358360; CHECK-NEXT: LEV: Epilogue vectorization is not profitable for this loop
359- ; CHECK-NEXT: Executing best plan with VF=vscale x 4, UF=1
361+ ; CHECK: Executing best plan with VF=vscale x 4, UF=1
360362; CHECK-NEXT: VPlan 'Final VPlan for VF={vscale x 4},UF={1}' {
361- ; CHECK-NEXT: Live-in vp <[[VF:%.+]]> = VF
362- ; CHECK-NEXT: Live-in vp <[[VFxUF:%.+]]> = VF * UF
363- ; CHECK-NEXT: Live-in vp <[[VEC_TC:%.+]]> = vector-trip-count
363+ ; CHECK-NEXT: Live-in ir <[[VF:%.+]]> = VF
364+ ; CHECK-NEXT: Live-in ir <[[VFxUF:%.+]]>.1 = VF * UF
365+ ; CHECK-NEXT: Live-in ir <[[VEC_TC:%.+]]> = vector-trip-count
364366; CHECK-NEXT: vp<[[TC:%.+]]> = original trip-count
365367; CHECK-EMPTY:
366368; CHECK-NEXT: ir-bb<for.body.preheader>:
@@ -373,35 +375,37 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
373375; CHECK-EMPTY:
374376; CHECK-NEXT: <x1> vector loop: {
375377; CHECK-NEXT: vector.body:
376- ; CHECK-NEXT: EMIT vp<[[CAN_IV:%.+]]> = CANONICAL-INDUCTION
378+ ; CHECK-NEXT: SCALAR-PHI vp<[[CAN_IV:%.+]]> = phi ir<0>, vp<[[CAN_IV_NEXT:%.+]]>
377379; CHECK-NEXT: vp<[[DEV_IV:%.+]]> = DERIVED-IV ir<%n> + vp<[[CAN_IV]]> * ir<-1>
378380; CHECK-NEXT: vp<[[STEPS:%.+]]> = SCALAR-STEPS vp<[[DEV_IV]]>, ir<-1>
379381; CHECK-NEXT: CLONE ir<%i.0> = add nsw vp<[[STEPS]]>, ir<-1>
380382; CHECK-NEXT: CLONE ir<%idxprom> = zext ir<%i.0>
381383; CHECK-NEXT: CLONE ir<%arrayidx> = getelementptr inbounds ir<%B>, ir<%idxprom>
382- ; CHECK-NEXT: vp<[[VEC_PTR:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx>, vp <[[VF]]>
383- ; CHECK-NEXT: WIDEN ir<%13 > = load vp<[[VEC_PTR]]>
384- ; CHECK-NEXT: WIDEN ir<%conv1> = fadd ir<%13 >, ir<1.000000e+00>
384+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx>, ir <[[VF]]>
385+ ; CHECK-NEXT: WIDEN ir<[[L:%.+]] > = load vp<[[VEC_PTR]]>
386+ ; CHECK-NEXT: WIDEN ir<%conv1> = fadd ir<[[L]] >, ir<1.000000e+00>
385387; CHECK-NEXT: CLONE ir<%arrayidx3> = getelementptr inbounds ir<%A>, ir<%idxprom>
386- ; CHECK-NEXT: vp<[[VEC_PTR:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx3>, vp <[[VF]]>
388+ ; CHECK-NEXT: vp<[[VEC_PTR:%.+]]> = reverse-vector-pointer inbounds ir<%arrayidx3>, ir <[[VF]]>
387389; CHECK-NEXT: WIDEN store vp<[[VEC_PTR]]>, ir<%conv1>
388- ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT:%.+ ]]> = add nuw vp<[[CAN_IV]]>, vp <[[VFxUF]]>
389- ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]]>, vp <[[VEC_TC]]>
390+ ; CHECK-NEXT: EMIT vp<[[CAN_IV_NEXT]]> = add nuw vp<[[CAN_IV]]>, ir <[[VFxUF]]>.1
391+ ; CHECK-NEXT: EMIT branch-on-count vp<[[CAN_IV_NEXT]]>, ir <[[VEC_TC]]>
390392; CHECK-NEXT: No successors
391393; CHECK-NEXT: }
392- ; CHECK-NEXT: Successor(s): middle.block
394+ ; CHECK-NEXT: Successor(s): ir-bb< middle.block>
393395; CHECK-EMPTY:
394- ; CHECK-NEXT: middle.block:
395- ; CHECK-NEXT: EMIT vp<[[CMP:%.+]]> = icmp eq vp<[[TC]]>, vp <[[VEC_TC]]>
396+ ; CHECK-NEXT: ir-bb< middle.block> :
397+ ; CHECK-NEXT: EMIT vp<[[CMP:%.+]]> = icmp eq vp<[[TC]]>, ir <[[VEC_TC]]>
396398; CHECK-NEXT: EMIT branch-on-cond vp<[[CMP]]>
397- ; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
399+ ; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, ir-bb< scalar.ph>
398400; CHECK-EMPTY:
399- ; CHECK-NEXT: scalar.ph:
401+ ; CHECK-NEXT: ir-bb<scalar.ph>:
402+ ; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi ir<%ind.end>, ir<%0>
403+ ; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi ir<%ind.end3>, ir<%n>
400404; CHECK-NEXT: Successor(s): ir-bb<for.body>
401405; CHECK-EMPTY:
402406; CHECK-NEXT: ir-bb<for.body>:
403- ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]
404- ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %for.body.preheader ], [ %i.0, %for.body ]
407+ ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %scalar.ph ], [ %indvars.iv.next, %for.body ] (extra operand: vp<[[RESUME1]]> from ir-bb<scalar.ph>
408+ ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %scalar.ph ], [ %i.0, %for.body ] (extra operand: vp<[[RESUME2]]>.1 from ir-bb<scalar.ph>
405409; CHECK: IR %indvars.iv.next = add nsw i64 %indvars.iv, -1
406410; CHECK-NEXT: No successors
407411; CHECK-EMPTY:
0 commit comments