Home
last modified time | relevance | path

Searched refs:VPInstruction (Results 1 – 11 of 11) sorted by relevance

/openbsd/src/gnu/llvm/llvm/lib/Transforms/Vectorize/
DVPlanSLP.cpp42 VPInstruction *VPlanSlp::markFailed() { in markFailed()
49 void VPlanSlp::addCombined(ArrayRef<VPValue *> Operands, VPInstruction *New) { in addCombined()
51 return cast<VPInstruction>(V)->getUnderlyingInstr(); in addCombined()
55 Type *T = cast<VPInstruction>(V)->getUnderlyingInstr()->getType(); in addCombined()
71 return Op && isa<VPInstruction>(Op) && in areVectorizable()
72 cast<VPInstruction>(Op)->getUnderlyingInstr(); in areVectorizable()
83 cast<VPInstruction>(Operands[0])->getUnderlyingInstr(); in areVectorizable()
87 const Instruction *I = cast<VPInstruction>(Op)->getUnderlyingInstr(); in areVectorizable()
97 return cast<VPInstruction>(Op)->getParent() != &this->BB; in areVectorizable()
115 VPBasicBlock *Parent = cast<VPInstruction>(Operands[0])->getParent(); in areVectorizable()
[all …]
DVPlanRecipes.cpp192 void VPInstruction::generateInstruction(VPTransformState &State, in generateInstruction()
207 case VPInstruction::Not: { in generateInstruction()
213 case VPInstruction::ICmpULE: { in generateInstruction()
228 case VPInstruction::ActiveLaneMask: { in generateInstruction()
242 case VPInstruction::FirstOrderRecurrenceSplice: { in generateInstruction()
267 case VPInstruction::CanonicalIVIncrement: in generateInstruction()
268 case VPInstruction::CanonicalIVIncrementNUW: { in generateInstruction()
271 bool IsNUW = getOpcode() == VPInstruction::CanonicalIVIncrementNUW; in generateInstruction()
286 case VPInstruction::CanonicalIVIncrementForPart: in generateInstruction()
287 case VPInstruction::CanonicalIVIncrementForPartNUW: { in generateInstruction()
[all …]
DLoopVectorizationPlanner.h47 VPInstruction *createInstruction(unsigned Opcode,
50 VPInstruction *Instr = new VPInstruction(Opcode, Operands, DL, Name);
56 VPInstruction *createInstruction(unsigned Opcode,
119 VPInstruction *insert(VPInstruction *I) const { in insert()
131 VPInstruction *NewVPInst = createInstruction(Opcode, Operands, DL, Name);
141 return createInstruction(VPInstruction::Not, {Operand}, DL, Name);
DVPlanTransforms.cpp63 assert(isa<VPInstruction>(&Ingredient) && in VPInstructionsToVPRecipes()
487 static bool canSimplifyBranchOnCond(VPInstruction *Term) { in canSimplifyBranchOnCond()
488 VPInstruction *Not = dyn_cast<VPInstruction>(Term->getOperand(0)); in canSimplifyBranchOnCond()
489 if (!Not || Not->getOpcode() != VPInstruction::Not) in canSimplifyBranchOnCond()
492 VPInstruction *ALM = dyn_cast<VPInstruction>(Not->getOperand(0)); in canSimplifyBranchOnCond()
493 return ALM && ALM->getOpcode() == VPInstruction::ActiveLaneMask; in canSimplifyBranchOnCond()
503 auto *Term = dyn_cast<VPInstruction>(&ExitingVPBB->back()); in optimizeForVFAndUF()
509 if (!Term || (Term->getOpcode() != VPInstruction::BranchOnCount && in optimizeForVFAndUF()
510 (Term->getOpcode() != VPInstruction::BranchOnCond || in optimizeForVFAndUF()
526 new VPInstruction(VPInstruction::BranchOnCond, in optimizeForVFAndUF()
DVPlan.h779 class VPInstruction : public VPRecipeBase, public VPValue {
820 VPInstruction(unsigned Opcode, ArrayRef<VPValue *> Operands, DebugLoc DL,
825 VPInstruction(unsigned Opcode, std::initializer_list<VPValue *> Operands,
827 : VPInstruction(Opcode, ArrayRef<VPValue *>(Operands), DL, Name) {} in VPInstruction() function
831 VPInstruction *clone() const { in VP_CLASSOF_IMPL()
833 return new VPInstruction(Opcode, Operands, DL, Name); in VP_CLASSOF_IMPL()
874 case VPInstruction::BranchOnCond: in hasResult()
875 case VPInstruction::BranchOnCount: in hasResult()
894 case VPInstruction::ActiveLaneMask: in onlyFirstLaneUsed()
895 case VPInstruction::CanonicalIVIncrement: in onlyFirstLaneUsed()
[all …]
DVPlanVerifier.cpp290 auto *LastInst = dyn_cast<VPInstruction>(std::prev(Exiting->end())); in verifyPlanIsValid()
291 if (!LastInst || (LastInst->getOpcode() != VPInstruction::BranchOnCount && in verifyPlanIsValid()
292 LastInst->getOpcode() != VPInstruction::BranchOnCond)) { in verifyPlanIsValid()
DVPlan.cpp55 const VPInstruction *Instr = dyn_cast<VPInstruction>(&V); in operator <<()
443 auto *VPI = dyn_cast<VPInstruction>(R); in hasConditionalTerminator()
446 (VPI && (VPI->getOpcode() == VPInstruction::BranchOnCond || in hasConditionalTerminator()
447 VPI->getOpcode() == VPInstruction::BranchOnCount)); in hasConditionalTerminator()
646 auto *VPI = cast<VPInstruction>(U); in prepareToExecute()
648 VPInstruction::CanonicalIVIncrement || in prepareToExecute()
650 VPInstruction::CanonicalIVIncrementNUW; in prepareToExecute()
1052 assert(isa<VPInstruction>(&VPI) && "Can only handle VPInstructions"); in visitBlock()
1053 auto *VPInst = cast<VPInstruction>(&VPI); in visitBlock()
1064 Old2New[IG] = new InterleaveGroup<VPInstruction>( in visitBlock()
DVPlanHCFGBuilder.cpp224 new VPInstruction(VPInstruction::BranchOnCond, {Cond})); in createVPInstructionsForVPBB()
248 NewVPV = cast<VPInstruction>( in createVPInstructionsForVPBB()
DLoopVectorize.cpp8125 BlockMask = Builder.createNaryOp(VPInstruction::ActiveLaneMask, {IV, TC}, in createBlockInMask()
8129 BlockMask = Builder.createNaryOp(VPInstruction::ICmpULE, {IV, BTC}); in createBlockInMask()
8417 new VPInstruction(Instruction::Select, {Mask, Ops[1], One}, in tryToWiden()
8734 new VPInstruction(HasNUW ? VPInstruction::CanonicalIVIncrementNUW in addCanonicalIVRecipes()
8735 : VPInstruction::CanonicalIVIncrement, in addCanonicalIVRecipes()
8750 new VPInstruction(HasNUW ? VPInstruction::CanonicalIVIncrementForPartNUW in addCanonicalIVRecipes()
8751 : VPInstruction::CanonicalIVIncrementForPart, in addCanonicalIVRecipes()
8757 auto *EntryALM = new VPInstruction(VPInstruction::ActiveLaneMask, in addCanonicalIVRecipes()
8769 new VPInstruction(HasNUW ? VPInstruction::CanonicalIVIncrementForPartNUW in addCanonicalIVRecipes()
8770 : VPInstruction::CanonicalIVIncrementForPart, in addCanonicalIVRecipes()
[all …]
DVPlanValue.h47 friend class VPInstruction; variable
/openbsd/src/gnu/llvm/llvm/docs/Proposals/
DVectorizationPlan.rst162 :VPInstruction:
163 A VPInstruction is both a VPRecipe and a VPUser. It models a single