@@ -64,6 +64,8 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
6464; CHECK-NEXT: Successor(s): vector.ph
6565; CHECK-EMPTY:
6666; CHECK-NEXT: vector.ph:
67+ ; CHECK-NEXT: vp<[[END1:%.+]]> = DERIVED-IV ir<%0> + vp<[[VEC_TC]]> * ir<-1>
68+ ; CHECK-NEXT: vp<[[END2:%.+]]> = DERIVED-IV ir<%n> + vp<[[VEC_TC]]> * ir<-1>
6769; CHECK-NEXT: Successor(s): vector loop
6870; CHECK-EMPTY:
6971; CHECK-NEXT: <x1> vector loop: {
@@ -92,11 +94,13 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
9294; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
9395; CHECK-EMPTY:
9496; CHECK-NEXT: scalar.ph:
97+ ; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi vp<[[END1]]>, ir<%0>
98+ ; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi vp<[[END2]]>, ir<%n>
9599; CHECK-NEXT: Successor(s): ir-bb<for.body>
96100; CHECK-EMPTY:
97101; CHECK-NEXT: ir-bb<for.body>:
98- ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]
99- ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %for.body.preheader ], [ %i.0, %for.body ]
102+ ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next, %for.body ] (extra operand: vp<[[RESUME1]]> from scalar.ph)
103+ ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %for.body.preheader ], [ %i.0, %for.body ] (extra operand: vp<[[RESUME2]]>.1 from scalar.ph)
100104; CHECK: IR %indvars.iv.next = add nsw i64 %indvars.iv, -1
101105; CHECK-NEXT: No successors
102106; CHECK-EMPTY:
@@ -181,11 +185,10 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
181185; CHECK-NEXT: IR %16 = mul i64 %15, 4
182186; CHECK-NEXT: IR %n.mod.vf = urem i64 %0, %16
183187; CHECK-NEXT: IR %n.vec = sub i64 %0, %n.mod.vf
184- ; CHECK-NEXT: IR %ind.end = sub i64 %0, %n.vec
185- ; CHECK-NEXT: IR %.cast = trunc i64 %n.vec to i32
186- ; CHECK-NEXT: IR %ind.end3 = sub i32 %n, %.cast
187188; CHECK-NEXT: IR %17 = call i64 @llvm.vscale.i64()
188189; CHECK-NEXT: IR %18 = mul i64 %17, 4
190+ ; CHECK-NEXT: vp<[[END1:%.+]]> = DERIVED-IV ir<%0> + ir<[[VEC_TC]]> * ir<-1>
191+ ; CHECK-NEXT: vp<[[END2:%.+]]> = DERIVED-IV ir<%n> + ir<[[VEC_TC]]> * ir<-1>
189192; CHECK-NEXT: Successor(s): vector loop
190193; CHECK-EMPTY:
191194; CHECK-NEXT: <x1> vector loop: {
@@ -217,8 +220,8 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
217220; CHECK-NEXT: No successors
218221; CHECK-EMPTY:
219222; CHECK-NEXT: ir-bb<scalar.ph>:
220- ; CHECK-NEXT: EMIT vp<[[RESUME_1:%.+]]> = resume-phi ir<%ind.end >, ir<%0>
221- ; CHECK-NEXT: EMIT vp<[[RESUME_2:%.+]]>.1 = resume-phi ir<%ind.end3 >, ir<%n>
223+ ; CHECK-NEXT: EMIT vp<[[RESUME_1:%.+]]> = resume-phi vp<[[END1]] >, ir<%0>
224+ ; CHECK-NEXT: EMIT vp<[[RESUME_2:%.+]]>.1 = resume-phi vp<[[END2]] >, ir<%n>
222225; CHECK-NEXT: Successor(s): ir-bb<for.body>
223226; CHECK-EMPTY:
224227; CHECK-NEXT: ir-bb<for.body>:
@@ -311,6 +314,8 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
311314; CHECK-NEXT: Successor(s): vector.ph
312315; CHECK-EMPTY:
313316; CHECK-NEXT: vector.ph:
317+ ; CHECK-NEXT: vp<[[END1:%.+]]> = DERIVED-IV ir<%0> + vp<[[VEC_TC]]> * ir<-1>
318+ ; CHECK-NEXT: vp<[[END2:%.+]]> = DERIVED-IV ir<%n> + vp<[[VEC_TC]]> * ir<-1>
314319; CHECK-NEXT: Successor(s): vector loop
315320; CHECK-EMPTY:
316321; CHECK-NEXT: <x1> vector loop: {
@@ -339,11 +344,13 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
339344; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
340345; CHECK-EMPTY:
341346; CHECK-NEXT: scalar.ph:
347+ ; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi vp<[[END1]]>, ir<%0>
348+ ; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi vp<[[END2]]>, ir<%n>
342349; CHECK-NEXT: Successor(s): ir-bb<for.body>
343350; CHECK-EMPTY:
344351; CHECK-NEXT: ir-bb<for.body>:
345- ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]
346- ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %for.body.preheader ], [ %i.0, %for.body ]
352+ ; CHECK-NEXT: IR %indvars.iv = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next, %for.body ] (extra operand: vp<[[RESUME1]]> from scalar.ph)
353+ ; CHECK-NEXT: IR %i.0.in8 = phi i32 [ %n, %for.body.preheader ], [ %i.0, %for.body ] (extra operand: vp<[[RESUME2]]>.1 from scalar.ph)
347354; CHECK: IR %indvars.iv.next = add nsw i64 %indvars.iv, -1
348355; CHECK-NEXT: No successors
349356; CHECK-EMPTY:
@@ -428,11 +435,10 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
428435; CHECK-NEXT: IR %16 = mul i64 %15, 4
429436; CHECK-NEXT: IR %n.mod.vf = urem i64 %0, %16
430437; CHECK-NEXT: IR %n.vec = sub i64 %0, %n.mod.vf
431- ; CHECK-NEXT: IR %ind.end = sub i64 %0, %n.vec
432- ; CHECK-NEXT: IR %.cast = trunc i64 %n.vec to i32
433- ; CHECK-NEXT: IR %ind.end3 = sub i32 %n, %.cast
434438; CHECK-NEXT: IR %17 = call i64 @llvm.vscale.i64()
435439; CHECK-NEXT: IR %18 = mul i64 %17, 4
440+ ; CHECK-NEXT: vp<[[END1:%.+]]> = DERIVED-IV ir<%0> + ir<[[VEC_TC]]> * ir<-1>
441+ ; CHECK-NEXT: vp<[[END2:%.+]]> = DERIVED-IV ir<%n> + ir<[[VEC_TC]]> * ir<-1>
436442; CHECK-NEXT: Successor(s): vector loop
437443; CHECK-EMPTY:
438444; CHECK-NEXT: <x1> vector loop: {
@@ -464,8 +470,8 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
464470; CHECK-NEXT: No successors
465471; CHECK-EMPTY:
466472; CHECK-NEXT: ir-bb<scalar.ph>:
467- ; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi ir<%ind.end >, ir<%0>
468- ; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi ir<%ind.end3 >, ir<%n>
473+ ; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi vp<[[END1]] >, ir<%0>
474+ ; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi vp<[[END2]] >, ir<%n>
469475; CHECK-NEXT: Successor(s): ir-bb<for.body>
470476; CHECK-EMPTY:
471477; CHECK-NEXT: ir-bb<for.body>:
0 commit comments