[llvm] [InstCombine] Fold @llvm.experimental.get.vector.length when cnt <= max_lanes (PR #169293)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 25 02:23:19 PST 2025
================
@@ -4005,6 +4005,22 @@ Instruction *InstCombinerImpl::visitCallInst(CallInst &CI) {
}
break;
}
+ case Intrinsic::experimental_get_vector_length: {
+ // get.vector.length(Cnt, MaxLanes) --> Cnt when Cnt <= MaxLanes
+ ConstantRange Cnt = computeConstantRangeIncludingKnownBits(
+ II->getArgOperand(0), false, SQ.getWithInstruction(II));
+ ConstantRange MaxLanes = cast<ConstantInt>(II->getArgOperand(1))
+ ->getValue()
+ .zext(Cnt.getBitWidth());
+ if (cast<ConstantInt>(II->getArgOperand(2))->getZExtValue())
+ MaxLanes = MaxLanes.multiply(
+ getVScaleRange(II->getFunction(), Cnt.getBitWidth()));
+
+ if (Cnt.icmp(CmpInst::ICMP_ULE, MaxLanes))
+ return replaceInstUsesWith(
+ *II, Builder.CreateTrunc(II->getArgOperand(0), II->getType()));
----------------
lukel97 wrote:
Thanks, done in 2f71e8a38242da1740c8820d659e0a4ea95e5f2f
https://github.com/llvm/llvm-project/pull/169293
More information about the llvm-commits
mailing list