Skip to content

Commit a3c6a13

Browse files
committed
fix the comments
1 parent 9eace66 commit a3c6a13

File tree

5 files changed

+36
-41
lines changed

5 files changed

+36
-41
lines changed

llvm/include/llvm/IR/VectorBuilder.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,11 @@ class VectorBuilder {
9999
const Twine &Name = Twine());
100100

101101
/// Emit a VP reduction intrinsic call for recurrence kind.
102-
/// \param ID The intrinsic ID of call Intrinsic
102+
/// \param RdxID The intrinsic ID of llvm.vector.reduce.*
103103
/// \param ValTy The type of operand which the reduction operation is
104104
/// performed.
105105
/// \param VecOpArray The operand list.
106-
Value *createSimpleIntrinsic(Intrinsic::ID ID, Type *ValTy,
106+
Value *createSimpleReduction(Intrinsic::ID RdxID, Type *ValTy,
107107
ArrayRef<Value *> VecOpArray,
108108
const Twine &Name = Twine());
109109
};

llvm/lib/IR/VectorBuilder.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,13 @@ Value *VectorBuilder::createVectorInstruction(unsigned Opcode, Type *ReturnTy,
6060
return createVectorInstructionImpl(VPID, ReturnTy, InstOpArray, Name);
6161
}
6262

