@@ -140,33 +140,33 @@ define i1 @select_exit_cond(ptr %start, ptr %end, i64 %N) {
140140; CHECK-NEXT: br label %[[VEC_EPILOG_VECTOR_BODY:.*]]
141141; CHECK: [[VEC_EPILOG_VECTOR_BODY]]:
142142; CHECK-NEXT: [[INDEX29:%.*]] = phi i64 [ [[VEC_EPILOG_RESUME_VAL]], %[[VEC_EPILOG_PH]] ], [ [[INDEX_NEXT35:%.*]], %[[VEC_EPILOG_VECTOR_BODY]] ]
143- ; CHECK-NEXT: [[VEC_IND30 :%.*]] = phi <2 x i64> [ [[INDUCTION]], %[[VEC_EPILOG_PH]] ], [ [[VEC_IND_NEXT31 :%.*]], %[[VEC_EPILOG_VECTOR_BODY]] ]
143+ ; CHECK-NEXT: [[VEC_IND44 :%.*]] = phi <2 x i64> [ [[INDUCTION]], %[[VEC_EPILOG_PH]] ], [ [[VEC_IND_NEXT46 :%.*]], %[[VEC_EPILOG_VECTOR_BODY]] ]
144144; CHECK-NEXT: [[VEC_PHI32:%.*]] = phi <2 x i64> [ [[TMP55]], %[[VEC_EPILOG_PH]] ], [ [[TMP56:%.*]], %[[VEC_EPILOG_VECTOR_BODY]] ]
145145; CHECK-NEXT: [[TMP57:%.*]] = add i64 [[INDEX29]], 0
146146; CHECK-NEXT: [[NEXT_GEP33:%.*]] = getelementptr i8, ptr [[START]], i64 [[TMP57]]
147147; CHECK-NEXT: [[TMP58:%.*]] = getelementptr i8, ptr [[NEXT_GEP33]], i32 0
148148; CHECK-NEXT: [[WIDE_LOAD34:%.*]] = load <2 x i8>, ptr [[TMP58]], align 1
149149; CHECK-NEXT: [[TMP59:%.*]] = zext <2 x i8> [[WIDE_LOAD34]] to <2 x i64>
150- ; CHECK-NEXT: [[TMP60:%.*]] = shl <2 x i64> [[VEC_IND30 ]], splat ( i64 1)
150+ ; CHECK-NEXT: [[TMP60:%.*]] = shl <2 x i64> [[VEC_IND44 ]], <i64 1, i64 1>
151151; CHECK-NEXT: [[TMP61:%.*]] = shl <2 x i64> [[TMP59]], [[TMP60]]
152152; CHECK-NEXT: [[TMP56]] = or <2 x i64> [[TMP61]], [[VEC_PHI32]]
153153; CHECK-NEXT: [[INDEX_NEXT35]] = add nuw i64 [[INDEX29]], 2
154- ; CHECK-NEXT: [[VEC_IND_NEXT31 ]] = add <2 x i64> [[VEC_IND30 ]], splat ( i64 2)
154+ ; CHECK-NEXT: [[VEC_IND_NEXT46 ]] = add <2 x i64> [[VEC_IND44 ]], <i64 2, i64 2>
155155; CHECK-NEXT: [[TMP62:%.*]] = icmp eq i64 [[INDEX_NEXT35]], [[N_VEC25]]
156156; CHECK-NEXT: br i1 [[TMP62]], label %[[VEC_EPILOG_MIDDLE_BLOCK:.*]], label %[[VEC_EPILOG_VECTOR_BODY]], !llvm.loop [[LOOP3:![0-9]+]]
157157; CHECK: [[VEC_EPILOG_MIDDLE_BLOCK]]:
158158; CHECK-NEXT: [[TMP54:%.*]] = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> [[TMP56]])
159159; CHECK-NEXT: [[CMP_N36:%.*]] = icmp eq i64 [[TMP2]], [[N_VEC25]]
160160; CHECK-NEXT: br i1 [[CMP_N36]], label %[[EXIT]], label %[[VEC_EPILOG_SCALAR_PH]]
161161; CHECK: [[VEC_EPILOG_SCALAR_PH]]:
162- ; CHECK-NEXT: [[BC_RESUME_VAL26 :%.*]] = phi i64 [ [[N_VEC25]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[ITER_CHECK]] ]
163- ; CHECK-NEXT: [[BC_RESUME_VAL28 :%.*]] = phi ptr [ [[IND_END]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END27]], %[[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], %[[ITER_CHECK]] ]
164- ; CHECK-NEXT: [[BC_MERGE_RDX37 :%.*]] = phi i64 [ [[TMP54]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ 0, %[[ITER_CHECK]] ], [ [[TMP52]], %[[VEC_EPILOG_ITER_CHECK]] ]
162+ ; CHECK-NEXT: [[BC_RESUME_VAL40 :%.*]] = phi i64 [ [[N_VEC25]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[N_VEC]], %[[VEC_EPILOG_ITER_CHECK]] ], [ 0, %[[ITER_CHECK]] ]
163+ ; CHECK-NEXT: [[BC_RESUME_VAL42 :%.*]] = phi ptr [ [[IND_END]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ [[IND_END27]], %[[VEC_EPILOG_ITER_CHECK]] ], [ [[START]], %[[ITER_CHECK]] ]
164+ ; CHECK-NEXT: [[BC_MERGE_RDX52 :%.*]] = phi i64 [ [[TMP54]], %[[VEC_EPILOG_MIDDLE_BLOCK]] ], [ 0, %[[ITER_CHECK]] ], [ [[TMP52]], %[[VEC_EPILOG_ITER_CHECK]] ]
165165; CHECK-NEXT: br label %[[LOOP:.*]]
166166; CHECK: [[LOOP]]:
167- ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL26 ]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
168- ; CHECK-NEXT: [[RED:%.*]] = phi i64 [ [[BC_MERGE_RDX37 ]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[RED_NEXT:%.*]], %[[LOOP]] ]
169- ; CHECK-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL28 ]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], %[[LOOP]] ]
167+ ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL40 ]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[IV_NEXT:%.*]], %[[LOOP]] ]
168+ ; CHECK-NEXT: [[RED:%.*]] = phi i64 [ [[BC_MERGE_RDX52 ]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[RED_NEXT:%.*]], %[[LOOP]] ]
169+ ; CHECK-NEXT: [[PTR_IV:%.*]] = phi ptr [ [[BC_RESUME_VAL42 ]], %[[VEC_EPILOG_SCALAR_PH]] ], [ [[PTR_IV_NEXT:%.*]], %[[LOOP]] ]
170170; CHECK-NEXT: [[TMP53:%.*]] = load i8, ptr [[PTR_IV]], align 1
171171; CHECK-NEXT: [[CONV3:%.*]] = zext i8 [[TMP53]] to i64
172172; CHECK-NEXT: [[MUL:%.*]] = shl i64 [[IV]], 1
0 commit comments