[llvm] [LV] Check if the VF is scalar by VFRange in `handleUncountableEarlyExit`. (PR #135294)
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 15 00:24:39 PDT 2025
================
@@ -2436,13 +2438,20 @@ void VPlanTransforms::handleUncountableEarlyExit(
ExitIRI->extractLastLaneOfOperand(MiddleBuilder);
}
// Add the incoming value from the early exit.
- if (!IncomingFromEarlyExit->isLiveIn() && !Plan.hasScalarVFOnly()) {
- VPValue *FirstActiveLane = EarlyExitB.createNaryOp(
- VPInstruction::FirstActiveLane, {EarlyExitTakenCond}, nullptr,
- "first.active.lane");
- IncomingFromEarlyExit = EarlyExitB.createNaryOp(
- Instruction::ExtractElement, {IncomingFromEarlyExit, FirstActiveLane},
- nullptr, "early.exit.value");
+ if (!IncomingFromEarlyExit->isLiveIn()) {
+ // Limit range to scalar VF only, if the range contains the scalar VF.
+ bool IsVectorVF = LoopVectorizationPlanner::getDecisionAndClampRange(
+ [](ElementCount VF) { return VF.isVector(); }, Range);
+
+ if (IsVectorVF) {
----------------
sdesmalen-arm wrote:
```suggestion
auto IsVector = [](ElementCount VF) { return VF.isVector(); };
if (!IncomingFromEarlyExit->isLiveIn() &&
// Limit range to scalar VF only, if the range contains the scalar VF.
LoopVectorizationPlanner::getDecisionAndClampRange(IsVector, Range)) {
```
https://github.com/llvm/llvm-project/pull/135294
More information about the llvm-commits
mailing list