[llvm] [LSV] Merge contiguous chains across scalar types (PR #154069)
Drew Kersnar via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 2 09:30:55 PST 2025
================
@@ -338,12 +334,22 @@ class Vectorizer {
EquivalenceClassMap collectEquivalenceClasses(BasicBlock::iterator Begin,
BasicBlock::iterator End);
+ /// Inserts a cast instruction to convert Inst to DstTy.
+ Value *insertCast(Value *Val, Type *DstTy);
+
/// Partitions Instrs into "chains" where every instruction has a known
/// constant offset from the first instr in the chain.
///
/// Postcondition: For all i, ret[i][0].second == 0, because the first instr
/// in the chain is the leader, and an instr touches distance 0 from itself.
std::vector<Chain> gatherChains(ArrayRef<Instruction *> Instrs);
+
+ // Helpers for chain merging.
+ std::optional<APInt> computeLeaderDelta(Instruction *I1, Instruction *I2);
+ bool chainsOverlapAfterRebase(const Chain &A, const Chain &B,
+ const APInt &Delta) const;
+ static void rebaseChain(Chain &C, const APInt &Delta);
+ void normalizeChainToType(Chain &C, Type *CastTy);
----------------
dakersnar wrote:
It would be nice to have comments above each of these, matching the rest of the file.
https://github.com/llvm/llvm-project/pull/154069
More information about the llvm-commits
mailing list