Searched refs:phi (Results 1 - 18 of 18) sorted by relevance

/art/compiler/optimizing/
H A Dssa_type_propagation.cc37 static bool UpdateType(HPhi* phi) { argument
38 Primitive::Type existing = phi->GetType();
41 for (size_t i = 0, e = phi->InputCount(); i < e; ++i) {
42 Primitive::Type input_type = phi->InputAt(i)->GetType();
45 phi->SetType(new_type);
59 HPhi* phi = it.Current()->AsPhi(); local
60 // Set the initial type for the phi. Use the non back edge input for reaching
62 phi->SetType(phi->InputAt(0)->GetType());
63 AddToWorklist(phi);
67 HPhi* phi = it.Current()->AsPhi(); local
90 HPhi* phi = it.Current()->GetUser()->AsPhi(); local
[all...]
H A Dssa_phi_elimination.cc22 // Add to the worklist phis referenced by non-phi instructions.
26 HPhi* phi = it.Current()->AsPhi(); local
27 if (phi->HasEnvironmentUses()) {
28 // TODO: Do we want to keep that phi alive?
31 for (HUseIterator<HInstruction> it(phi->GetUses()); !it.Done(); it.Advance()) {
35 worklist_.Add(phi);
36 phi->SetLive();
38 phi->SetDead();
44 // Process the worklist by propagating liveness to phi inputs.
46 HPhi* phi local
82 HPhi* phi = worklist_.Pop(); local
[all...]
H A Dssa_type_propagation.h35 void AddToWorklist(HPhi* phi);
36 void AddDependentInstructionsToWorklist(HPhi* phi);
H A Dssa_builder.cc36 HPhi* phi = it.Current()->AsPhi(); local
38 HInstruction* input = ValueOfLocal(block->GetPredecessors().Get(pred), phi->GetRegNumber());
39 phi->AddInput(input);
75 HPhi* phi = new (GetGraph()->GetArena()) HPhi( local
77 block->AddPhi(phi);
78 current_locals_->Put(local, phi);
109 HPhi* phi = new (GetGraph()->GetArena()) HPhi( local
113 phi->SetRawInputAt(i, value);
115 block->AddPhi(phi);
116 value = phi;
[all...]
H A Dregister_allocator_test.cc179 * phi
221 * phi
278 * phi +
308 HPhi* phi = loop_header->GetFirstPhi()->AsPhi(); local
310 LiveInterval* phi_interval = phi->GetLiveInterval();
311 LiveInterval* loop_update = phi->InputAt(1)->GetLiveInterval();
H A Dssa_liveness_analysis.cc96 // start and end position. Non-phi instructions have a distinct lifetime position than
173 // Set phi inputs of successors of this block corresponding to this block
180 HInstruction* phi = it.Current(); local
181 HInstruction* input = phi->InputAt(phi_input_index);
182 input->GetLiveInterval()->AddPhiUse(phi, phi_input_index, block);
183 // A phi input whose last user is the phi dies at the end of the predecessor block,
184 // and not at the phi's lifetime position.
H A Dnodes.cc324 void HBasicBlock::AddPhi(HPhi* phi) { argument
325 Add(&phis_, this, phi);
346 void HBasicBlock::RemovePhi(HPhi* phi) { argument
347 Remove(&phis_, this, phi);
H A Dregister_allocator.cc964 // Resolve phi inputs. Order does not matter.
968 HInstruction* phi = it.Current(); local
972 HInstruction* input = phi->InputAt(i);
975 Location destination = ConvertToLocation(phi->GetLiveInterval());
H A Dnodes.h355 void AddPhi(HPhi* phi);
356 void RemovePhi(HPhi* phi);
/art/compiler/sea_ir/debug/
H A Ddot_gen.cc165 void DotGenerationVisitor::Visit(PhiInstructionNode* phi) { argument
166 dot_text_ += "// PhiInstruction: \n" + phi->StringId() +
167 " [label=\"[" + phi->StringId() + "] PHI(";
168 dot_text_ += art::StringPrintf("%d", phi->GetRegisterNumber());
171 ToDotSSAEdges(phi);
H A Ddot_gen.h58 void Visit(PhiInstructionNode* phi);
/art/compiler/sea_ir/code_gen/
H A Dcode_gen.cc29 void CodeGenPrepassVisitor::Visit(PhiInstructionNode* phi) { argument
30 Region* r = phi->GetRegion();
35 llvm::Type::getInt32Ty(*llvm_data_->context_), predecessors->size(), phi->StringId());
36 llvm_data_->AddValue(phi, llvm_phi);
256 void CodeGenPostpassVisitor::Visit(PhiInstructionNode* phi) { argument
257 std::cout << "10. Instruction: Phi(" << phi->GetRegisterNumber() << ")" << std::endl;
258 Region* r = phi->GetRegion();
262 // Prepass (CodeGenPrepassVisitor) should create the phi function value.
263 llvm::PHINode* llvm_phi = (llvm::PHINode*) llvm_data_->GetValue(phi);
267 std::vector<InstructionNode*>* defining_instructions = phi
[all...]
/art/compiler/sea_ir/ir/
H A Dvisitor.h79 virtual void Traverse(PhiInstructionNode* phi) { } argument
H A Dsea.cc320 // Pass: Actually add phi-nodes to regions.
351 // Rename phi nodes defined in the current region.
379 // Fill in uses of phi functions in CFG successor regions.
596 PhiInstructionNode* phi = (*phi_it); local
597 int reg_no = phi->GetRegisterNumber();
599 phi->RenameToSSA(reg_no, definition, predecessor_id);
/art/compiler/dex/
H A Dssa_transformation.cc228 * TODO - evaluate whether phi will ever need to be inserted into exit
455 * The calculated result is used for phi-node pruning - where we only need to
456 * insert a phi node if the variable is live-in to the block.
495 /* Insert phi nodes to for each variable to the dominance frontiers */
524 * Insert a phi node for dalvik_reg in the phi_blocks if the Dalvik
529 /* Variable will be clobbered before being used - no need for phi */
533 MIR *phi = NewMIR(); local
534 phi->dalvikInsn.opcode = static_cast<Instruction::Code>(kMirOpPhi);
535 phi->dalvikInsn.vA = dalvik_reg;
536 phi
[all...]
H A Dmir_optimization.cc471 MIR* phi = FindPhi(tk_tk, if_true->ssa_rep->defs[0]); local
472 if ((phi != NULL) && (if_true->dalvikInsn.vA == if_false->dalvikInsn.vA)) {
534 if (phi->ssa_rep->num_uses == 2) {
535 mir->ssa_rep->defs[0] = phi->ssa_rep->defs[0];
536 phi->dalvikInsn.opcode = static_cast<Instruction::Code>(kMirOpNop);
541 BasicBlockId* incoming = phi->meta.phi_incoming;
542 for (int i = 0; i < phi->ssa_rep->num_uses; i++) {
543 if (phi->ssa_rep->uses[i] == live_def) {
547 for (int i = 0; i < phi->ssa_rep->num_uses; i++) {
548 if (phi
[all...]
/art/compiler/llvm/
H A Dgbc_expander.cc531 // Update the phi-instructions in the successor basic block
557 // Iterate every phi instructions in the succeeding basic block
562 llvm::PHINode *phi = llvm::dyn_cast<llvm::PHINode>(inst_iter); local
564 if (!phi) {
565 break; // Meet non-phi instruction. Done.
568 if (handler_phi[phi] == NULL) {
569 handler_phi[phi] = llvm::PHINode::Create(phi->getType(), 1);
573 llvm::PHINode* new_phi = irb_.CreatePHI(phi->getType(), rewrite_pair.size());
578 new_phi->addIncoming(phi
624 llvm::PHINode *phi = llvm::dyn_cast<llvm::PHINode>(inst_iter); local
1802 llvm::PHINode* phi = irb_.CreatePHI(irb_.getJObjectTy(), 2); local
1867 llvm::PHINode* phi = irb_.CreatePHI(irb_.getJObjectTy(), 2); local
2103 llvm::PHINode* phi = irb_.CreatePHI(irb_.getJObjectTy(), 2); local
2269 llvm::PHINode* phi = irb_.CreatePHI(irb_.getJIntTy(), 3); local
[all...]
/art/compiler/dex/portable/
H A Dmir_to_gbc.cc1575 ::llvm::PHINode* phi = irb_->CreatePHI(phi_type, mir->ssa_rep->num_uses); local
1590 phi->addIncoming(GetLLVMValue(loc.orig_sreg),
1593 DefineValueOnly(phi, rl_dest.orig_sreg);
1607 ::llvm::Value* phi = GetLLVMValue(rl_dest.orig_sreg); local
1608 if (1) SetVregOnValue(phi, rl_dest.orig_sreg);

Completed in 1458 milliseconds