Lines Matching refs:State
162 void VPBasicBlock::execute(VPTransformState *State) { in execute() argument
163 bool Replica = State->Instance && in execute()
164 !(State->Instance->Part == 0 && State->Instance->Lane == 0); in execute()
165 VPBasicBlock *PrevVPBB = State->CFG.PrevVPBB; in execute()
167 BasicBlock *NewBB = State->CFG.PrevBB; // Reuse it if possible. in execute()
182 NewBB = createEmptyBasicBlock(State->CFG); in execute()
183 State->Builder.SetInsertPoint(NewBB); in execute()
185 UnreachableInst *Terminator = State->Builder.CreateUnreachable(); in execute()
186 State->Builder.SetInsertPoint(Terminator); in execute()
188 Loop *L = State->LI->getLoopFor(State->CFG.LastBB); in execute()
189 L->addBasicBlockToLoop(NewBB, *State->LI); in execute()
190 State->CFG.PrevBB = NewBB; in execute()
197 State->CFG.VPBB2IRBB[this] = NewBB; in execute()
198 State->CFG.PrevVPBB = this; in execute()
201 Recipe.execute(*State); in execute()
213 Value *NewCond = State->Callback.getOrCreateVectorValues(IRCBV, 0); in execute()
214 NewCond = State->Builder.CreateExtractElement(NewCond, in execute()
215 State->Builder.getInt32(0)); in execute()
231 void VPRegionBlock::execute(VPTransformState *State) { in execute() argument
252 Block->execute(State); in execute()
257 assert(!State->Instance && "Replicating a Region with non-null instance."); in execute()
260 State->Instance = {0, 0}; in execute()
262 for (unsigned Part = 0, UF = State->UF; Part < UF; ++Part) { in execute()
263 State->Instance->Part = Part; in execute()
264 for (unsigned Lane = 0, VF = State->VF; Lane < VF; ++Lane) { in execute()
265 State->Instance->Lane = Lane; in execute()
269 Block->execute(State); in execute()
275 State->Instance.reset(); in execute()
287 void VPInstruction::generateInstruction(VPTransformState &State, in generateInstruction() argument
289 IRBuilder<> &Builder = State.Builder; in generateInstruction()
292 Value *A = State.get(getOperand(0), Part); in generateInstruction()
293 Value *B = State.get(getOperand(1), Part); in generateInstruction()
295 State.set(this, V, Part); in generateInstruction()
301 Value *A = State.get(getOperand(0), Part); in generateInstruction()
303 State.set(this, V, Part); in generateInstruction()
307 Value *IV = State.get(getOperand(0), Part); in generateInstruction()
308 Value *TC = State.get(getOperand(1), Part); in generateInstruction()
310 State.set(this, V, Part); in generateInstruction()
318 void VPInstruction::execute(VPTransformState &State) { in execute() argument
319 assert(!State.Instance && "VPInstruction executing an Instance"); in execute()
320 for (unsigned Part = 0; Part < State.UF; ++Part) in execute()
321 generateInstruction(State, Part); in execute()
360 void VPlan::execute(VPTransformState *State) { in execute() argument
363 Value *TC = State->TripCount; in execute()
364 IRBuilder<> Builder(State->CFG.PrevBB->getTerminator()); in execute()
372 State->VPValue2Value[Entry.second] = Entry.first; in execute()
374 BasicBlock *VectorPreHeaderBB = State->CFG.PrevBB; in execute()
382 Loop *L = State->LI->getLoopFor(VectorHeaderBB); in execute()
383 L->addBasicBlockToLoop(VectorLatchBB, *State->LI); in execute()
389 State->Builder.SetInsertPoint(VectorHeaderBB); in execute()
390 UnreachableInst *Terminator = State->Builder.CreateUnreachable(); in execute()
391 State->Builder.SetInsertPoint(Terminator); in execute()
394 State->CFG.PrevVPBB = nullptr; in execute()
395 State->CFG.PrevBB = VectorHeaderBB; in execute()
396 State->CFG.LastBB = VectorLatchBB; in execute()
399 Block->execute(State); in execute()
403 for (auto VPBB : State->CFG.VPBBsToFix) { in execute()
406 BasicBlock *BB = State->CFG.VPBB2IRBB[VPBB]; in execute()
414 BBTerminator->setSuccessor(Idx, State->CFG.VPBB2IRBB[SuccVPBB]); in execute()
420 BasicBlock *LastBB = State->CFG.PrevBB; in execute()
431 bool Merged = MergeBlockIntoPredecessor(VectorLatchBB, nullptr, State->LI); in execute()
438 updateDominatorTree(State->DT, VectorPreHeaderBB, VectorLatchBB); in execute()