[llvm] 414590b - [VPlan] Infer result type for ComptueReductionResult in ::execute (NFC).
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 8 13:45:12 PDT 2025
Author: Florian Hahn
Date: 2025-06-08T21:44:28+01:00
New Revision: 414590bae8cdd2a59979e5ae4cb297f6a1967ec5
URL: https://github.com/llvm/llvm-project/commit/414590bae8cdd2a59979e5ae4cb297f6a1967ec5
DIFF: https://github.com/llvm/llvm-project/commit/414590bae8cdd2a59979e5ae4cb297f6a1967ec5.diff
LOG: [VPlan] Infer result type for ComptueReductionResult in ::execute (NFC).
Remove explicit use of underlying instruction to get type.
Added:
Modified:
llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
index 90a04af60e3d8..78ad9b797fb6c 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
@@ -647,7 +647,6 @@ Value *VPInstruction::generate(VPTransformState &State) {
// FIXME: The cross-recipe dependency on VPReductionPHIRecipe is temporary
// and will be removed by breaking up the recipe further.
auto *PhiR = cast<VPReductionPHIRecipe>(getOperand(0));
- auto *OrigPhi = cast<PHINode>(PhiR->getUnderlyingValue());
// Get its reduction variable descriptor.
const RecurrenceDescriptor &RdxDesc = PhiR->getRecurrenceDescriptor();
@@ -655,7 +654,7 @@ Value *VPInstruction::generate(VPTransformState &State) {
assert(!RecurrenceDescriptor::isFindLastIVRecurrenceKind(RK) &&
"should be handled by ComputeFindLastIVResult");
- Type *PhiTy = OrigPhi->getType();
+ Type *ResultTy = State.TypeAnalysis.inferScalarType(this);
// The recipe's operands are the reduction phi, followed by one operand for
// each part of the reduction.
unsigned UF = getNumOperands() - 1;
@@ -671,7 +670,7 @@ Value *VPInstruction::generate(VPTransformState &State) {
// then extend the loop exit value to enable InstCombine to evaluate the
// entire expression in the smaller type.
// TODO: Handle this in truncateToMinBW.
- if (State.VF.isVector() && PhiTy != RdxDesc.getRecurrenceType()) {
+ if (State.VF.isVector() && ResultTy != RdxDesc.getRecurrenceType()) {
Type *RdxVecTy = VectorType::get(RdxDesc.getRecurrenceType(), State.VF);
for (unsigned Part = 0; Part < UF; ++Part)
RdxParts[Part] = Builder.CreateTrunc(RdxParts[Part], RdxVecTy);
@@ -703,10 +702,10 @@ Value *VPInstruction::generate(VPTransformState &State) {
// If the reduction can be performed in a smaller type, we need to extend
// the reduction to the wider type before we branch to the original loop.
- if (PhiTy != RdxDesc.getRecurrenceType())
+ if (ResultTy != RdxDesc.getRecurrenceType())
ReducedPartRdx = RdxDesc.isSigned()
- ? Builder.CreateSExt(ReducedPartRdx, PhiTy)
- : Builder.CreateZExt(ReducedPartRdx, PhiTy);
+ ? Builder.CreateSExt(ReducedPartRdx, ResultTy)
+ : Builder.CreateZExt(ReducedPartRdx, ResultTy);
}
return ReducedPartRdx;
More information about the llvm-commits
mailing list