Skip to content

Commit 363d625

Browse files
committed
fix the comments
1 parent cc04719 commit 363d625

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
@@ -960,37 +960,24 @@ void VPWidenIntrinsicRecipe::execute(VPTransformState &State) {
960960
Args.push_back(Arg);
961961
}
962962

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

996983
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
@@ -1504,12 +1504,19 @@ static void transformRecipestoEVLRecipes(VPlan &Plan, VPValue &EVL) {
15041504
.Case<VPWidenCastRecipe>(
15051505
[&](VPWidenCastRecipe *CInst) -> VPRecipeBase * {
15061506
auto *CI = cast<CastInst>(CInst->getUnderlyingInstr());
1507-
SmallVector<VPValue *> Ops(CInst->operands());
1508-
Ops.push_back(&EVL);
15091507
Intrinsic::ID VPID =
15101508
VPIntrinsic::getForOpcode(CI->getOpcode());
15111509
if (VPID == Intrinsic::not_intrinsic)
15121510
return nullptr;
1511+
SmallVector<VPValue *> Ops(CInst->operands());
1512+
if (VPIntrinsic::getMaskParamPos(VPID)) {
1513+
VPValue *Mask = Plan.getOrAddLiveIn(ConstantInt::getTrue(
1514+
IntegerType::getInt1Ty(CI->getContext())));
1515+
Ops.push_back(Mask);
1516+
}
1517+
if (VPIntrinsic::getVectorLengthParamPos(VPID)) {
1518+
Ops.push_back(&EVL);
1519+
}
15131520
return new VPWidenIntrinsicRecipe(
15141521
*CI, VPID, Ops, CI->getType(), CI->getDebugLoc());
15151522
})

0 commit comments

Comments
 (0)