[llvm] [TTI] Consistently pass the pointer type to getAddressComputationCost. NFCI (PR #152657)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 8 02:48:58 PDT 2025
================
@@ -1675,13 +1675,14 @@ class TargetTransformInfo {
/// \returns The cost of the address computation. For most targets this can be
/// merged into the instruction indexing mode. Some targets might want to
- /// distinguish between address computation for memory operations on vector
- /// types and scalar types. Such targets should override this function.
- /// The 'SE' parameter holds pointer for the scalar evolution object which
- /// is used in order to get the Ptr step value in case of constant stride.
- /// The 'Ptr' parameter holds SCEV of the access pointer.
- LLVM_ABI InstructionCost getAddressComputationCost(
- Type *Ty, ScalarEvolution *SE = nullptr, const SCEV *Ptr = nullptr) const;
+ /// distinguish between address computation for memory operations with vector
+ /// types and scalar pointer types. Such targets should override this
+ /// function. \p SE holds the pointer for the scalar evolution object which is
+ /// used in order to get the Ptr step value in case of constant stride. \p Ptr
+ /// holds the SCEV of the access pointer.
+ LLVM_ABI InstructionCost
+ getAddressComputationCost(Type *PtrTy, ScalarEvolution *SE = nullptr,
----------------
lukel97 wrote:
I guess the pointer type also contains the address space, not that any target currently uses it though. Long term though I think we probably want to change this API anyway to not even pass the type or SCEV? That way we can use it properly from VPlan which doesn't have access to SCEV. Just from looking at the various TTIs we seem to have three costs:
- Scalar address
- Vector of strided addresses (either constant or variable)
- Vector of gathered/scattered addresses
Maybe we could look at splitting this into three separate hooks?
https://github.com/llvm/llvm-project/pull/152657
More information about the llvm-commits
mailing list