@@ -57,9 +57,7 @@ define void @first_order_recurrence(ptr noalias %A, ptr noalias %B, i64 %TC) {
5757; IF-EVL-NEXT: [[TMP20:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
5858; IF-EVL-NEXT: br i1 [[TMP20]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
5959; 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
6361; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <vscale x 4 x i32> [[VP_OP_LOAD]], i32 [[TMP23]]
6462; IF-EVL-NEXT: br i1 true, label %[[FOR_END:.*]], label %[[SCALAR_PH]]
6563; IF-EVL: [[SCALAR_PH]]:
@@ -210,24 +208,20 @@ define void @second_order_recurrence(ptr noalias %A, ptr noalias %B, i64 %TC) {
210208; IF-EVL-NEXT: [[TMP24:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
211209; IF-EVL-NEXT: br i1 [[TMP24]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]]
212210; 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
216212; 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
220214; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT3:%.*]] = extractelement <vscale x 4 x i32> [[TMP19]], i32 [[TMP30]]
221215; IF-EVL-NEXT: br i1 true, label %[[FOR_END:.*]], label %[[SCALAR_PH]]
222216; IF-EVL: [[SCALAR_PH]]:
223217; IF-EVL-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
224218; 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]] ]
226220; IF-EVL-NEXT: br label %[[FOR_BODY:.*]]
227221; IF-EVL: [[FOR_BODY]]:
228222; IF-EVL-NEXT: [[INDVARS:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[INDVARS_NEXT:%.*]], %[[FOR_BODY]] ]
229223; 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]] ]
231225; IF-EVL-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[INDVARS]]
232226; IF-EVL-NEXT: [[TMP31]] = load i32, ptr [[ARRAYIDX]], align 4
233227; 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) {
389383; IF-EVL-NEXT: [[TMP28:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]]
390384; IF-EVL-NEXT: br i1 [[TMP28]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
391385; 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
395387; 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
399389; 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
403391; IF-EVL-NEXT: [[VECTOR_RECUR_EXTRACT7:%.*]] = extractelement <vscale x 4 x i32> [[TMP23]], i32 [[TMP37]]
404392; IF-EVL-NEXT: br i1 true, label %[[FOR_END:.*]], label %[[SCALAR_PH]]
405393; IF-EVL: [[SCALAR_PH]]:
406394; IF-EVL-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[ENTRY]] ]
407395; 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]] ]
410398; IF-EVL-NEXT: br label %[[FOR_BODY:.*]]
411399; IF-EVL: [[FOR_BODY]]:
412400; IF-EVL-NEXT: [[INDVARS:%.*]] = phi i64 [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ], [ [[INDVARS_NEXT:%.*]], %[[FOR_BODY]] ]
413401; 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]] ]
416404; IF-EVL-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[INDVARS]]
417405; IF-EVL-NEXT: [[TMP38]] = load i32, ptr [[ARRAYIDX]], align 4
418406; IF-EVL-NEXT: [[ADD:%.*]] = add nsw i32 [[FOR2]], [[FOR3]]
0 commit comments