HomeSort by: relevance | last modified time | path
    Searched refs:VPValue (Results 1 - 11 of 11) sorted by relevancy

  /src/external/apache2/llvm/dist/llvm/lib/Transforms/Vectorize/
VPlanValue.h 13 /// VPValue VPUser VPDef
44 class VPValue {
60 // Hold the underlying Value, if any, attached to this VPValue.
63 /// Pointer to the VPDef that defines this VPValue. If it is nullptr, the
64 /// VPValue is not defined by any recipe modeled in VPlan.
67 VPValue(const unsigned char SC, Value *UV = nullptr, VPDef *Def = nullptr);
76 // Set \p Val as the underlying Value of this VPValue.
83 /// Return the underlying Value attached to this VPValue.
87 /// An enumeration for keeping track of the concrete subclass of VPValue that
89 /// SubclassID field of the VPValue objects. They are used for concret
    [all...]
VPlanPredicator.h 48 /// Create and return VPValue corresponding to the predicate for the edge from
50 VPValue *getOrCreateNotPredicate(VPBasicBlock *PredBB, VPBasicBlock *CurrBB);
54 VPValue *genPredicateTree(std::list<VPValue *> &Worklist);
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) {
93 VPValue *LHS = Worklist.front();
95 VPValue *RHS = Worklist.front();
99 VPValue *Or = Builder.createOr(LHS, RHS);
108 VPValue *Root = Worklist.front()
    [all...]
VPlan.h 216 DenseMap<VPValue *, PerPartValuesTy> PerPartOutput;
219 DenseMap<VPValue *, ScalarsPerPartValuesTy> PerPartScalars;
222 /// Get the generated Value for a given VPValue and a given Part. Note that
227 Value *get(VPValue *Def, unsigned Part);
229 /// Get the generated Value for a given VPValue and given Part and Lane.
230 Value *get(VPValue *Def, const VPIteration &Instance);
232 bool hasVectorValue(VPValue *Def, unsigned Part) {
238 bool hasAnyVectorValue(VPValue *Def) const {
242 bool hasScalarValue(VPValue *Def, VPIteration Instance) {
252 /// Set the generated Value for a given VPValue and a given Part
    [all...]
LoopVectorizationPlanner.h 48 ArrayRef<VPValue *> Operands) {
56 std::initializer_list<VPValue *> Operands) {
57 return createInstruction(Opcode, ArrayRef<VPValue *>(Operands));
124 VPValue *createNaryOp(unsigned Opcode, ArrayRef<VPValue *> Operands,
130 VPValue *createNaryOp(unsigned Opcode,
131 std::initializer_list<VPValue *> Operands,
133 return createNaryOp(Opcode, ArrayRef<VPValue *>(Operands), Inst);
136 VPValue *createNot(VPValue *Operand)
    [all...]
VPlanSLP.cpp 57 void VPlanSlp::addCombined(ArrayRef<VPValue *> Operands, VPInstruction *New) {
58 if (all_of(Operands, [](VPValue *V) {
62 for (VPValue *V : Operands) {
76 bool VPlanSlp::areVectorizable(ArrayRef<VPValue *> Operands) const {
78 if (!all_of(Operands, [](VPValue *Op) {
94 if (!all_of(Operands, [Opcode, Width](VPValue *Op) {
104 if (any_of(Operands, [this](VPValue *Op) {
112 [](VPValue *Op) { return Op->hasMoreThanOneUniqueUser(); })) {
141 if (!all_of(Operands, [](VPValue *Op) {
151 if (!all_of(Operands, [](VPValue *Op)
    [all...]
VPRecipeBuilder.h 24 using VPRecipeOrVPValueTy = PointerUnion<VPRecipeBase *, VPValue *>;
49 DenseMap<std::pair<BasicBlock *, BasicBlock *>, VPValue *>;
50 using BlockMaskCacheTy = DenseMap<BasicBlock *, VPValue *>;
71 VPRecipeBase *tryToWidenMemory(Instruction *I, ArrayRef<VPValue *> Operands,
77 tryToOptimizeInductionPHI(PHINode *Phi, ArrayRef<VPValue *> Operands) const;
82 tryToOptimizeInductionTruncate(TruncInst *I, ArrayRef<VPValue *> Operands,
85 /// Handle non-loop phi nodes. Return a VPValue, if all incoming values match
89 VPRecipeOrVPValueTy tryToBlend(PHINode *Phi, ArrayRef<VPValue *> Operands,
95 VPWidenCallRecipe *tryToWidenCall(CallInst *CI, ArrayRef<VPValue *> Operands,
101 VPWidenRecipe *tryToWiden(Instruction *I, ArrayRef<VPValue *> Operands) const
    [all...]
VPlanHCFGBuilder.cpp 57 DenseMap<Value *, VPValue *> IRDef2VPValue;
69 VPValue *getOrCreateVPOperand(Value *IRVal);
96 VPValue *VPVal = IRDef2VPValue[Phi];
163 // Create a new VPValue or retrieve an existing one for the Instruction's
167 VPValue *PlainCFGBuilder::getOrCreateVPOperand(Value *IRVal) {
170 // Operand has an associated VPInstruction or VPValue that was previously
174 // Operand doesn't have a previously created VPInstruction/VPValue. This
178 // For now, we use VPValue to represent A and B and classify both as external
179 // definitions. We may introduce specific VPValue subclasses for them in the
183 // A and B: Create VPValue and add it to the pool of external definitions an
    [all...]
VPlanTransforms.cpp 36 VPValue *VPV = Ingredient->getVPSingleValue();
39 VPValue DummyValue;
51 VPValue *Start = Plan->getOrAddVPValue(II.getStartValue());
VPlan.cpp 54 raw_ostream &llvm::operator<<(raw_ostream &OS, const VPValue &V) {
76 VPValue::VPValue(const unsigned char SC, Value *UV, VPDef *Def)
82 VPValue::~VPValue() {
83 assert(Users.empty() && "trying to delete a VPValue with remaining users");
89 void VPValue::print(raw_ostream &OS, VPSlotTracker &SlotTracker) const {
96 void VPValue::dump() const {
191 VPValue *VPBlockBase::getCondBit() {
195 const VPValue *VPBlockBase::getCondBit() const
    [all...]
LoopVectorize.cpp 486 void widenInstruction(Instruction &I, VPValue *Def, VPUser &Operands,
490 void widenCallInstruction(CallInst &I, VPValue *Def, VPUser &ArgOperands,
494 void widenSelectInstruction(SelectInst &I, VPValue *VPDef, VPUser &Operands,
510 void widenGEP(GetElementPtrInst *GEP, VPValue *VPDef, VPUser &Indices,
523 /// inclusive. Uses the VPValue operands from \p Operands instead of \p
525 void scalarizeInstruction(Instruction *Instr, VPValue *Def, VPUser &Operands,
533 VPValue *Def, VPValue *CastDef,
537 void packScalarIntoVectorValue(VPValue *Def, const VPIteration &Instance,
545 ArrayRef<VPValue *> VPDefs
    [all...]

Completed in 27 milliseconds