[llvm] [LV] Use getFixedValue instead of getKnownMinValue when appropriate (PR #143526)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 11 03:08:04 PDT 2025
================
@@ -5342,6 +5342,10 @@ LoopVectorizationCostModel::getUniformMemOpCost(Instruction *I,
StoreInst *SI = cast<StoreInst>(I);
bool IsLoopInvariantStoreValue = Legal->isInvariant(SI->getValueOperand());
+ // TODO: We have tests that request the cost of extracting element
+ // VF.getKnownMinValue() - 1 from a scalable vector. This is actually
+ // meaningless, given what we actually want is the last lane and is likely
+ // to be more expensive.
----------------
lukel97 wrote:
I see, FWIW `VPLane::Kind` has something similar to represent the last lane:
```c++
/// Kind describes how to interpret Lane.
enum class Kind : uint8_t {
/// For First, Lane is the index into the first N elements of a
/// fixed-vector <N x <ElTy>> or a scalable vector <vscale x N x <ElTy>>.
First,
/// For ScalableLast, Lane is the offset from the start of the last
/// N-element subvector in a scalable vector <vscale x N x <ElTy>>. For
/// example, a Lane of 0 corresponds to lane `(vscale - 1) * N`, a Lane of
/// 1 corresponds to `((vscale - 1) * N) + 1`, etc.
ScalableLast
};
```
https://github.com/llvm/llvm-project/pull/143526
More information about the llvm-commits
mailing list