diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -6902,9 +6902,8 @@ // the instruction as if it wasn't if-converted and instead remained in the // predicated block. We will scale this cost by block probability after // computing the scalarization overhead. - assert(!VF.isScalable() && "scalable vectors not yet supported."); InstructionCost ScalarCost = - VF.getKnownMinValue() * + VF.getFixedValue() * getInstructionCost(I, ElementCount::getFixed(1)).first; // Compute the scalarization overhead of needed insertelement instructions @@ -6912,10 +6911,9 @@ if (isScalarWithPredication(I) && !I->getType()->isVoidTy()) { ScalarCost += TTI.getScalarizationOverhead( cast(ToVectorTy(I->getType(), VF)), - APInt::getAllOnesValue(VF.getKnownMinValue()), true, false); - assert(!VF.isScalable() && "scalable vectors not yet supported."); + APInt::getAllOnesValue(VF.getFixedValue()), true, false); ScalarCost += - VF.getKnownMinValue() * + VF.getFixedValue() * TTI.getCFInstrCost(Instruction::PHI, TTI::TCK_RecipThroughput); } @@ -6930,10 +6928,9 @@ if (canBeScalarized(J)) Worklist.push_back(J); else if (needsExtract(J, VF)) { - assert(!VF.isScalable() && "scalable vectors not yet supported."); ScalarCost += TTI.getScalarizationOverhead( cast(ToVectorTy(J->getType(), VF)), - APInt::getAllOnesValue(VF.getKnownMinValue()), false, true); + APInt::getAllOnesValue(VF.getFixedValue()), false, true); } } @@ -7628,14 +7625,13 @@ if (ScalarPredicatedBB) { // Return cost for branches around scalarized and predicated blocks. - assert(!VF.isScalable() && "scalable vectors not yet supported."); auto *Vec_i1Ty = VectorType::get(IntegerType::getInt1Ty(RetTy->getContext()), VF); - return (TTI.getScalarizationOverhead( - Vec_i1Ty, APInt::getAllOnesValue(VF.getKnownMinValue()), - false, true) + - (TTI.getCFInstrCost(Instruction::Br, CostKind) * - VF.getKnownMinValue())); + return ( + TTI.getScalarizationOverhead( + Vec_i1Ty, APInt::getAllOnesValue(VF.getFixedValue()), false, + true) + + (TTI.getCFInstrCost(Instruction::Br, CostKind) * VF.getFixedValue())); } else if (I->getParent() == TheLoop->getLoopLatch() || VF.isScalar()) // The back-edge branch will remain, as will all scalar branches. return TTI.getCFInstrCost(Instruction::Br, CostKind);