diff options
author | Florian Hahn <flo@fhahn.com> | 2025-04-20 14:25:32 +0100 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2025-04-20 14:25:32 +0100 |
commit | fc71b2c8db5d0a648ca5417e4c502755bfbe75b6 (patch) | |
tree | 6c9a5beedc1e9eacb2bcc4b40d0fdba365162888 /llvm/lib/Transforms | |
parent | bb21a6819b3fb9d689de776f7ee768030dfbacea (diff) | |
download | llvm-fc71b2c8db5d0a648ca5417e4c502755bfbe75b6.zip llvm-fc71b2c8db5d0a648ca5417e4c502755bfbe75b6.tar.gz llvm-fc71b2c8db5d0a648ca5417e4c502755bfbe75b6.tar.bz2 |
[VPlan] Get opcode from recipe in VPWidenMemRecipe::computeCost (NFC).
Remove some uses of the underlying ingredient by getting the opcode
directly via the recipe ID.
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp index ff1ad29..c2cfd93 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp @@ -2686,6 +2686,9 @@ InstructionCost VPWidenMemoryRecipe::computeCost(ElementCount VF, getLoadStoreAlignment(const_cast<Instruction *>(&Ingredient)); unsigned AS = cast<PointerType>(Ctx.Types.inferScalarType(getAddr())) ->getAddressSpace(); + unsigned Opcode = isa<VPWidenLoadRecipe, VPWidenLoadEVLRecipe>(this) + ? Instruction::Load + : Instruction::Store; if (!Consecutive) { // TODO: Using the original IR may not be accurate. @@ -2695,20 +2698,19 @@ InstructionCost VPWidenMemoryRecipe::computeCost(ElementCount VF, assert(!Reverse && "Inconsecutive memory access should not have the order."); return Ctx.TTI.getAddressComputationCost(Ty) + - Ctx.TTI.getGatherScatterOpCost(Ingredient.getOpcode(), Ty, Ptr, - IsMasked, Alignment, Ctx.CostKind, - &Ingredient); + Ctx.TTI.getGatherScatterOpCost(Opcode, Ty, Ptr, IsMasked, Alignment, + Ctx.CostKind, &Ingredient); } InstructionCost Cost = 0; if (IsMasked) { - Cost += Ctx.TTI.getMaskedMemoryOpCost(Ingredient.getOpcode(), Ty, Alignment, - AS, Ctx.CostKind); + Cost += + Ctx.TTI.getMaskedMemoryOpCost(Opcode, Ty, Alignment, AS, Ctx.CostKind); } else { TTI::OperandValueInfo OpInfo = Ctx.TTI.getOperandInfo(Ingredient.getOperand(0)); - Cost += Ctx.TTI.getMemoryOpCost(Ingredient.getOpcode(), Ty, Alignment, AS, - Ctx.CostKind, OpInfo, &Ingredient); + Cost += Ctx.TTI.getMemoryOpCost(Opcode, Ty, Alignment, AS, Ctx.CostKind, + OpInfo, &Ingredient); } if (!Reverse) return Cost; |