[llvm] [TTI] Use MemIntrinsicCostAttributes for getStridedOpCost (PR #170436)
Shih-Po Hung via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 2 23:07:18 PST 2025
================
@@ -1599,19 +1599,19 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
/*IsGatherScatter*/ true, CostKind);
}
- InstructionCost getStridedMemoryOpCost(unsigned Opcode, Type *DataTy,
- const Value *Ptr, bool VariableMask,
- Align Alignment,
- TTI::TargetCostKind CostKind,
- const Instruction *I) const override {
+ InstructionCost
+ getStridedMemoryOpCost(const MemIntrinsicCostAttributes &MICA,
+ TTI::TargetCostKind CostKind) const override {
// For a target without strided memory operations (or for an illegal
// operation type on one which does), assume we lower to a gather/scatter
// operation. (Which may in turn be scalarized.)
- unsigned IID = Opcode == Instruction::Load ? Intrinsic::masked_gather
- : Intrinsic::masked_scatter;
+ unsigned IID = MICA.getID() == Intrinsic::experimental_vp_strided_load
+ ? Intrinsic::masked_gather
+ : Intrinsic::masked_scatter;
return thisT()->getGatherScatterOpCost(
- MemIntrinsicCostAttributes(IID, DataTy, Ptr, VariableMask, Alignment,
- I),
+ MemIntrinsicCostAttributes(IID, MICA.getDataType(), MICA.getPointer(),
+ MICA.getVariableMask(), MICA.getAlignment(),
+ MICA.getInst()),
----------------
arcbbb wrote:
#169885 stacks on this and will clean up the logic here.
https://github.com/llvm/llvm-project/pull/170436
More information about the llvm-commits
mailing list