reference, declarationdefinition
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) {