@@ -123,9 +123,9 @@ define void @test_pr54223_sink_after_insertion_order(ptr noalias %a, ptr noalias
123123; CHECK: middle.block:
124124; CHECK-NEXT: br i1 true, label [[EXIT:%.*]], label [[SCALAR_PH]]
125125; CHECK: scalar.ph:
126- ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 10000, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY]] ]
126+ ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 10000, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.* ]] ]
127127; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi float [ [[TMP2]], [[MIDDLE_BLOCK]] ], [ 0.000000e+00, [[ENTRY]] ]
128- ; CHECK-NEXT: [[SCALAR_RECUR_INIT5:%.*]] = phi float [ [[TMP4]], [[MIDDLE_BLOCK]] ], [ 0.000000e+00, [[ENTRY:%.* ]] ]
128+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT5:%.*]] = phi float [ [[TMP4]], [[MIDDLE_BLOCK]] ], [ 0.000000e+00, [[ENTRY]] ]
129129; CHECK-NEXT: br label [[LOOP:%.*]]
130130; CHECK: loop:
131131; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]
@@ -246,9 +246,9 @@ define void @test_pr54233_for_depend_on_each_other(ptr noalias %a, ptr noalias %
246246; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <4 x i32> [[TMP4]], i32 3
247247; CHECK-NEXT: br i1 false, label [[EXIT:%.*]], label [[SCALAR_PH]]
248248; CHECK: scalar.ph:
249- ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1000, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY]] ]
249+ ; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 1000, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.* ]] ]
250250; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT]], [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY]] ]
251- ; CHECK-NEXT: [[SCALAR_RECUR_INIT3:%.*]] = phi i32 [ [[TMP1]], [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.* ]] ]
251+ ; CHECK-NEXT: [[SCALAR_RECUR_INIT3:%.*]] = phi i32 [ [[TMP1]], [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY]] ]
252252; CHECK-NEXT: br label [[LOOP:%.*]]
253253; CHECK: loop:
254254; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]
@@ -386,7 +386,7 @@ exit:
386386; The previous truncation (%trunc) gets vectorized (rather than folded into an
387387; IV) and hoisted along with its AND operand above the user 'or'.
388388define void @hoist_previous_value_and_operand (ptr %dst , i64 %mask ) {
389- ; CHECK-LABEL: @hoist_previous_value_and_operands (
389+ ; CHECK-LABEL: @hoist_previous_value_and_operand (
390390; CHECK-NEXT: bb:
391391; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
392392; CHECK: vector.ph:
@@ -396,36 +396,36 @@ define void @hoist_previous_value_and_operand(ptr %dst, i64 %mask) {
396396; CHECK: vector.body:
397397; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
398398; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i64> [ <i64 1, i64 2, i64 3, i64 4>, [[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], [[VECTOR_BODY]] ]
399- ; CHECK-NEXT: [[VECTOR_RECUR:%.*]] = phi <4 x i32> [ <i32 poison, i32 poison, i32 poison, i32 1>, [[VECTOR_PH]] ], [ [[TMP2 :%.*]], [[VECTOR_BODY]] ]
400- ; CHECK-NEXT: [[VECTOR_RECUR1:%.*]] = phi <4 x i32> [ <i32 poison, i32 poison, i32 poison, i32 0>, [[VECTOR_PH]] ], [ [[TMP4 :%.*]], [[VECTOR_BODY]] ]
399+ ; CHECK-NEXT: [[VECTOR_RECUR:%.*]] = phi <4 x i32> [ <i32 poison, i32 poison, i32 poison, i32 1>, [[VECTOR_PH]] ], [ [[TMP4 :%.*]], [[VECTOR_BODY]] ]
400+ ; CHECK-NEXT: [[VECTOR_RECUR1:%.*]] = phi <4 x i32> [ <i32 poison, i32 poison, i32 poison, i32 0>, [[VECTOR_PH]] ], [ [[TMP6 :%.*]], [[VECTOR_BODY]] ]
401401; CHECK-NEXT: [[OFFSET_IDX:%.*]] = add i64 1, [[INDEX]]
402402; CHECK-NEXT: [[TMP0:%.*]] = add i64 [[OFFSET_IDX]], 0
403- ; CHECK-NEXT: [[TMP6 :%.*]] = getelementptr inbounds i32, ptr [[DST:%.*]], i64 [[TMP0]]
404- ; CHECK-NEXT: [[TMP7 :%.*]] = getelementptr inbounds i32, ptr [[TMP6 ]], i32 0
405- ; CHECK-NEXT: [[TMP1 :%.*]] = and <4 x i64> [[VEC_IND]], [[BROADCAST_SPLAT]]
406- ; CHECK-NEXT: [[TMP2 ]] = trunc <4 x i64> [[TMP1 ]] to <4 x i32>
407- ; CHECK-NEXT: [[TMP3 :%.*]] = shufflevector <4 x i32> [[VECTOR_RECUR]], <4 x i32> [[TMP2 ]], <4 x i32> <i32 3, i32 4, i32 5, i32 6>
408- ; CHECK-NEXT: [[TMP4 ]] = or <4 x i32> [[TMP3 ]], zeroinitializer
409- ; CHECK-NEXT: [[TMP5 :%.*]] = shufflevector <4 x i32> [[VECTOR_RECUR1]], <4 x i32> [[TMP4 ]], <4 x i32> <i32 3, i32 4, i32 5, i32 6>
410- ; CHECK-NEXT: store <4 x i32> [[TMP5 ]], ptr [[TMP7 ]], align 4
403+ ; CHECK-NEXT: [[TMP1 :%.*]] = getelementptr inbounds i32, ptr [[DST:%.*]], i64 [[TMP0]]
404+ ; CHECK-NEXT: [[TMP2 :%.*]] = getelementptr inbounds i32, ptr [[TMP1 ]], i32 0
405+ ; CHECK-NEXT: [[TMP3 :%.*]] = and <4 x i64> [[VEC_IND]], [[BROADCAST_SPLAT]]
406+ ; CHECK-NEXT: [[TMP4 ]] = trunc <4 x i64> [[TMP3 ]] to <4 x i32>
407+ ; CHECK-NEXT: [[TMP5 :%.*]] = shufflevector <4 x i32> [[VECTOR_RECUR]], <4 x i32> [[TMP4 ]], <4 x i32> <i32 3, i32 4, i32 5, i32 6>
408+ ; CHECK-NEXT: [[TMP6 ]] = or <4 x i32> [[TMP5 ]], <i32 3, i32 3, i32 3, i32 3>
409+ ; CHECK-NEXT: [[TMP7 :%.*]] = shufflevector <4 x i32> [[VECTOR_RECUR1]], <4 x i32> [[TMP6 ]], <4 x i32> <i32 3, i32 4, i32 5, i32 6>
410+ ; CHECK-NEXT: store <4 x i32> [[TMP7 ]], ptr [[TMP2 ]], align 4
411411; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
412412; CHECK-NEXT: [[VEC_IND_NEXT]] = add <4 x i64> [[VEC_IND]], <i64 4, i64 4, i64 4, i64 4>
413413; CHECK-NEXT: [[TMP8:%.*]] = icmp eq i64 [[INDEX_NEXT]], 336
414414; CHECK-NEXT: br i1 [[TMP8]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP6:![0-9]+]]
415415; CHECK: middle.block:
416- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <4 x i32> [[TMP2 ]], i32 3
417- ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT2:%.*]] = extractelement <4 x i32> [[TMP4 ]], i32 3
416+ ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <4 x i32> [[TMP4 ]], i32 3
417+ ; CHECK-NEXT: [[VECTOR_RECUR_EXTRACT2:%.*]] = extractelement <4 x i32> [[TMP6 ]], i32 3
418418; CHECK-NEXT: br i1 false, label [[EXIT:%.*]], label [[SCALAR_PH]]
419419; CHECK: scalar.ph:
420420; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i64 [ 337, [[MIDDLE_BLOCK]] ], [ 1, [[BB:%.*]] ]
421421; CHECK-NEXT: [[SCALAR_RECUR_INIT:%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT]], [[MIDDLE_BLOCK]] ], [ 1, [[BB]] ]
422422; CHECK-NEXT: [[SCALAR_RECUR_INIT3:%.*]] = phi i32 [ [[VECTOR_RECUR_EXTRACT2]], [[MIDDLE_BLOCK]] ], [ 0, [[BB]] ]
423423; CHECK-NEXT: br label [[LOOP:%.*]]
424424; CHECK: loop:
425- ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[ADD:%.* ]], [[LOOP ]] ], [ [[BC_RESUME_VAL ]], [[SCALAR_PH ]] ]
426- ; CHECK-NEXT: [[FOR_1:%.*]] = phi i32 [ [[TRUNC:%.* ]], [[LOOP ]] ], [ [[SCALAR_RECUR_INIT ]], [[SCALAR_PH ]] ]
427- ; CHECK-NEXT: [[FOR_2:%.*]] = phi i32 [ [[OR:%.* ]], [[LOOP ]] ], [ [[SCALAR_RECUR_INIT3 ]], [[SCALAR_PH ]] ]
428- ; CHECK-NEXT: [[OR]] = or i32 [[FOR_1]], 0
425+ ; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[BC_RESUME_VAL ]], [[SCALAR_PH ]] ], [ [[ADD:%.* ]], [[LOOP ]] ]
426+ ; CHECK-NEXT: [[FOR_1:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT ]], [[SCALAR_PH ]] ], [ [[TRUNC:%.* ]], [[LOOP ]] ]
427+ ; CHECK-NEXT: [[FOR_2:%.*]] = phi i32 [ [[SCALAR_RECUR_INIT3 ]], [[SCALAR_PH ]] ], [ [[OR:%.* ]], [[LOOP ]] ]
428+ ; CHECK-NEXT: [[OR]] = or i32 [[FOR_1]], 3
429429; CHECK-NEXT: [[ADD]] = add i64 [[IV]], 1
430430; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i32, ptr [[DST]], i64 [[IV]]
431431; CHECK-NEXT: store i32 [[FOR_2]], ptr [[GEP]], align 4
0 commit comments