@@ -64,6 +64,8 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
64
64
; CHECK-NEXT: Successor(s): vector.ph
65
65
; CHECK-EMPTY:
66
66
; 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>
67
69
; CHECK-NEXT: Successor(s): vector loop
68
70
; CHECK-EMPTY:
69
71
; CHECK-NEXT: <x1> vector loop: {
@@ -92,11 +94,13 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
92
94
; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
93
95
; CHECK-EMPTY:
94
96
; 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>
95
99
; CHECK-NEXT: Successor(s): ir-bb<for.body>
96
100
; CHECK-EMPTY:
97
101
; 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)
100
104
; CHECK: IR %indvars.iv.next = add nsw i64 %indvars.iv, -1
101
105
; CHECK-NEXT: No successors
102
106
; CHECK-EMPTY:
@@ -181,11 +185,10 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
181
185
; CHECK-NEXT: IR %16 = mul i64 %15, 4
182
186
; CHECK-NEXT: IR %n.mod.vf = urem i64 %0, %16
183
187
; 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
187
188
; CHECK-NEXT: IR %17 = call i64 @llvm.vscale.i64()
188
189
; 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>
189
192
; CHECK-NEXT: Successor(s): vector loop
190
193
; CHECK-EMPTY:
191
194
; CHECK-NEXT: <x1> vector loop: {
@@ -217,8 +220,8 @@ define void @vector_reverse_i64(ptr nocapture noundef writeonly %A, ptr nocaptur
217
220
; CHECK-NEXT: No successors
218
221
; CHECK-EMPTY:
219
222
; 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>
222
225
; CHECK-NEXT: Successor(s): ir-bb<for.body>
223
226
; CHECK-EMPTY:
224
227
; CHECK-NEXT: ir-bb<for.body>:
@@ -311,6 +314,8 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
311
314
; CHECK-NEXT: Successor(s): vector.ph
312
315
; CHECK-EMPTY:
313
316
; 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>
314
319
; CHECK-NEXT: Successor(s): vector loop
315
320
; CHECK-EMPTY:
316
321
; CHECK-NEXT: <x1> vector loop: {
@@ -339,11 +344,13 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
339
344
; CHECK-NEXT: Successor(s): ir-bb<for.cond.cleanup.loopexit>, scalar.ph
340
345
; CHECK-EMPTY:
341
346
; 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>
342
349
; CHECK-NEXT: Successor(s): ir-bb<for.body>
343
350
; CHECK-EMPTY:
344
351
; 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)
347
354
; CHECK: IR %indvars.iv.next = add nsw i64 %indvars.iv, -1
348
355
; CHECK-NEXT: No successors
349
356
; CHECK-EMPTY:
@@ -428,11 +435,10 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
428
435
; CHECK-NEXT: IR %16 = mul i64 %15, 4
429
436
; CHECK-NEXT: IR %n.mod.vf = urem i64 %0, %16
430
437
; 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
434
438
; CHECK-NEXT: IR %17 = call i64 @llvm.vscale.i64()
435
439
; 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>
436
442
; CHECK-NEXT: Successor(s): vector loop
437
443
; CHECK-EMPTY:
438
444
; CHECK-NEXT: <x1> vector loop: {
@@ -464,8 +470,8 @@ define void @vector_reverse_f32(ptr nocapture noundef writeonly %A, ptr nocaptur
464
470
; CHECK-NEXT: No successors
465
471
; CHECK-EMPTY:
466
472
; 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>
469
475
; CHECK-NEXT: Successor(s): ir-bb<for.body>
470
476
; CHECK-EMPTY:
471
477
; CHECK-NEXT: ir-bb<for.body>:
0 commit comments