63-
Value *VectorBuilder::createSimpleIntrinsic(Intrinsic::ID ID, Type *ValTy,
63+
Value *VectorBuilder::createSimpleReduction(Intrinsic::ID RdxID,
64+
Type *ValTy,
6465
ArrayRef<Value *> InstOpArray,
6566
const Twine &Name) {
66-
auto VPID = VPIntrinsic::getForIntrinsic(ID);
67-
assert(VPIntrinsic::isVPIntrinsic(VPID) &&
68-
"No VPIntrinsic for this Intrinsic");
67+
auto VPID = VPIntrinsic::getForIntrinsic(RdxID);
68+
assert(VPReductionIntrinsic::isVPReduction(VPID) &&
69+
"No VPIntrinsic for this reduction");
6970
return createVectorInstructionImpl(VPID, ValTy, InstOpArray, Name);
7071
}
7172

llvm/lib/Transforms/Utils/LoopUtils.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,7 +1300,7 @@ Value *llvm::createSimpleReduction(VectorBuilder &VBuilder, Value *Src,
13001300
Type *SrcEltTy = SrcTy->getElementType();
13011301
Value *Iden = getRecurrenceIdentity(Kind, SrcEltTy, Desc.getFastMathFlags());
13021302
Value *Ops[] = {Iden, Src};
1303-
return VBuilder.createSimpleIntrinsic(Id, SrcTy, Ops);
1303+
return VBuilder.createSimpleReduction(Id, SrcTy, Ops);
13041304
}
13051305

13061306
Value *llvm::createReduction(IRBuilderBase &B,
@@ -1343,7 +1343,7 @@ Value *llvm::createOrderedReduction(VectorBuilder &VBuilder,
13431343
Intrinsic::ID Id = getReductionIntrinsicID(RecurKind::FAdd);
13441344
auto *SrcTy = cast<VectorType>(Src->getType());
13451345
Value *Ops[] = {Start, Src};
1346-
return VBuilder.createSimpleIntrinsic(Id, SrcTy, Ops);
1346+
return VBuilder.createSimpleReduction(Id, SrcTy, Ops);
13471347
}
13481348

13491349
void llvm::propagateIRFlags(Value *I, ArrayRef<Value *> VL, Value *OpValue,

llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -957,37 +957,24 @@ void VPWidenIntrinsicRecipe::execute(VPTransformState &State) {
957957
Args.push_back(Arg);
958958
}
959959

960-
if (VPIntrinsic::isVPIntrinsic(VectorIntrinsicID)) {
961-
// Use vector version of the vector predicate Intrinsic
962-
IRBuilderBase &BuilderIR = State.Builder;
963-
VectorBuilder VBuilder(BuilderIR);
964-
Value *Mask = BuilderIR.CreateVectorSplat(State.VF, BuilderIR.getTrue());
965-
VBuilder.setMask(Mask).setEVL(Args.back());
966-
Args.pop_back();
967-
Value *VPInst = VBuilder.createSimpleIntrinsic(
968-
VectorIntrinsicID, TysForDecl[0], Args, "vp.call");
969-
if (!VPInst->getType()->isVoidTy())
970-
State.set(this, VPInst);
971-
State.addMetadata(VPInst,
972-
dyn_cast_or_null<Instruction>(getUnderlyingValue()));
973-
} else {
974-
// Use vector version of the intrinsic.
975-
Module *M = State.Builder.GetInsertBlock()->getModule();
976-
Function *VectorF =
977-
Intrinsic::getOrInsertDeclaration(M, VectorIntrinsicID, TysForDecl);
978-
assert(VectorF && "Can't retrieve vector intrinsic.");
979-
980-
auto *CI = cast_or_null<CallInst>(getUnderlyingValue());
981-
SmallVector<OperandBundleDef, 1> OpBundles;
982-
if (CI)
983-
CI->getOperandBundlesAsDefs(OpBundles);
984-
985-
CallInst *V = State.Builder.CreateCall(VectorF, Args, OpBundles);
986-
setFlags(V);
987-
if (!V->getType()->isVoidTy())
988-
State.set(this, V);
989-
State.addMetadata(V, CI);
990-
}
960+
// Use vector version of the intrinsic.
961+
Module *M = State.Builder.GetInsertBlock()->getModule();
962+
Function *VectorF =
963+
Intrinsic::getOrInsertDeclaration(M, VectorIntrinsicID, TysForDecl);
964+
assert(VectorF && "Can't retrieve vector intrinsic.");
965+
966+
auto *CI = cast_or_null<CallInst>(getUnderlyingValue());
967+
SmallVector<OperandBundleDef, 1> OpBundles;
968+
if (CI)
969+
CI->getOperandBundlesAsDefs(OpBundles);
970+
971+
CallInst *V = State.Builder.CreateCall(VectorF, Args, OpBundles);
972+
973+
setFlags(V);
974+
975+
if (!V->getType()->isVoidTy())
976+
State.set(this, V);
977+
State.addMetadata(V, dyn_cast_or_null<Instruction>(getUnderlyingValue()));
991978
}
992979

993980
InstructionCost VPWidenIntrinsicRecipe::computeCost(ElementCount VF,

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,12 +1477,19 @@ static void transformRecipestoEVLRecipes(VPlan &Plan, VPValue &EVL) {
14771477
.Case<VPWidenCastRecipe>(
14781478
[&](VPWidenCastRecipe *CInst) -> VPRecipeBase * {
14791479
auto *CI = cast<CastInst>(CInst->getUnderlyingInstr());
1480-
SmallVector<VPValue *> Ops(CInst->operands());
1481-
Ops.push_back(&EVL);
14821480
Intrinsic::ID VPID =
14831481
VPIntrinsic::getForOpcode(CI->getOpcode());
14841482
if (VPID == Intrinsic::not_intrinsic)
14851483
return nullptr;
1484+
SmallVector<VPValue *> Ops(CInst->operands());
1485+
if (VPIntrinsic::getMaskParamPos(VPID)) {
1486+
VPValue *Mask = Plan.getOrAddLiveIn(ConstantInt::getTrue(
1487+
IntegerType::getInt1Ty(CI->getContext())));
1488+
Ops.push_back(Mask);
1489+
}
1490+
if (VPIntrinsic::getVectorLengthParamPos(VPID)) {
1491+
Ops.push_back(&EVL);
1492+
}
14861493
return new VPWidenIntrinsicRecipe(
14871494
*CI, VPID, Ops, CI->getType(), CI->getDebugLoc());
14881495
})

0 commit comments

Comments
 (0)