Skip to content

Commit 621cd7b

Browse files
committed
[LoopVectorizer] Propagate underlying instruction to the cloned instances of VPPartialReductionRecipes
1 parent 56d6159 commit 621cd7b

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

llvm/lib/Transforms/Vectorize/VPlan.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2459,7 +2459,8 @@ class VPPartialReductionRecipe : public VPSingleDefRecipe {
24592459
~VPPartialReductionRecipe() override = default;
24602460

24612461
VPPartialReductionRecipe *clone() override {
2462-
return new VPPartialReductionRecipe(Opcode, getOperand(0), getOperand(1));
2462+
return new VPPartialReductionRecipe(Opcode, getOperand(0), getOperand(1),
2463+
getUnderlyingInstr());
24632464
}
24642465

24652466
VP_CLASSOF_IMPL(VPDef::VPPartialReductionSC)

llvm/test/Transforms/LoopVectorize/AArch64/vplan-epilogue-printing.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ target triple = "aarch64-none-unknown-elf"
2222
; CHECK-NEXT: <x1> vector loop: {
2323
; CHECK-NEXT: vector.body:
2424
; CHECK-NEXT: SCALAR-PHI vp<%0> = phi ir<0>, vp<%index.next>
25-
; CHECK-NEXT: WIDEN-REDUCTION-PHI ir<%accum> = phi ir<0>, vp<%4> (VF scaled by 1/4)
25+
; CHECK-NEXT: WIDEN-REDUCTION-PHI ir<%accum> = phi ir<0>, ir<%add> (VF scaled by 1/4)
2626
; CHECK-NEXT: vp<%1> = SCALAR-STEPS vp<%0>, ir<1>
2727
; CHECK-NEXT: CLONE ir<%gep.a> = getelementptr ir<%a>, vp<%1>
2828
; CHECK-NEXT: vp<%2> = vector-pointer ir<%gep.a>
@@ -33,27 +33,27 @@ target triple = "aarch64-none-unknown-elf"
3333
; CHECK-NEXT: WIDEN ir<%load.b> = load vp<%3>
3434
; CHECK-NEXT: WIDEN-CAST ir<%ext.b> = zext ir<%load.b> to i32
3535
; CHECK-NEXT: WIDEN ir<%mul> = mul ir<%ext.b>, ir<%ext.a>
36-
; CHECK-NEXT: PARTIAL-REDUCE vp<%4> = add ir<%mul>, ir<%accum>
36+
; CHECK-NEXT: PARTIAL-REDUCE ir<%add> = add ir<%mul>, ir<%accum>
3737
; CHECK-NEXT: EMIT vp<%index.next> = add nuw vp<%0>, ir<16>
3838
; CHECK-NEXT: EMIT branch-on-count vp<%index.next>, ir<1024>
3939
; CHECK-NEXT: No successors
4040
; CHECK-NEXT: }
4141
; CHECK-NEXT: Successor(s): ir-bb<middle.block>
4242
; CHECK-EMPTY:
4343
; CHECK-NEXT: ir-bb<middle.block>:
44-
; CHECK-NEXT: EMIT vp<%6> = compute-reduction-result ir<%accum>, vp<%4>
45-
; CHECK-NEXT: EMIT vp<%7> = extract-from-end vp<%6>, ir<1>
44+
; CHECK-NEXT: EMIT vp<%5> = compute-reduction-result ir<%accum>, ir<%add>
45+
; CHECK-NEXT: EMIT vp<%6> = extract-from-end vp<%5>, ir<1>
4646
; CHECK-NEXT: EMIT vp<%cmp.n> = icmp eq ir<1024>, ir<1024>
4747
; CHECK-NEXT: EMIT branch-on-cond vp<%cmp.n>
4848
; CHECK-NEXT: Successor(s): ir-bb<exit>, ir-bb<scalar.ph>
4949
; CHECK-EMPTY:
5050
; CHECK-NEXT: ir-bb<exit>:
51-
; CHECK-NEXT: IR %add.lcssa = phi i32 [ %add, %for.body ] (extra operand: vp<%7> from ir-bb<middle.block>)
51+
; CHECK-NEXT: IR %add.lcssa = phi i32 [ %add, %for.body ] (extra operand: vp<%6> from ir-bb<middle.block>)
5252
; CHECK-NEXT: No successors
5353
; CHECK-EMPTY:
5454
; CHECK-NEXT: ir-bb<scalar.ph>:
5555
; CHECK-NEXT: EMIT vp<%vec.epilog.resume.val> = resume-phi ir<1024>, ir<0>
56-
; CHECK-NEXT: EMIT vp<%bc.merge.rdx> = resume-phi vp<%6>, ir<0>
56+
; CHECK-NEXT: EMIT vp<%bc.merge.rdx> = resume-phi vp<%5>, ir<0>
5757
; CHECK-NEXT: Successor(s): ir-bb<for.body>
5858
; CHECK-EMPTY:
5959
; CHECK-NEXT: ir-bb<for.body>:

0 commit comments

Comments
 (0)