|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
Derived Classes
lib/Transforms/Vectorize/VPlanValue.h 131 class VPUser : public VPValue {
References
include/llvm/ADT/ArrayRef.h 108 const ArrayRef<U *> &A,
110 std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
118 const SmallVectorTemplateCommon<U *, DummyT> &Vec,
120 std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
include/llvm/ADT/DenseMapInfo.h 39 static inline T* getEmptyKey() {
41 Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
45 static inline T* getTombstoneKey() {
47 Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
51 static unsigned getHashValue(const T *PtrVal) {
56 static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
56 static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/Support/Casting.h 57 static inline bool doit(const From &Val) {
104 static inline bool doit(const From *Val) {
106 return isa_impl<To, From>::doit(*Val);
263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
265 return cast_convert_val<X, Y*,
266 typename simplify_type<Y*>::SimpleType>::doit(Val);
305 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
306 cast_or_null(Y *Val) {
include/llvm/Support/PointerLikeTypeTraits.h 56 static inline void *getAsVoidPointer(T *P) { return P; }
57 static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
59 enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
lib/Transforms/Vectorize/LoopVectorizationPlanner.h 41 ArrayRef<VPValue *> Operands) {
49 std::initializer_list<VPValue *> Operands) {
117 VPValue *createNaryOp(unsigned Opcode, ArrayRef<VPValue *> Operands,
117 VPValue *createNaryOp(unsigned Opcode, ArrayRef<VPValue *> Operands,
123 VPValue *createNaryOp(unsigned Opcode,
124 std::initializer_list<VPValue *> Operands,
129 VPValue *createNot(VPValue *Operand) {
129 VPValue *createNot(VPValue *Operand) {
133 VPValue *createAnd(VPValue *LHS, VPValue *RHS) {
133 VPValue *createAnd(VPValue *LHS, VPValue *RHS) {
133 VPValue *createAnd(VPValue *LHS, VPValue *RHS) {
137 VPValue *createOr(VPValue *LHS, VPValue *RHS) {
137 VPValue *createOr(VPValue *LHS, VPValue *RHS) {
137 VPValue *createOr(VPValue *LHS, VPValue *RHS) {
lib/Transforms/Vectorize/LoopVectorize.cpp 6641 VPValue *VPRecipeBuilder::createEdgeMask(BasicBlock *Src, BasicBlock *Dst,
6651 VPValue *SrcMask = createBlockInMask(Src, Plan);
6660 VPValue *EdgeMask = Plan->getVPValue(BI->getCondition());
6672 VPValue *VPRecipeBuilder::createBlockInMask(BasicBlock *BB, VPlanPtr &Plan) {
6682 VPValue *BlockMask = nullptr;
6690 VPValue *IV = Plan->getVPValue(Legal->getPrimaryInduction());
6691 VPValue *BTC = Plan->getOrCreateBackedgeTakenCount();
6698 VPValue *EdgeMask = createEdgeMask(Predecessor, BB, Plan);
6737 VPValue *Mask = nullptr;
6768 VPValue *Mask = nullptr;
6819 SmallVector<VPValue *, 2> Masks;
6822 VPValue *EdgeMask =
6984 VPValue *BlockInMask = createBlockInMask(Instr->getParent(), Plan);
7202 auto *Cond = RecipeBuilder.createBlockInMask(OrigLoop->getHeader(), Plan);
7204 VPValue *Phi = Plan->getVPValue(Reduction.first);
7205 VPValue *Red = Plan->getVPValue(Reduction.second.getLoopExitInstr());
7340 VPValue *Mask = User->getOperand(User->getNumOperands() - 1);
7381 VPValue *BlockInMask = User->getOperand(0);
7435 VPValue *Mask = User->getOperand(User->getNumOperands() - 1);
lib/Transforms/Vectorize/VPRecipeBuilder.h 45 DenseMap<std::pair<BasicBlock *, BasicBlock *>, VPValue *>;
46 using BlockMaskCacheTy = DenseMap<BasicBlock *, VPValue *>;
54 VPValue *createBlockInMask(BasicBlock *BB, VPlanPtr &Plan);
58 VPValue *createEdgeMask(BasicBlock *Src, BasicBlock *Dst, VPlanPtr &Plan);
lib/Transforms/Vectorize/VPlan.cpp 50 raw_ostream &llvm::operator<<(raw_ostream &OS, const VPValue &V) {
202 VPValue *CBV;
364 for (const VPValue *Operand : operands()) {
578 const VPValue *Pred = BasicBlock->getPredicate();
593 const VPValue *CBV = BasicBlock->getCondBit();
715 void VPValue::replaceAllUsesWith(VPValue *New) {
lib/Transforms/Vectorize/VPlan.h 255 DenseMap<VPValue *, PerPartValuesTy> PerPartOutput;
263 Value *get(VPValue *Def, unsigned Part) {
272 void set(VPValue *Def, Value *V, unsigned Part) {
353 VPValue *CondBit = nullptr;
356 VPValue *Predicate = nullptr;
490 VPValue *getCondBit() { return CondBit; }
492 const VPValue *getCondBit() const { return CondBit; }
494 void setCondBit(VPValue *CV) { CondBit = CV; }
496 VPValue *getPredicate() { return Predicate; }
498 const VPValue *getPredicate() const { return Predicate; }
500 void setPredicate(VPValue *Pred) { Predicate = Pred; }
515 VPValue *Condition) {
661 VPInstruction(unsigned Opcode, ArrayRef<VPValue *> Operands)
662 : VPUser(VPValue::VPInstructionSC, Operands),
665 VPInstruction(unsigned Opcode, std::initializer_list<VPValue *> Operands)
669 static inline bool classof(const VPValue *V) {
670 return V->getVPValueID() == VPValue::VPInstructionSC;
674 SmallVector<VPValue *, 2> Operands(operands());
799 VPBlendRecipe(PHINode *Phi, ArrayRef<VPValue *> Masks)
828 VPInterleaveRecipe(const InterleaveGroup<Instruction> *IG, VPValue *Mask)
903 VPBranchOnMaskRecipe(VPValue *BlockInMask) : VPRecipeBase(VPBranchOnMaskSC) {
965 VPWidenMemoryInstructionRecipe(Instruction &Instr, VPValue *Mask)
1169 SmallPtrSet<VPValue *, 16> VPExternalDefs;
1173 VPValue *BackedgeTakenCount = nullptr;
1183 SmallVector<VPValue *, 4> VPCBVs;
1196 for (VPValue *Def : VPExternalDefs)
1198 for (VPValue *CBV : VPCBVs)
1211 VPValue *getOrCreateBackedgeTakenCount() {
1213 BackedgeTakenCount = new VPValue();
1227 void addExternalDef(VPValue *VPVal) {
1232 void addCBV(VPValue *CBV) {
1239 Value2VPValue[V] = new VPValue();
1242 VPValue *getVPValue(Value *V) {
1483 VPValue *Condition, VPBlockBase *BlockPtr) {
1603 static SmallVector<VPValue *, 4> getEmptyKey() {
1607 static SmallVector<VPValue *, 4> getTombstoneKey() {
1611 static unsigned getHashValue(const SmallVector<VPValue *, 4> &V) {
1615 static bool isEqual(const SmallVector<VPValue *, 4> &LHS,
1622 DenseMap<SmallVector<VPValue *, 4>, VPInstruction *, BundleDenseMapInfo>
1638 typename std::pair<VPInstruction *, SmallVector<VPValue *, 4>>;
1650 bool areVectorizable(ArrayRef<VPValue *> Operands) const;
1653 void addCombined(ArrayRef<VPValue *> Operands, VPInstruction *New);
1665 std::pair<OpMode, VPValue *> getBest(OpMode Mode, VPValue *Last,
1665 std::pair<OpMode, VPValue *> getBest(OpMode Mode, VPValue *Last,
1666 SmallPtrSetImpl<VPValue *> &Candidates,
1670 void dumpBundle(ArrayRef<VPValue *> Values);
1682 VPInstruction *buildGraph(ArrayRef<VPValue *> Operands);
lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp 57 DenseMap<Value *, VPValue *> IRDef2VPValue;
69 VPValue *getOrCreateVPOperand(Value *IRVal);
96 VPValue *VPVal = IRDef2VPValue[Phi];
165 VPValue *PlainCFGBuilder::getOrCreateVPOperand(Value *IRVal) {
183 VPValue *NewVPVal = new VPValue(IRVal);
183 VPValue *NewVPVal = new VPValue(IRVal);
224 SmallVector<VPValue *, 4> VPOperands;
296 VPValue *VPCondBit = IRDef2VPValue[BrCond];
lib/Transforms/Vectorize/VPlanHCFGTransforms.cpp 32 if (auto *CondBit = VPBB->getCondBit()) {
33 auto *NCondBit = new VPValue(CondBit->getUnderlyingValue());
33 auto *NCondBit = new VPValue(CondBit->getUnderlyingValue());
lib/Transforms/Vectorize/VPlanPredicator.cpp 37 VPValue *VPlanPredicator::getOrCreateNotPredicate(VPBasicBlock *PredBB,
39 VPValue *CBV = PredBB->getCondBit();
44 VPValue *IntermediateVal = nullptr;
58 VPValue *BP = PredBB->getPredicate();
85 VPValue *VPlanPredicator::genPredicateTree(std::list<VPValue *> &Worklist) {
85 VPValue *VPlanPredicator::genPredicateTree(std::list<VPValue *> &Worklist) {
93 VPValue *LHS = Worklist.front();
95 VPValue *RHS = Worklist.front();
99 VPValue *Or = Builder.createOr(LHS, RHS);
108 VPValue *Root = Worklist.front();
138 VPValue *RegionBP = Region->getPredicate();
144 std::list<VPValue *> IncomingPredicates;
159 VPValue *IncomingPredicate = nullptr;
180 VPValue *Predicate = genPredicateTree(IncomingPredicates);
lib/Transforms/Vectorize/VPlanPredicator.h 50 VPValue *getOrCreateNotPredicate(VPBasicBlock *PredBB, VPBasicBlock *CurrBB);
54 VPValue *genPredicateTree(std::list<VPValue *> &Worklist);
54 VPValue *genPredicateTree(std::list<VPValue *> &Worklist);
lib/Transforms/Vectorize/VPlanSLP.cpp 57 void VPlanSlp::addCombined(ArrayRef<VPValue *> Operands, VPInstruction *New) {
62 for (VPValue *V : Operands) {
76 bool VPlanSlp::areVectorizable(ArrayRef<VPValue *> Operands) const {
160 static SmallVector<VPValue *, 4> getOperands(ArrayRef<VPValue *> Values,
162 SmallVector<VPValue *, 4> Operands;
163 for (VPValue *V : Values) {
170 static bool areCommutative(ArrayRef<VPValue *> Values) {
175 static SmallVector<SmallVector<VPValue *, 4>, 4>
177 SmallVector<SmallVector<VPValue *, 4>, 4> Result;
196 static Optional<unsigned> getOpcode(ArrayRef<VPValue *> Values) {
223 static unsigned getLAScore(VPValue *V1, VPValue *V2, unsigned MaxLevel,
223 static unsigned getLAScore(VPValue *V1, VPValue *V2, unsigned MaxLevel,
240 std::pair<VPlanSlp::OpMode, VPValue *>
241 VPlanSlp::getBest(OpMode Mode, VPValue *Last,
242 SmallPtrSetImpl<VPValue *> &Candidates,
248 SmallVector<VPValue *, 4> BestCandidates;
251 for (auto *Candidate : Candidates) {
268 VPValue *Best = nullptr;
275 for (auto *Candidate : BestCandidates) {
318 SmallPtrSet<VPValue *, 4> Candidates;
333 VPValue *Last = FinalOrder[Op].second[Lane - 1];
334 std::pair<OpMode, VPValue *> Res =
347 void VPlanSlp::dumpBundle(ArrayRef<VPValue *> Values) {
360 VPInstruction *VPlanSlp::buildGraph(ArrayRef<VPValue *> Values) {
370 for (auto *V : Values) {
394 SmallVector<VPValue *, 4> CombinedOperands;
439 for (VPValue *V : Values)
lib/Transforms/Vectorize/VPlanValue.h 80 VPValue(const VPValue &) = delete;
81 VPValue &operator=(const VPValue &) = delete;
81 VPValue &operator=(const VPValue &) = delete;
121 void replaceAllUsesWith(VPValue *New);
124 typedef DenseMap<Value *, VPValue *> Value2VPValueTy;
125 typedef DenseMap<VPValue *, Value *> VPValue2ValueTy;
127 raw_ostream &operator<<(raw_ostream &OS, const VPValue &V);
131 class VPUser : public VPValue {
133 SmallVector<VPValue *, 2> Operands;
137 VPUser(const unsigned char SC, ArrayRef<VPValue *> Operands) : VPValue(SC) {
138 for (VPValue *Operand : Operands)
143 VPUser() : VPValue(VPValue::VPUserSC) {}
144 VPUser(ArrayRef<VPValue *> Operands) : VPUser(VPValue::VPUserSC, Operands) {}
144 VPUser(ArrayRef<VPValue *> Operands) : VPUser(VPValue::VPUserSC, Operands) {}
145 VPUser(std::initializer_list<VPValue *> Operands)
151 static inline bool classof(const VPValue *V) {
156 void addOperand(VPValue *Operand) {
162 inline VPValue *getOperand(unsigned N) const {
167 void setOperand(unsigned I, VPValue *New) { Operands[I] = New; }
169 typedef SmallVectorImpl<VPValue *>::iterator operand_iterator;
170 typedef SmallVectorImpl<VPValue *>::const_iterator const_operand_iterator;
unittests/Transforms/Vectorize/VPlanPredicatorTest.cpp 76 VPValue *CBV1 = InnerLoopH->getCondBit();
77 VPValue *CBV2 = OuterIf->getCondBit();
86 VPValue *OuterIfPred = OuterIf->getPredicate();
89 VPValue *InnerIfPred = InnerIf->getPredicate();
173 VPValue *OuterCBV = OuterIfCmpBlk->getCondBit();
174 VPValue *InnerCBV = InnerIfCmpBlk->getCondBit();
unittests/Transforms/Vectorize/VPlanSlpTest.cpp 108 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
177 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
242 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
301 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
310 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
574 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
711 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
774 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
833 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
892 SmallVector<VPValue *, 4> StoreRoot = {Store1, Store2};
usr/include/c++/7.4.0/type_traits 1983 { typedef _Up type; };
utils/unittest/googletest/include/gtest/gtest-printers.h 407 T* p, ::std::ostream* os) {
416 if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {
utils/unittest/googletest/include/gtest/gtest.h 1475 T* rhs) {