Searched refs:PHI (Results 1 - 25 of 75) sorted by relevance

123

/external/llvm/lib/CodeGen/
H A DMachineSSAUpdater.cpp51 /// updates. ProtoValue is the value used to name PHI nodes.
110 /// InsertNewDef - Insert an empty PHI or IMPLICIT_DEF instruction which define
139 /// a block. Because of this, we need to insert a new PHI node in SomeBB to
181 // If an identical PHI is already in BB, just reuse it.
186 // Otherwise, we do need a PHI: insert one now.
188 MachineInstrBuilder InsertedPHI = InsertNewDef(TargetOpcode::PHI, BB,
191 // Fill in all the predecessors of the PHI.
195 // See if the PHI node can be merged to a single value. This can happen in
196 // loop cases when we get a PHI of itself and one other value.
205 DEBUG(dbgs() << " Inserted PHI
252 MachineInstr *PHI; member in class:llvm::SSAUpdaterTraits::PHI_iterator
269 PHI_begin(PhiT *PHI) argument
270 PHI_end(PhiT *PHI) argument
300 MachineInstr *PHI = InsertNewDef(TargetOpcode::PHI, BB, Loc, local
308 AddPHIOperand(MachineInstr *PHI, unsigned Val, MachineBasicBlock *Pred) argument
330 MachineInstr *PHI = ValueIsPHI(Val, Updater); local
338 GetPHIValue(MachineInstr *PHI) argument
[all...]
H A DEarlyIfConversion.cpp111 MachineInstr *PHI; member in struct:__anon25739::SSAIfConv::PHIInfo
117 : PHI(phi), TReg(0), FReg(0), CondCycles(0), TCycles(0), FCycles(0) {}
147 /// Replace PHI instructions in Tail with selects.
150 /// Insert selects and rewrite PHI operands to use them.
412 // Find PHI operands corresponding to TPred and FPred.
413 for (unsigned i = 1; i != PI.PHI->getNumOperands(); i += 2) {
414 if (PI.PHI->getOperand(i+1).getMBB() == TPred)
415 PI.TReg = PI.PHI->getOperand(i).getReg();
416 if (PI.PHI->getOperand(i+1).getMBB() == FPred)
417 PI.FReg = PI.PHI
[all...]
H A DMachineTraceMetrics.cpp659 // Get the input data dependencies of a PHI instruction, using Pred as the
669 assert(UseMI->isPHI() && UseMI->getNumOperands() % 2 && "Bad PHI");
1054 for (const auto &PHI : *Succ) {
1055 if (!PHI.isPHI())
1058 getPHIDeps(&PHI, Deps, MBB, MTM.MRI);
1060 // Loop header PHI heights are all 0.
1061 unsigned Height = TBI.Succ ? Cycles.lookup(&PHI).Height : 0;
1062 DEBUG(dbgs() << "pred\t" << Height << '\t' << PHI);
1063 if (pushDepHeight(Deps.front(), &PHI, Height,
1085 // Don't process PHI dep
[all...]
/external/llvm/include/llvm/Target/
H A DTargetOpcodes.h26 PHI = 0, enumerator in enum:llvm::TargetOpcode::__anon25635
/external/llvm/lib/Transforms/Utils/
H A DSSAUpdater.cpp64 static bool IsEquivalentPHI(PHINode *PHI, argument
66 unsigned PHINumValues = PHI->getNumIncomingValues();
72 if (ValueMapping[PHI->getIncomingBlock(i)] !=
73 PHI->getIncomingValue(i)) {
97 // is relatively slow. If we already have PHI nodes in this block, walk one
135 // Otherwise, we do need a PHI: check to see if we already have one available
152 // Fill in all the predecessors of the PHI.
156 // See if the PHI node can be merged to a single value. This can happen in
157 // loop cases when we get a PHI of itself and one other value.
163 // Set the DebugLoc of the inserted PHI, i
219 PHINode *PHI; member in class:llvm::SSAUpdaterTraits::PHI_iterator
235 PHI_begin(PhiT *PHI) argument
236 PHI_end(PhiT *PHI) argument
266 PHINode *PHI = PHINode::Create(Updater->ProtoType, NumPreds, local
273 AddPHIOperand(PHINode *PHI, Value *Val, BasicBlock *Pred) argument
292 PHINode *PHI = ValueIsPHI(Val, Updater); local
300 GetPHIValue(PHINode *PHI) argument
[all...]
H A DFlattenCFG.cpp127 PHINode *PHI = dyn_cast<PHINode>(BB->begin()); local
128 if (PHI)
129 return false; // For simplicity, avoid cases containing PHI nodes.
262 // PS2 should not contain PHI node.
263 PHI = dyn_cast<PHINode>(PS2->begin());
264 if (PHI)
H A DInlineFunction.cpp50 PHINode *InnerEHValuesPHI; ///< PHI for EH values from landingpad insts.
57 // If there are PHI nodes in the unwind destination block, we need to keep
64 PHINode *PHI = cast<PHINode>(I); local
65 UnwindDestPHIValues.push_back(PHI->getIncomingValueForBlock(InvokeBB));
89 /// addIncomingPHIValuesFor - Add incoming-PHI values to the unwind
131 // Create a PHI for the exception values.
163 /// it rewrites them to be invokes that jump to InvokeDest and fills in the PHI
203 // Update any PHI nodes in the exceptional block to indicate that there is
256 // Now that everything is happy, we have one final detail. The PHI nodes in
259 // PHI nod
921 PHINode *PHI = nullptr; local
[all...]
H A DSimplifyCFG.cpp127 // successor, and if that successor has a PHI node, and if *that* PHI node has
148 /// unconditional branch. PhiNodes will store all PHI nodes in common
158 // We fold the unconditional branch if we can easily update all PHI nodes in
187 /// AddPredecessorToBlock - Update PHI nodes in Succ to indicate that there will
189 /// flowing into the PHI nodes will be the same as those coming in from
610 // Remove PHI node entries for the dead edge.
684 // Remove PHI node entries for dead edges.
923 // sure we update the number of entries in the PHI nodes for these
1093 // Unfortunately, the successors of the if/else blocks may have PHI node
3306 PHINode *PHI = FindPHIForConditionForwarding(CaseValue, CaseDest, local
3761 PHINode *PHI = PHIs[I]; local
3788 PHINode *PHI = DefaultResultsList[I].first; local
3874 PHINode *PHI = PHIs[I]; local
[all...]
H A DSimplifyIndVar.cpp310 if (PHINode *PHI = dyn_cast<PHINode>(UseInst))
311 UseBB = PHI->getIncomingBlock(U);
/external/llvm/include/llvm/Transforms/Utils/
H A DSSAUpdaterImpl.h281 /// dominating definitions for non-PHI blocks.
291 // If this block already needs a PHI, there is nothing to do here.
299 // Need a PHI here.
314 /// FindAvailableVal - If this block requires a PHI, first check if an
315 /// existing PHI matches the PHI placement and reaching definitions computed
316 /// earlier, and if not, create a new PHI. Visit all the block's
318 /// the incoming values for a new PHI.
326 // Check if there needs to be a PHI in BB.
330 // Look for an existing PHI
335 ValT PHI = Traits::CreateEmptyPHI(Info->BB, Info->NumPreds, Updater); local
355 PhiT *PHI = Traits::ValueIsNewPHI(Info->AvailableVal, Updater); local
397 CheckIfPHIMatches(PhiT *PHI) argument
[all...]
/external/llvm/lib/Transforms/ObjCARC/
H A DObjCARCContract.cpp26 // TODO: ObjCARCContract could insert PHI nodes when uses aren't
466 if (PHINode *PHI = dyn_cast<PHINode>(U.getUser())) {
467 // For PHI nodes, insert the bitcast in the predecessor block.
469 BasicBlock *BB = PHI->getIncomingBlock(ValNo);
473 // While we're here, rewrite all edges for this PHI, rather
476 for (unsigned i = 0, e = PHI->getNumIncomingValues(); i != e; ++i)
477 if (PHI->getIncomingBlock(i) == BB) {
480 &PHI->getOperandUse(
483 PHI->setIncomingValue(i, Replacement);
/external/llvm/lib/Transforms/Scalar/
H A DScalarizer.cpp555 bool Scalarizer::visitPHINode(PHINode &PHI) { argument
556 VectorType *VT = dyn_cast<VectorType>(PHI.getType());
561 IRBuilder<> Builder(PHI.getParent(), &PHI);
565 unsigned NumOps = PHI.getNumOperands();
568 PHI.getName() + ".i" + Twine(I));
571 Scatterer Op = scatter(&PHI, PHI.getIncomingValue(I));
572 BasicBlock *IncomingBlock = PHI.getIncomingBlock(I);
576 gather(&PHI, Re
[all...]
H A DConstantHoisting.cpp227 assert(Entry != Inst->getParent() && "PHI or landing pad in entry block!");
436 /// instruction Mat. If the instruction is a PHI node then special
442 if (auto PHI = dyn_cast<PHINode>(Inst)) {
443 // Check if any previous operand of the PHI node has the same incoming basic
449 BasicBlock *IncomingBB = PHI->getIncomingBlock(Idx);
451 if (PHI->getIncomingBlock(i) == IncomingBB) {
452 Value *IncomingVal = PHI->getIncomingValue(i);
/external/llvm/lib/Analysis/
H A DCaptureTracking.cpp144 case Instruction::PHI:
H A DMemoryBuiltins.cpp752 SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitPHINode(PHINode &PHI) { argument
754 PHINode *SizePHI = Builder.CreatePHI(IntTy, PHI.getNumIncomingValues());
755 PHINode *OffsetPHI = Builder.CreatePHI(IntTy, PHI.getNumIncomingValues());
758 CacheMap[&PHI] = std::make_pair(SizePHI, OffsetPHI);
760 // compute offset/size for each PHI incoming pointer
761 for (unsigned i = 0, e = PHI.getNumIncomingValues(); i != e; ++i) {
762 Builder.SetInsertPoint(PHI.getIncomingBlock(i)->getFirstInsertionPt());
763 SizeOffsetEvalType EdgeData = compute_(PHI.getIncomingValue(i));
772 SizePHI->addIncoming(EdgeData.first, PHI.getIncomingBlock(i));
773 OffsetPHI->addIncoming(EdgeData.second, PHI
[all...]
H A DIVUsers.cpp151 // Do not infinitely recurse on PHI nodes.
159 if (PHINode *PHI = dyn_cast<PHINode>(User)) {
162 UseBB = PHI->getIncomingBlock(ValNo);
167 // Descend recursively, but not into PHI nodes outside the current loop.
260 // them by stride. Start by finding all of the PHI nodes in the header for
/external/llvm/examples/OCaml-Kaleidoscope/Chapter5/
H A Dcodegen.ml116 (* Start the PHI node with an entry for start. *)
119 (* Within the loop, the variable is defined equal to the PHI node. If it
159 (* Add a new entry to the PHI node for the backedge. *)
/external/llvm/lib/CodeGen/SelectionDAG/
H A DSelectionDAGISel.cpp131 STATISTIC(NumFastIselFailPHI,"Fast isel fails on PHI");
368 /// SplitCriticalSideEffectEdges - Look for critical edges with a PHI value that
382 // For each block with a PHI node, check to see if any of the input values
385 // PHI.
392 // Since this block has a PHI Node, we assume it has multiple input
796 // update PHI nodes later on.
994 case Instruction::PHI: NumFastIselFailPHI++; return;
1350 // PHI nodes in successors.
1353 MachineInstrBuilder PHI(*MF, FuncInfo->PHINodesToUpdate[i].first);
1354 assert(PHI
[all...]
/external/llvm/examples/OCaml-Kaleidoscope/Chapter6/
H A Dcodegen.ml134 (* Start the PHI node with an entry for start. *)
137 (* Within the loop, the variable is defined equal to the PHI node. If it
177 (* Add a new entry to the PHI node for the backedge. *)
/external/clang/lib/CodeGen/
H A DCGExprCXX.cpp1329 llvm::PHINode *PHI = Builder.CreatePHI(result->getType(), 2); local
1330 PHI->addIncoming(result, notNullBB);
1331 PHI->addIncoming(llvm::Constant::getNullValue(result->getType()),
1334 result = PHI;
1759 llvm::PHINode *PHI = Builder.CreatePHI(Value->getType(), 2); local
1760 PHI->addIncoming(Value, CastNotNull);
1761 PHI->addIncoming(llvm::Constant::getNullValue(Value->getType()), CastNull);
1763 Value = PHI;
H A DCGVTables.cpp100 llvm::PHINode *PHI = CGF.Builder.CreatePHI(ReturnValue->getType(), 2); local
101 PHI->addIncoming(ReturnValue, AdjustNotNull);
102 PHI->addIncoming(llvm::Constant::getNullValue(ReturnValue->getType()),
104 ReturnValue = PHI;
/external/llvm/unittests/Transforms/Utils/
H A DIntegerDivision.cpp80 EXPECT_TRUE(Quotient && Quotient->getOpcode() == Instruction::PHI);
201 EXPECT_TRUE(Quotient && Quotient->getOpcode() == Instruction::PHI);
/external/llvm/include/llvm/Analysis/
H A DMemoryBuiltins.h269 SizeOffsetEvalType visitPHINode(PHINode &PHI);
/external/llvm/include/llvm/CodeGen/
H A DMachineTraceMetrics.h92 /// Doesn't count PHI and COPY instructions that are likely to be removed.
213 /// This does not include PHI uses in the current block, but it does
214 /// include PHI uses in deeper blocks.
286 /// Return the Depth of a PHI instruction in a trace center block successor.
287 /// The PHI does not have to be part of the trace.
288 unsigned getPHIDepth(const MachineInstr *PHI) const;
/external/llvm/lib/Target/R600/
H A DSIFixSGPRCopies.cpp25 /// %vreg4 <vsrc> = PHI %vreg1 <vsrc>, <BB#0>, %vreg3 <vrsc>, <BB#1>
40 /// %vreg4 <sgpr> = PHI %vreg0 <sgpr>, <BB#0>, %vreg3 <vsrc>, <BB#1>
43 /// Now that the result of the PHI instruction is an SGPR, the register
55 /// %vreg4 <sgpr> = PHI %vreg0 <sgpr>, <BB#0>, %vreg3 <sgpr>, <BB#1>
60 /// In order to avoid this problem, this pass searches for PHI instructions
62 /// <vgpr> if the user of the PHI's definition register is a vector instruction.
63 /// If the PHI's definition class is constrained to <vgpr> then the coalescer
138 // The Reg parameter to the function must always be defined by either a PHI
218 case AMDGPU::PHI: {
219 DEBUG(dbgs() << " Fixing PHI
[all...]

Completed in 354 milliseconds

123