@@ -57,9 +57,7 @@ define void @first_order_recurrence(ptr noalias %A, ptr noalias %B, i64 %TC) {
57
57
; IF-EVL-NEXT: [[TMP20:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
58
58
; IF-EVL-NEXT: br i1 [[TMP20]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
59
59
; IF-EVL: [[MIDDLE_BLOCK]]:
60
- ; IF-EVL-NEXT: [[TMP21:%.*]] = call i32 @llvm.vscale.i32()
61
- ; IF-EVL-NEXT: [[TMP22:%.*]] = mul i32 [[TMP21]], 4
62
- ; IF-EVL-NEXT: [[TMP23:%.*]] = sub i32 [[TMP22]], 1
60
+ ; IF-EVL-NEXT: [[TMP23:%.*]] = sub i32 [[TMP12]], 1
63
61
; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 4 x i32> [[VP_OP_LOAD]], i32 [[TMP23]]
64
62
; IF-EVL-NEXT: br i1 true, label %[[FOR_END:.*]], label %[[SCALAR_PH]]
65
63
; IF-EVL: [[SCALAR_PH]]:
@@ -210,24 +208,20 @@ define void @second_order_recurrence(ptr noalias %A, ptr noalias %B, i64 %TC) {
210
208
; IF-EVL-NEXT: [[TMP24:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
211
209
; IF-EVL-NEXT: br i1 [[TMP24]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
212
210
; IF-EVL: [[MIDDLE_BLOCK]]:
213
- ; IF-EVL-NEXT: [[TMP25:%.*]] = call i32 @llvm.vscale.i32()
214
- ; IF-EVL-NEXT: [[TMP26:%.*]] = mul i32 [[TMP25]], 4
215
- ; IF-EVL-NEXT: [[TMP27:%.*]] = sub i32 [[TMP26]], 1
211
+ ; IF-EVL-NEXT: [[TMP27:%.*]] = sub i32 [[TMP15]], 1
216
212
; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 4 x i32> [[VP_OP_LOAD]], i32 [[TMP27]]
217
- ; IF-EVL-NEXT: [[TMP28:%.*]] = call i32 @llvm.vscale.i32()
218
- ; IF-EVL-NEXT: [[TMP29:%.*]] = mul i32 [[TMP28]], 4
219
- ; IF-EVL-NEXT: [[TMP30:%.*]] = sub i32 [[TMP29]], 1
213
+ ; IF-EVL-NEXT: [[TMP30:%.*]] = sub i32 [[TMP15]], 1
220
214
; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT3:%.*]] = extractelement <vscale x 4 x i32> [[TMP19]], i32 [[TMP30]]
221
215
; IF-EVL-NEXT: br i1 true, label %[[FOR_END:.*]], label %[[SCALAR_PH]]
222
216
; IF-EVL: [[SCALAR_PH]]:
223
217
; IF-EVL-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
224
218
; IF-EVL-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT]], %[[MIDDLE_BLOCK]] ], [ 33, %[[ENTRY]] ]
225
- ; IF-EVL-NEXT: [[SCALAR_RECUR_INIT4 :%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT3]], %[[MIDDLE_BLOCK]] ], [ 22, %[[ENTRY]] ]
219
+ ; IF-EVL-NEXT: [[SCALAR_RECUR_INIT5 :%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT3]], %[[MIDDLE_BLOCK]] ], [ 22, %[[ENTRY]] ]
226
220
; IF-EVL-NEXT: br label %[[FOR_BODY:.*]]
227
221
; IF-EVL: [[FOR_BODY]]:
228
222
; IF-EVL-NEXT: [[INDVARS:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[INDVARS_NEXT:%.*]], %[[FOR_BODY]] ]
229
223
; IF-EVL-NEXT: [[FOR1:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT]], %[[SCALAR_PH]] ], [ [[TMP31:%.*]], %[[FOR_BODY]] ]
230
- ; IF-EVL-NEXT: [[FOR2:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT4 ]], %[[SCALAR_PH]] ], [ [[FOR1]], %[[FOR_BODY]] ]
224
+ ; IF-EVL-NEXT: [[FOR2:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT5 ]], %[[SCALAR_PH]] ], [ [[FOR1]], %[[FOR_BODY]] ]
231
225
; IF-EVL-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[INDVARS]]
232
226
; IF-EVL-NEXT: [[TMP31]] = load i32, ptr [[ARRAYIDX]], align 4
233
227
; IF-EVL-NEXT: [[ADD:%.*]] = add nsw i32 [[FOR1]], [[FOR2]]
@@ -389,30 +383,24 @@ define void @third_order_recurrence(ptr noalias %A, ptr noalias %B, i64 %TC) {
389
383
; IF-EVL-NEXT: [[TMP28:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
390
384
; IF-EVL-NEXT: br i1 [[TMP28]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
391
385
; IF-EVL: [[MIDDLE_BLOCK]]:
392
- ; IF-EVL-NEXT: [[TMP29:%.*]] = call i32 @llvm.vscale.i32()
393
- ; IF-EVL-NEXT: [[TMP30:%.*]] = mul i32 [[TMP29]], 4
394
- ; IF-EVL-NEXT: [[TMP31:%.*]] = sub i32 [[TMP30]], 1
386
+ ; IF-EVL-NEXT: [[TMP31:%.*]] = sub i32 [[TMP18]], 1
395
387
; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 4 x i32> [[VP_OP_LOAD]], i32 [[TMP31]]
396
- ; IF-EVL-NEXT: [[TMP32:%.*]] = call i32 @llvm.vscale.i32()
397
- ; IF-EVL-NEXT: [[TMP33:%.*]] = mul i32 [[TMP32]], 4
398
- ; IF-EVL-NEXT: [[TMP34:%.*]] = sub i32 [[TMP33]], 1
388
+ ; IF-EVL-NEXT: [[TMP34:%.*]] = sub i32 [[TMP18]], 1
399
389
; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT6:%.*]] = extractelement <vscale x 4 x i32> [[TMP22]], i32 [[TMP34]]
400
- ; IF-EVL-NEXT: [[TMP35:%.*]] = call i32 @llvm.vscale.i32()
401
- ; IF-EVL-NEXT: [[TMP36:%.*]] = mul i32 [[TMP35]], 4
402
- ; IF-EVL-NEXT: [[TMP37:%.*]] = sub i32 [[TMP36]], 1
390
+ ; IF-EVL-NEXT: [[TMP37:%.*]] = sub i32 [[TMP18]], 1
403
391
; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT7:%.*]] = extractelement <vscale x 4 x i32> [[TMP23]], i32 [[TMP37]]
404
392
; IF-EVL-NEXT: br i1 true, label %[[FOR_END:.*]], label %[[SCALAR_PH]]
405
393
; IF-EVL: [[SCALAR_PH]]:
406
394
; IF-EVL-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
407
395
; IF-EVL-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT]], %[[MIDDLE_BLOCK]] ], [ 33, %[[ENTRY]] ]
408
- ; IF-EVL-NEXT: [[SCALAR_RECUR_INIT8 :%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT6]], %[[MIDDLE_BLOCK]] ], [ 22, %[[ENTRY]] ]
409
- ; IF-EVL-NEXT: [[SCALAR_RECUR_INIT9 :%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT7]], %[[MIDDLE_BLOCK]] ], [ 11, %[[ENTRY]] ]
396
+ ; IF-EVL-NEXT: [[SCALAR_RECUR_INIT10 :%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT6]], %[[MIDDLE_BLOCK]] ], [ 22, %[[ENTRY]] ]
397
+ ; IF-EVL-NEXT: [[SCALAR_RECUR_INIT11 :%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT7]], %[[MIDDLE_BLOCK]] ], [ 11, %[[ENTRY]] ]
410
398
; IF-EVL-NEXT: br label %[[FOR_BODY:.*]]
411
399
; IF-EVL: [[FOR_BODY]]:
412
400
; IF-EVL-NEXT: [[INDVARS:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[INDVARS_NEXT:%.*]], %[[FOR_BODY]] ]
413
401
; IF-EVL-NEXT: [[FOR1:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT]], %[[SCALAR_PH]] ], [ [[TMP38:%.*]], %[[FOR_BODY]] ]
414
- ; IF-EVL-NEXT: [[FOR2:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT8 ]], %[[SCALAR_PH]] ], [ [[FOR1]], %[[FOR_BODY]] ]
415
- ; IF-EVL-NEXT: [[FOR3:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT9 ]], %[[SCALAR_PH]] ], [ [[FOR2]], %[[FOR_BODY]] ]
402
+ ; IF-EVL-NEXT: [[FOR2:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT10 ]], %[[SCALAR_PH]] ], [ [[FOR1]], %[[FOR_BODY]] ]
403
+ ; IF-EVL-NEXT: [[FOR3:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT11 ]], %[[SCALAR_PH]] ], [ [[FOR2]], %[[FOR_BODY]] ]
416
404
; IF-EVL-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[INDVARS]]
417
405
; IF-EVL-NEXT: [[TMP38]] = load i32, ptr [[ARRAYIDX]], align 4
418
406
; IF-EVL-NEXT: [[ADD:%.*]] = add nsw i32 [[FOR2]], [[FOR3]]
0 commit comments