Lines Matching refs:HInstruction

53 static void RemoveFromCycle(HInstruction* instruction) {  in RemoveFromCycle()
86 static bool IsZeroExtensionAndGet(HInstruction* instruction,
88 /*out*/ HInstruction** operand);
92 static bool IsSignExtensionAndGet(HInstruction* instruction, in IsSignExtensionAndGet()
94 /*out*/ HInstruction** operand) { in IsSignExtensionAndGet()
132 HInstruction* conv = instruction->InputAt(0); in IsSignExtensionAndGet()
157 static bool IsZeroExtensionAndGet(HInstruction* instruction, in IsZeroExtensionAndGet()
159 /*out*/ HInstruction** operand) { in IsZeroExtensionAndGet()
197 HInstruction* conv = instruction->InputAt(0); in IsZeroExtensionAndGet()
220 static bool IsNarrowerOperands(HInstruction* a, in IsNarrowerOperands()
221 HInstruction* b, in IsNarrowerOperands()
223 /*out*/ HInstruction** r, in IsNarrowerOperands()
224 /*out*/ HInstruction** s, in IsNarrowerOperands()
243 static bool IsNarrowerOperand(HInstruction* a, in IsNarrowerOperand()
245 /*out*/ HInstruction** r, in IsNarrowerOperand()
272 static bool IsAddConst(HInstruction* instruction, in IsAddConst()
273 /*out*/ HInstruction** a, in IsAddConst()
274 /*out*/ HInstruction** b, in IsAddConst()
305 HInstruction* instruction, in IsAddConst2()
306 /*out*/ HInstruction** a, in IsAddConst2()
307 /*out*/ HInstruction** b, in IsAddConst2()
323 HInstruction* instruction, in IsSubConst2()
324 /*out*/ HInstruction** a, in IsSubConst2()
325 /*out*/ HInstruction** b) { in IsSubConst2()
342 static bool HasReductionFormat(HInstruction* reduction, HInstruction* phi) { in HasReductionFormat()
370 inline HInstruction* Insert(HBasicBlock* block, HInstruction* instruction) { in Insert()
379 static bool CheckInductionSetFullyRemoved(ScopedArenaSet<HInstruction*>* iset) { in CheckInductionSetFullyRemoved()
380 for (HInstruction* instr : *iset) { in CheckInductionSetFullyRemoved()
393 HInstruction* cond = instruction->InputAt(0); in TryToEvaluateIfCondition()
412 const HUseList<HInstruction*>& uses = cond->GetUses(); in TryToEvaluateIfCondition()
414 HInstruction* user = it->GetUser(); in TryToEvaluateIfCondition()
440 static DataType::Type GetNarrowerType(HInstruction* a, HInstruction* b) { in GetNarrowerType()
586 ScopedArenaSet<HInstruction*> iset(loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
587 ScopedArenaSafeMap<HInstruction*, HInstruction*> reds( in LocalRun()
588 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
590 ScopedArenaSafeMap<HInstruction*, HInstruction*> map( in LocalRun()
591 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
592 ScopedArenaSafeMap<HInstruction*, HInstruction*> perm( in LocalRun()
593 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
594 ScopedArenaSet<HInstruction*> ext_set(loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
801 for (HInstruction* i : *iset_) { in SimplifyInduction()
1045 HInstruction* copy = entry.second; in TryPeelingForLoopInvariantExitsElimination()
1198 HInstruction* a = i->base; in CanVectorizeDataFlow()
1199 HInstruction* b = j->base; in CanVectorizeDataFlow()
1200 HInstruction* x = i->offset; in CanVectorizeDataFlow()
1201 HInstruction* y = j->offset; in CanVectorizeDataFlow()
1306 HInstruction* stc = induction_range_.GenerateTripCount(node->loop_info, graph_, preheader); in VectorizePredicated()
1307 HInstruction* vtc = stc; in VectorizePredicated()
1313 HInstruction* rt = Insert( in VectorizePredicated()
1405 HInstruction* ptc = nullptr; in VectorizeTraditional()
1420 HInstruction* adjusted_offset = graph_->GetConstant(induc_type, hidden_offset >> shift); in VectorizeTraditional()
1421 HInstruction* offset = Insert(preheader, new (global_allocator_) HAdd( in VectorizeTraditional()
1423 HInstruction* rem = Insert(preheader, new (global_allocator_) HAnd( in VectorizeTraditional()
1425 HInstruction* sub = Insert(preheader, new (global_allocator_) HSub( in VectorizeTraditional()
1427 HInstruction* cond = Insert(preheader, new (global_allocator_) HEqual( in VectorizeTraditional()
1439 HInstruction* stc = induction_range_.GenerateTripCount(node->loop_info, graph_, preheader); in VectorizeTraditional()
1440 HInstruction* vtc = stc; in VectorizeTraditional()
1443 HInstruction* diff = stc; in VectorizeTraditional()
1446 HInstruction* cond = Insert(preheader, new (global_allocator_) HAboveOrEqual(stc, ptc)); in VectorizeTraditional()
1451 HInstruction* rem = Insert( in VectorizeTraditional()
1462 HInstruction* rt = Insert( in VectorizeTraditional()
1528 HInstruction* phi = i->first; in FinalizeVectorization()
1529 HInstruction* repl = ReduceAndExtractIfNeeded(i->second); in FinalizeVectorization()
1531 for (const HUseListNode<HInstruction*>& use : phi->GetUses()) { in FinalizeVectorization()
1560 HPhi* HLoopOptimization::InitializeForNewLoop(HBasicBlock* new_preheader, HInstruction* lo) { in InitializeForNewLoop()
1580 HInstruction* lo, in GenerateNewLoopScalarOrTraditional()
1581 HInstruction* hi, in GenerateNewLoopScalarOrTraditional()
1582 HInstruction* step, in GenerateNewLoopScalarOrTraditional()
1589 HInstruction* cond = new (global_allocator_) HAboveOrEqual(phi, hi); in GenerateNewLoopScalarOrTraditional()
1602 HInstruction* lo, in GenerateNewLoopPredicated()
1603 HInstruction* hi, in GenerateNewLoopPredicated()
1604 HInstruction* step) { in GenerateNewLoopPredicated()
1620 HInstruction* cond = in GenerateNewLoopPredicated()
1645 HInstruction* instr = i->second; in GenerateNewLoopPredicated()
1674 HInstruction* step) { in GenerateNewLoopBodyOnce()
1722 void HLoopOptimization::FinalizePhisForNewLoop(HPhi* phi, HInstruction* lo) { in FinalizePhisForNewLoop()
1737 HInstruction* instruction, in VectorizeDef()
1751 HInstruction* base = instruction->InputAt(0); in VectorizeDef()
1752 HInstruction* index = instruction->InputAt(1); in VectorizeDef()
1753 HInstruction* value = instruction->InputAt(2); in VectorizeDef()
1754 HInstruction* offset = nullptr; in VectorizeDef()
1787 HInstruction* new_red_vec_op = vector_map_->Get(instruction); in VectorizeDef()
1788 HInstruction* original_phi = redit->second; in VectorizeDef()
1812 HInstruction* instruction, in VectorizeUse()
1843 HInstruction* base = instruction->InputAt(0); in VectorizeUse()
1844 HInstruction* index = instruction->InputAt(1); in VectorizeUse()
1845 HInstruction* offset = nullptr; in VectorizeUse()
1875 HInstruction* opa = conversion->InputAt(0); in VectorizeUse()
1917 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1933 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1934 HInstruction* opb = instruction->InputAt(1); in VectorizeUse()
1948 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1949 HInstruction* opb = instruction->InputAt(1); in VectorizeUse()
1950 HInstruction* r = opa; in VectorizeUse()
1986 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1987 HInstruction* r = opa; in VectorizeUse()
2189 void HLoopOptimization::GenerateVecInv(HInstruction* org, DataType::Type type) { in GenerateVecInv()
2198 HInstruction* vector = nullptr; in GenerateVecInv()
2204 HInstruction* input = org; in GenerateVecInv()
2220 void HLoopOptimization::GenerateVecSub(HInstruction* org, HInstruction* offset) { in GenerateVecSub()
2222 HInstruction* subscript = vector_index_; in GenerateVecSub()
2234 void HLoopOptimization::GenerateVecMem(HInstruction* org, in GenerateVecMem()
2235 HInstruction* opa, in GenerateVecMem()
2236 HInstruction* opb, in GenerateVecMem()
2237 HInstruction* offset, in GenerateVecMem()
2240 HInstruction* vector = nullptr; in GenerateVecMem()
2244 HInstruction* base = org->InputAt(0); in GenerateVecMem()
2290 HInstruction* vector = nullptr; in GenerateVecReductionPhi()
2311 void HLoopOptimization::GenerateVecReductionPhiInputs(HPhi* phi, HInstruction* reduction) { in GenerateVecReductionPhiInputs()
2312 HInstruction* new_phi = vector_map_->Get(phi); in GenerateVecReductionPhiInputs()
2313 HInstruction* new_init = reductions_->Get(phi); in GenerateVecReductionPhiInputs()
2314 HInstruction* new_red = vector_map_->Get(reduction); in GenerateVecReductionPhiInputs()
2355 HInstruction* HLoopOptimization::ReduceAndExtractIfNeeded(HInstruction* instruction) { in ReduceAndExtractIfNeeded()
2357 HInstruction* input = instruction->InputAt(1); in ReduceAndExtractIfNeeded()
2392 HInstruction* HLoopOptimization::GenerateVecOp(HInstruction* org, in GenerateVecOp()
2393 HInstruction* opa, in GenerateVecOp()
2394 HInstruction* opb, in GenerateVecOp()
2397 HInstruction* vector = nullptr; in GenerateVecOp()
2400 case HInstruction::kNeg: in GenerateVecOp()
2405 case HInstruction::kNot: in GenerateVecOp()
2410 case HInstruction::kBooleanNot: in GenerateVecOp()
2415 case HInstruction::kTypeConversion: in GenerateVecOp()
2420 case HInstruction::kAdd: in GenerateVecOp()
2424 case HInstruction::kSub: in GenerateVecOp()
2428 case HInstruction::kMul: in GenerateVecOp()
2432 case HInstruction::kDiv: in GenerateVecOp()
2436 case HInstruction::kAnd: in GenerateVecOp()
2440 case HInstruction::kOr: in GenerateVecOp()
2444 case HInstruction::kXor: in GenerateVecOp()
2448 case HInstruction::kShl: in GenerateVecOp()
2452 case HInstruction::kShr: in GenerateVecOp()
2456 case HInstruction::kUShr: in GenerateVecOp()
2460 case HInstruction::kAbs: in GenerateVecOp()
2465 case HInstruction::kEqual: { in GenerateVecOp()
2495 HInstruction* instruction, in VectorizeHalvingAddIdiom()
2506 HInstruction* a = nullptr; in VectorizeHalvingAddIdiom()
2507 HInstruction* b = nullptr; in VectorizeHalvingAddIdiom()
2518 HInstruction* r = nullptr; in VectorizeHalvingAddIdiom()
2519 HInstruction* s = nullptr; in VectorizeHalvingAddIdiom()
2568 HInstruction* instruction, in VectorizeSADIdiom()
2578 HInstruction* acc = instruction->InputAt(0); in VectorizeSADIdiom()
2579 HInstruction* abs = instruction->InputAt(1); in VectorizeSADIdiom()
2580 HInstruction* a = nullptr; in VectorizeSADIdiom()
2581 HInstruction* b = nullptr; in VectorizeSADIdiom()
2592 HInstruction* r = a; in VectorizeSADIdiom()
2593 HInstruction* s = b; in VectorizeSADIdiom()
2648 HInstruction* instruction, in VectorizeDotProdIdiom()
2656 HInstruction* const acc = instruction->InputAt(0); in VectorizeDotProdIdiom()
2657 HInstruction* const mul = instruction->InputAt(1); in VectorizeDotProdIdiom()
2662 HInstruction* const mul_left = mul->InputAt(0); in VectorizeDotProdIdiom()
2663 HInstruction* const mul_right = mul->InputAt(1); in VectorizeDotProdIdiom()
2664 HInstruction* r = mul_left; in VectorizeDotProdIdiom()
2665 HInstruction* s = mul_right; in VectorizeDotProdIdiom()
2718 HInstruction* hif, in VectorizeIfCondition()
2722 HInstruction* if_input = hif->InputAt(0); in VectorizeIfCondition()
2735 HInstruction* opa = cond->InputAt(0); in VectorizeIfCondition()
2736 HInstruction* opb = cond->InputAt(1); in VectorizeIfCondition()
2744 HInstruction* opa_promoted = opa; in VectorizeIfCondition()
2745 HInstruction* opb_promoted = opb; in VectorizeIfCondition()
2776 HInstruction* vec_cond = GenerateVecOp(cond, in VectorizeIfCondition()
2781 HInstruction* vec_pred_not = new (global_allocator_) in VectorizeIfCondition()
2799 Alignment HLoopOptimization::ComputeAlignment(HInstruction* offset, in ComputeAlignment()
2872 ArenaSet<HInstruction*>* set = induction_range_.LookupCycle(phi); in TrySetPhiInduction()
2874 for (HInstruction* i : *set) { in TrySetPhiInduction()
2884 for (const HUseListNode<HInstruction*>& use : i->GetUses()) { in TrySetPhiInduction()
2907 HInstruction* reduction = inputs[1]; in TrySetPhiReduction()
2918 [loop_info, reduction](const HUseListNode<HInstruction*>& use) { in TrySetPhiReduction()
2919 HInstruction* user = use.GetUser(); in TrySetPhiReduction()
2959 HInstruction* s = block->GetFirstInstruction(); in TrySetSimpleLoopHeader()
2961 HInstruction* c = s->GetNext(); in TrySetSimpleLoopHeader()
2966 HInstruction* i = c->GetNext(); in TrySetSimpleLoopHeader()
2984 HInstruction* instruction = it.Current(); in IsEmptyBody()
2993 HInstruction* instruction) { in IsUsedOutsideLoop()
2995 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in IsUsedOutsideLoop()
3004 HInstruction* instruction, in IsOnlyUsedAfterLoop()
3008 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in IsOnlyUsedAfterLoop()
3009 HInstruction* user = use.GetUser(); in IsOnlyUsedAfterLoop()
3027 HInstruction* instruction, in TryReplaceWithLastValue()
3031 HInstruction* replacement = induction_range_.GenerateLastValue(instruction, graph_, block); in TryReplaceWithLastValue()
3033 const HUseList<HInstruction*>& uses = instruction->GetUses(); in TryReplaceWithLastValue()
3035 HInstruction* user = it->GetUser(); in TryReplaceWithLastValue()
3070 HInstruction* instruction, in TryAssignLastValue()
3084 HInstruction* instruction = i.Current(); in RemoveDeadInstructions()
3093 for (HInstruction* i : *iset_) { in CanRemoveCycle()
3173 void HLoopOptimization::MaybeInsertInVectorExternalSet(HInstruction* instruction) { in MaybeInsertInVectorExternalSet()