[llvm] [LV] Use wide lane masks as the canonical form when tail-folding & interleaving (PR #209484)
Kerry McLaughlin via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 24 09:27:52 PDT 2026
================
@@ -1104,6 +1108,32 @@ Value *VPInstruction::generate(VPTransformState &State) {
return Result;
}
+ case VPInstruction::ExtractVectorForPart: {
+ Value *Src = State.get(getOperand(0));
+ Type *DstTy = VectorType::get(getScalarType(), State.VF);
+ unsigned Part = cast<VPConstantInt>(getOperand(1))->getZExtValue();
+
+ if (Src->getType() == DstTy)
+ return Src;
+
+ // If the VF is scalar & this is an extract of an active lane mask,
+ // generate an ICMP directly.
+ VPValue *Start, *TC;
+ if (State.VF.isScalar() &&
----------------
kmclaughlin-arm wrote:
Moved this optimisation to `replaceMaskWithCompare`, which is now called from `optimizeForVFAndUF`.
https://github.com/llvm/llvm-project/pull/209484
More information about the llvm-commits
mailing list