HomeSort by: relevance | last modified time | path
    Searched defs:PHI (Results 1 - 25 of 30) sorted by relevancy

1 2

  /src/external/apache2/llvm/dist/llvm/lib/Transforms/Utils/
CanonicalizeFreezeInLoops.cpp 13 // i = phi init, i.next
21 // i = phi init.fr, i.next
71 // A freeze instruction that uses an induction phi
73 // The induction phi, step instruction, the operand idx of StepInst which is
75 PHINode *PHI;
79 FrozenIndPHIInfo(PHINode *PHI, BinaryOperator *StepInst)
80 : PHI(PHI), StepInst(StepInst) {}
132 for (auto &PHI : L->getHeader()->phis()) {
134 if (!InductionDescriptor::isInductionPHI(&PHI, L, &SE, ID)
    [all...]
FlattenCFG.cpp 137 PHINode *PHI = dyn_cast<PHINode>(BB->begin());
138 if (PHI)
139 return false; // For simplicity, avoid cases containing PHI nodes.
274 // PS2 should not contain PHI node.
275 PHI = dyn_cast<PHINode>(PS2->begin());
276 if (PHI)
500 // Handle PHI node to replace its predecessors to FirstEntryBlock.
502 for (PHINode &Phi : Succ->phis()) {
503 for (unsigned i = 0, e = Phi.getNumIncomingValues(); i != e; ++i) {
504 if (Phi.getIncomingBlock(i) == SecondEntryBlock
    [all...]
SSAUpdater.cpp 77 static bool IsEquivalentPHI(PHINode *PHI,
79 unsigned PHINumValues = PHI->getNumIncomingValues();
83 // Scan the phi to see if it matches.
85 if (ValueMapping[PHI->getIncomingBlock(i)] !=
86 PHI->getIncomingValue(i)) {
110 // is relatively slow. If we already have PHI nodes in this block, walk one
147 // Otherwise, we do need a PHI: check to see if we already have one available
162 // Fill in all the predecessors of the PHI.
166 // See if the PHI node can be merged to a single value. This can happen in
167 // loop cases when we get a PHI of itself and one other value
    [all...]
PredicateInfo.cpp 93 // Operations that must appear last in a block, like successor phi node uses.
142 // We want to put the def that will get used for a given set of phi uses,
143 // before those phi uses.
145 // Note that only phi nodes uses and defs can come last.
157 // For a phi use, or a non-materialized def, return the edge it represents.
160 auto *PHI = cast<PHINode>(VD.U->getUser());
161 return std::make_pair(PHI->getIncomingBlock(*VD.U), PHI->getParent());
167 // For two phi related values, return the ordering.
270 // The set of edges along which we can only handle phi uses, due to critica
    [all...]
InlineFunction.cpp 122 /// PHI for EH values from landingpad insts.
130 // If there are PHI nodes in the unwind destination block, we need to keep
137 PHINode *PHI = cast<PHINode>(I);
138 UnwindDestPHIValues.push_back(PHI->getIncomingValueForBlock(InvokeBB));
162 /// Add incoming-PHI values to the unwind destination block for the given
171 PHINode *phi = cast<PHINode>(I); local
172 phi->addIncoming(UnwindDestPHIValues[i], src);
204 // Create a PHI for the exception values.
537 /// it rewrites them to be invokes that jump to InvokeDest and fills in the PHI
642 // Update any PHI nodes in the exceptional block to indicate that ther
    [all...]
SimplifyIndVar.cpp 724 // %iv = phi i32 {0,+,1}
732 // %M = phi (%X, %iv)
738 // If UseInst is not a PHI node then we know that IVOperand dominates
1124 /// loop. For PHI nodes, there may be multiple uses, so compute the nearest
1126 /// viable location is found: it may happen if User is a PHI and Def only comes
1127 /// to this PHI from unreachable blocks.
1130 PHINode *PHI = dyn_cast<PHINode>(User);
1131 if (!PHI)
1135 for (unsigned i = 0, e = PHI->getNumIncomingValues(); i != e; ++i) {
1136 if (PHI->getIncomingValue(i) != Def
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/CodeGen/
SwiftErrorValueTracking.cpp 33 // use" by inserting a copy or phi at the beginning of this block.
180 // Otherwise we need a phi.
192 // phi needs to use it self.
201 // We need a phi node if we have more than one predecessor with different
211 // If there is no upwards exposed used and we don't need a phi just
226 // If we don't need a phi create a copy to the upward exposed vreg.
238 // We need a phi: if there is an upwards exposed use we already have a
244 MachineInstrBuilder PHI =
246 TII->get(TargetOpcode::PHI), PHIVReg);
248 PHI.addReg(BBRegPair.second).addMBB(BBRegPair.first)
    [all...]
MachineSSAUpdater.cpp 115 /// InsertNewDef - Insert an empty PHI or IMPLICIT_DEF instruction which define
144 /// a block. Because of this, we need to insert a new PHI node in SomeBB to
183 // If an identical PHI is already in BB, just reuse it.
188 // Otherwise, we do need a PHI: insert one now.
190 MachineInstrBuilder InsertedPHI = InsertNewDef(TargetOpcode::PHI, BB,
193 // Fill in all the predecessors of the PHI.
197 // See if the PHI node can be merged to a single value. This can happen in
198 // loop cases when we get a PHI of itself and one other value.
207 LLVM_DEBUG(dbgs() << " Inserted PHI: " << *InsertedPHI << "\n");
222 /// RewriteUse - Rewrite a use of the symbolic value. This handles PHI nodes
    [all...]
EarlyIfConversion.cpp 111 /// Information about each phi in the Tail block.
113 MachineInstr *PHI;
118 PHIInfo(MachineInstr *phi)
119 : PHI(phi), TReg(0), FReg(0), CondCycles(0), TCycles(0), FCycles(0) {}
161 /// Replace PHI instructions in Tail with selects.
164 /// Insert selects and rewrite PHI operands to use them.
514 // Find PHI operands corresponding to TPred and FPred.
515 for (unsigned i = 1; i != PI.PHI->getNumOperands(); i += 2) {
516 if (PI.PHI->getOperand(i+1).getMBB() == TPred
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Transforms/InstCombine/
InstCombineNegator.cpp 271 case Instruction::PHI: {
272 // `phi` is negatible if all the incoming values are negatible.
273 auto *PHI = cast<PHINode>(I);
274 SmallVector<Value *, 4> NegatedIncomingValues(PHI->getNumOperands());
275 for (auto I : zip(PHI->incoming_values(), NegatedIncomingValues)) {
280 // All incoming values are indeed negatible. Create negated PHI node.
282 PHI->getType(), PHI->getNumOperands(), PHI->getName() + ".neg");
283 for (auto I : zip(NegatedIncomingValues, PHI->blocks())
    [all...]
InstCombineVectorOps.cpp 91 // If we have a PHI node with a vector type that is only used to feed
93 // try to replace the PHI of the vector type with a PHI of a scalar type.
97 // The users we want the PHI to have are:
100 // 3) Another operand, which will feed back into the PHI.
118 // Verify that this PHI user has one use, which is the PHI itself,
125 // Create a scalar PHI node that will replace the vector PHI node
126 // just before the current PHI node
    [all...]
  /src/external/apache2/llvm/dist/llvm/include/llvm/Transforms/Utils/
SSAUpdaterImpl.h 293 /// dominating definitions for non-PHI blocks.
303 // If this block already needs a PHI, there is nothing to do here.
311 // Need a PHI here.
326 /// FindAvailableVal - If this block requires a PHI, first check if an
327 /// existing PHI matches the PHI placement and reaching definitions computed
328 /// earlier, and if not, create a new PHI. Visit all the block's
330 /// the incoming values for a new PHI.
338 // Check if there needs to be a PHI in BB.
342 // Look for an existing PHI
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Target/AMDGPU/
AMDGPUAtomicOptimizer.cpp 621 // Create a PHI node to get our new atomic result into the exit block.
622 PHINode *const PHI = B.CreatePHI(Ty, 2);
623 PHI->addIncoming(UndefValue::get(Ty), EntryBB);
624 PHI->addIncoming(NewI, SingleLaneTerminator->getParent());
632 Value *const ExtractLo = B.CreateTrunc(PHI, B.getInt32Ty());
634 B.CreateTrunc(B.CreateLShr(PHI, 32), B.getInt32Ty());
646 BroadcastI = B.CreateIntrinsic(Intrinsic::amdgcn_readfirstlane, {}, PHI);
683 // Need a final PHI to reconverge to above the helper lane branch mask.
686 PHINode *const PHI = B.CreatePHI(Ty, 2);
687 PHI->addIncoming(UndefValue::get(Ty), PixelEntryBB)
    [all...]
  /src/external/apache2/llvm/dist/llvm/lib/Transforms/Instrumentation/
PGOMemOPSizeOpt.cpp 440 PHINode *PHI = nullptr;
442 // Insert a phi for the return values at the merge block.
444 PHI = IRBM.CreatePHI(MemOpTy, SizeIds.size() + 1, "MemOP.RVMerge");
445 MO.I->replaceAllUsesWith(PHI);
446 PHI->addIncoming(MO.I, DefaultBB);
479 PHI->addIncoming(NewMO.I, CaseBB);
  /src/external/apache2/llvm/dist/llvm/lib/Transforms/Scalar/
InferAddressSpaces.cpp 60 // %y = phi [ %generic.input, %y2 ]
68 // All address expressions (our implementation only considers phi, bitcast,
83 // %y' = phi float addrspace(3)* [ %input, undef ]
87 // %y' = phi float addrspace(3)* [ %input, %y2' ]
273 // TODO: Currently, we consider only phi, bitcast, addrspacecast, and
282 case Instruction::PHI:
311 case Instruction::PHI: {
594 case Instruction::PHI: {
596 PHINode *PHI = cast<PHINode>(I);
597 PHINode *NewPHI = PHINode::Create(NewPtrType, PHI->getNumIncomingValues())
    [all...]
LoopUnrollPass.cpp 383 // PHI-used worklist used between iterations while accumulating cost.
390 assert(PHIUsedList.empty() && "Must start with an empty phi used list");
404 // If an input to a PHI node comes from a dead path through the loop
416 // If this is a PHI node in the loop header, just add it to the PHI set.
424 // Push the incoming value from the backedge into the PHI used list
443 // recursively. If we reach a loop PHI node, simply add it to the set
462 "Cannot track PHI-used values past the first iteration!");
489 auto *PHI = dyn_cast<PHINode>(&I);
490 if (!PHI)
    [all...]
LowerMatrixIntrinsics.cpp 1170 PHINode *PHI = Builder.CreatePHI(Load->getPointerOperandType(), 3);
1171 PHI->addIncoming(Load->getPointerOperand(), Check0);
1172 PHI->addIncoming(Load->getPointerOperand(), Check1);
1173 PHI->addIncoming(NewLd, Copy);
1181 return PHI;
1247 // Create PHI nodes for the result columns to accumulate across iterations.
1250 auto *Phi = Builder.CreatePHI(TileVecTy, 2, "result.vec." + Twine(I));
1251 Phi->addIncoming(ConstantAggregateZero::get(TileVecTy),
1253 TileResult.addVector(Phi);
1254 ColumnPhis.push_back(Phi);
    [all...]
  /src/external/gpl3/gcc.old/dist/gcc/rtl-ssa/
accesses.h 71 // when the access is being printed as part of the instruction or phi node
76 // the uses of a definition, and the inputs of a phi node.
95 // we need to perform are [SET, PHI] (for set_info) and [SET, CLOBBER]
104 // resource using a phi node; the resource does not actually change value.
105 PHI,
147 // Return true if the access occurs in a phi node or an "artificial"
235 // is null, a use_info for a debug instruction, or a use_info for a phi node.
241 // a phi node.
284 // An access_info that represents the use of a resource in either a phi node
294 // Return true if the access occurs in an instruction rather than a phi node
318 phi_info *phi () const { return m_insn_or_phi.known_second (); } function in class:rtl_ssa::use_info
    [all...]
  /src/external/apache2/llvm/dist/clang/lib/CodeGen/
CGVTables.cpp 103 llvm::PHINode *PHI = CGF.Builder.CreatePHI(ReturnValue->getType(), 2);
104 PHI->addIncoming(ReturnValue, AdjustNotNull);
105 PHI->addIncoming(llvm::Constant::getNullValue(ReturnValue->getType()),
107 ReturnValue = PHI;
CGAtomic.cpp 1860 llvm::PHINode *PHI = CGF.Builder.CreatePHI(OldVal->getType(),
1862 PHI->addIncoming(OldVal, CurBB);
1867 CGF.Builder.CreateStore(PHI, NewAtomicIntAddr);
1869 auto OldRVal = ConvertIntToValueOrAtomic(PHI, AggValueSlot::ignored(),
1874 auto Res = EmitAtomicCompareExchangeOp(PHI, DesiredVal, AO, Failure);
1875 PHI->addIncoming(Res.first, CGF.Builder.GetInsertBlock());
1942 llvm::PHINode *PHI = CGF.Builder.CreatePHI(OldVal->getType(),
1944 PHI->addIncoming(OldVal, CurBB);
1949 CGF.Builder.CreateStore(PHI, NewAtomicIntAddr);
1954 auto Res = EmitAtomicCompareExchangeOp(PHI, DesiredVal, AO, Failure)
    [all...]
CGExprCXX.cpp 1247 // Set up the current-element phi.
1766 llvm::PHINode *PHI = Builder.CreatePHI(resultPtr->getType(), 2);
1767 PHI->addIncoming(resultPtr, notNullBB);
1768 PHI->addIncoming(llvm::Constant::getNullValue(resultPtr->getType()),
1771 resultPtr = PHI;
2315 llvm::PHINode *PHI = Builder.CreatePHI(Value->getType(), 2);
2316 PHI->addIncoming(Value, CastNotNull);
2317 PHI->addIncoming(llvm::Constant::getNullValue(Value->getType()), CastNull);
2319 Value = PHI;
CGClass.cpp 384 // Build a phi if we needed a null check.
390 llvm::PHINode *PHI = Builder.CreatePHI(BasePtrTy, 2, "cast.result");
391 PHI->addIncoming(Value.getPointer(), notNullBB);
392 PHI->addIncoming(llvm::Constant::getNullValue(BasePtrTy), origBB);
393 Value = Address(PHI, Value.getAlignment());
443 // Produce a PHI if we had a null-check.
450 llvm::PHINode *PHI = Builder.CreatePHI(Value->getType(), 2);
451 PHI->addIncoming(Value, CastNotNull);
452 PHI->addIncoming(llvm::Constant::getNullValue(Value->getType()), CastNull);
453 Value = PHI;
    [all...]
TargetInfo.cpp 400 llvm::PHINode *PHI = CGF.Builder.CreatePHI(Addr1.getType(), 2, Name);
401 PHI->addIncoming(Addr1.getPointer(), Block1);
402 PHI->addIncoming(Addr2.getPointer(), Block2);
404 return Address(PHI, Align);
4830 // Merge the cases with a phi.
  /src/external/apache2/llvm/dist/llvm/lib/Target/PowerPC/
PPCMIPeephole.cpp 272 // This function returns a list of all PHI nodes in the tree starting from
274 // The list initially only contains the root PHI. When we visit a PHI node, we
275 // add it to the list. We continue to look for other PHI node operands while
291 // While collecting the PHI nodes, we check if they can be converted (i.e.
292 // all the operands are either copies, implicit defs or PHI nodes).
299 } else if (Opcode != PPC::IMPLICIT_DEF && Opcode != PPC::PHI)
301 // If we detect a cycle in the PHI nodes, we exit. It would be
305 if (Opcode != PPC::PHI)
316 // This function changes the unprimed accumulator PHI nodes in the PHIs list t
    [all...]
  /src/external/bsd/pcc/dist/pcc/mip/
pass2.h 464 SLIST_HEAD(, phiinfo) phi; member in struct:basicblock
537 #define PHI (MAXOP + 1) /* Used in SSA trees */

Completed in 85 milliseconds

1 2