Lines Matching refs:HInstruction
57 static void RemoveFromCycle(HInstruction* instruction) { in RemoveFromCycle()
90 static bool IsZeroExtensionAndGet(HInstruction* instruction,
92 /*out*/ HInstruction** operand);
96 static bool IsSignExtensionAndGet(HInstruction* instruction, in IsSignExtensionAndGet()
98 /*out*/ HInstruction** operand) { in IsSignExtensionAndGet()
136 HInstruction* conv = instruction->InputAt(0); in IsSignExtensionAndGet()
161 static bool IsZeroExtensionAndGet(HInstruction* instruction, in IsZeroExtensionAndGet()
163 /*out*/ HInstruction** operand) { in IsZeroExtensionAndGet()
201 HInstruction* conv = instruction->InputAt(0); in IsZeroExtensionAndGet()
224 static bool IsNarrowerOperands(HInstruction* a, in IsNarrowerOperands()
225 HInstruction* b, in IsNarrowerOperands()
227 /*out*/ HInstruction** r, in IsNarrowerOperands()
228 /*out*/ HInstruction** s, in IsNarrowerOperands()
246 static bool IsNarrowerOperand(HInstruction* a, in IsNarrowerOperand()
248 /*out*/ HInstruction** r, in IsNarrowerOperand()
274 static bool IsAddConstHelper(HInstruction* instruction, in IsAddConstHelper()
275 /*out*/ HInstruction** a, in IsAddConstHelper()
276 /*out*/ HInstruction** b, in IsAddConstHelper()
298 static bool IsAddConst(HInstruction* instruction, in IsAddConst()
299 /*out*/ HInstruction** a, in IsAddConst()
300 /*out*/ HInstruction** b, in IsAddConst()
319 static bool IsAddConst(HInstruction* instruction, in IsAddConst()
320 /*out*/ HInstruction** a, in IsAddConst()
339 static bool HasReductionFormat(HInstruction* reduction, HInstruction* phi) { in HasReductionFormat()
383 static HInstruction* Insert(HBasicBlock* block, HInstruction* instruction) { in Insert()
392 static bool CheckInductionSetFullyRemoved(ScopedArenaSet<HInstruction*>* iset) { in CheckInductionSetFullyRemoved()
393 for (HInstruction* instr : *iset) { in CheckInductionSetFullyRemoved()
481 ScopedArenaSet<HInstruction*> iset(loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
482 ScopedArenaSafeMap<HInstruction*, HInstruction*> reds( in LocalRun()
483 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
485 ScopedArenaSafeMap<HInstruction*, HInstruction*> map( in LocalRun()
486 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
487 ScopedArenaSafeMap<HInstruction*, HInstruction*> perm( in LocalRun()
488 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
600 for (HInstruction* i : *iset_) { in SimplifyInduction()
769 HInstruction* a = i->base; in ShouldVectorize()
770 HInstruction* b = j->base; in ShouldVectorize()
771 HInstruction* x = i->offset; in ShouldVectorize()
772 HInstruction* y = j->offset; in ShouldVectorize()
870 HInstruction* ptc = nullptr; in Vectorize()
885 HInstruction* adjusted_offset = graph_->GetConstant(induc_type, hidden_offset >> shift); in Vectorize()
886 HInstruction* offset = Insert(preheader, new (global_allocator_) HAdd( in Vectorize()
888 HInstruction* rem = Insert(preheader, new (global_allocator_) HAnd( in Vectorize()
890 HInstruction* sub = Insert(preheader, new (global_allocator_) HSub( in Vectorize()
892 HInstruction* cond = Insert(preheader, new (global_allocator_) HEqual( in Vectorize()
904 HInstruction* stc = induction_range_.GenerateTripCount(node->loop_info, graph_, preheader); in Vectorize()
905 HInstruction* vtc = stc; in Vectorize()
908 HInstruction* diff = stc; in Vectorize()
911 HInstruction* cond = Insert(preheader, new (global_allocator_) HAboveOrEqual(stc, ptc)); in Vectorize()
916 HInstruction* rem = Insert( in Vectorize()
927 HInstruction* rt = Insert( in Vectorize()
984 HInstruction* phi = i->first; in Vectorize()
985 HInstruction* repl = ReduceAndExtractIfNeeded(i->second); in Vectorize()
987 for (const HUseListNode<HInstruction*>& use : phi->GetUses()) { in Vectorize()
1011 HInstruction* lo, in GenerateNewLoop()
1012 HInstruction* hi, in GenerateNewLoop()
1013 HInstruction* step, in GenerateNewLoop()
1028 HInstruction* cond = new (global_allocator_) HAboveOrEqual(phi, hi); in GenerateNewLoop()
1071 HInstruction* instruction, in VectorizeDef()
1081 HInstruction* base = instruction->InputAt(0); in VectorizeDef()
1082 HInstruction* index = instruction->InputAt(1); in VectorizeDef()
1083 HInstruction* value = instruction->InputAt(2); in VectorizeDef()
1084 HInstruction* offset = nullptr; in VectorizeDef()
1110 HInstruction* new_red = vector_map_->Get(instruction); in VectorizeDef()
1129 HInstruction* instruction, in VectorizeUse()
1159 HInstruction* base = instruction->InputAt(0); in VectorizeUse()
1160 HInstruction* index = instruction->InputAt(1); in VectorizeUse()
1161 HInstruction* offset = nullptr; in VectorizeUse()
1191 HInstruction* opa = conversion->InputAt(0); in VectorizeUse()
1233 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1249 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1250 HInstruction* opb = instruction->InputAt(1); in VectorizeUse()
1264 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1265 HInstruction* opb = instruction->InputAt(1); in VectorizeUse()
1266 HInstruction* r = opa; in VectorizeUse()
1309 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1310 HInstruction* r = opa; in VectorizeUse()
1343 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1344 HInstruction* opb = instruction->InputAt(1); in VectorizeUse()
1345 HInstruction* r = opa; in VectorizeUse()
1346 HInstruction* s = opb; in VectorizeUse()
1547 void HLoopOptimization::GenerateVecInv(HInstruction* org, DataType::Type type) { in GenerateVecInv()
1556 HInstruction* vector = nullptr; in GenerateVecInv()
1562 HInstruction* input = org; in GenerateVecInv()
1577 void HLoopOptimization::GenerateVecSub(HInstruction* org, HInstruction* offset) { in GenerateVecSub()
1579 HInstruction* subscript = vector_index_; in GenerateVecSub()
1591 void HLoopOptimization::GenerateVecMem(HInstruction* org, in GenerateVecMem()
1592 HInstruction* opa, in GenerateVecMem()
1593 HInstruction* opb, in GenerateVecMem()
1594 HInstruction* offset, in GenerateVecMem()
1597 HInstruction* vector = nullptr; in GenerateVecMem()
1601 HInstruction* base = org->InputAt(0); in GenerateVecMem()
1647 HInstruction* vector = nullptr; in GenerateVecReductionPhi()
1668 void HLoopOptimization::GenerateVecReductionPhiInputs(HPhi* phi, HInstruction* reduction) { in GenerateVecReductionPhiInputs()
1669 HInstruction* new_phi = vector_map_->Get(phi); in GenerateVecReductionPhiInputs()
1670 HInstruction* new_init = reductions_->Get(phi); in GenerateVecReductionPhiInputs()
1671 HInstruction* new_red = vector_map_->Get(reduction); in GenerateVecReductionPhiInputs()
1711 HInstruction* HLoopOptimization::ReduceAndExtractIfNeeded(HInstruction* instruction) { in ReduceAndExtractIfNeeded()
1713 HInstruction* input = instruction->InputAt(1); in ReduceAndExtractIfNeeded()
1725 HInstruction* reduce = new (global_allocator_) HVecReduce( in ReduceAndExtractIfNeeded()
1745 void HLoopOptimization::GenerateVecOp(HInstruction* org, in GenerateVecOp()
1746 HInstruction* opa, in GenerateVecOp()
1747 HInstruction* opb, in GenerateVecOp()
1751 HInstruction* vector = nullptr; in GenerateVecOp()
1754 case HInstruction::kNeg: in GenerateVecOp()
1759 case HInstruction::kNot: in GenerateVecOp()
1764 case HInstruction::kBooleanNot: in GenerateVecOp()
1769 case HInstruction::kTypeConversion: in GenerateVecOp()
1774 case HInstruction::kAdd: in GenerateVecOp()
1778 case HInstruction::kSub: in GenerateVecOp()
1782 case HInstruction::kMul: in GenerateVecOp()
1786 case HInstruction::kDiv: in GenerateVecOp()
1790 case HInstruction::kAnd: in GenerateVecOp()
1794 case HInstruction::kOr: in GenerateVecOp()
1798 case HInstruction::kXor: in GenerateVecOp()
1802 case HInstruction::kShl: in GenerateVecOp()
1806 case HInstruction::kShr: in GenerateVecOp()
1810 case HInstruction::kUShr: in GenerateVecOp()
1814 case HInstruction::kInvokeStaticOrDirect: { in GenerateVecOp()
1878 HInstruction* new_input = index < num_args in GenerateVecOp()
1913 HInstruction* instruction, in VectorizeHalvingAddIdiom()
1924 HInstruction* a = nullptr; in VectorizeHalvingAddIdiom()
1925 HInstruction* b = nullptr; in VectorizeHalvingAddIdiom()
1937 HInstruction* r = nullptr; in VectorizeHalvingAddIdiom()
1938 HInstruction* s = nullptr; in VectorizeHalvingAddIdiom()
1987 HInstruction* instruction, in VectorizeSADIdiom()
1997 HInstruction* q = instruction->InputAt(0); in VectorizeSADIdiom()
1998 HInstruction* v = instruction->InputAt(1); in VectorizeSADIdiom()
1999 HInstruction* a = nullptr; in VectorizeSADIdiom()
2000 HInstruction* b = nullptr; in VectorizeSADIdiom()
2004 HInstruction* x = v->InputAt(0); in VectorizeSADIdiom()
2021 HInstruction* r = a; in VectorizeSADIdiom()
2022 HInstruction* s = b; in VectorizeSADIdiom()
2082 Alignment HLoopOptimization::ComputeAlignment(HInstruction* offset, in ComputeAlignment()
2188 ArenaSet<HInstruction*>* set = induction_range_.LookupCycle(phi); in TrySetPhiInduction()
2190 for (HInstruction* i : *set) { in TrySetPhiInduction()
2200 for (const HUseListNode<HInstruction*>& use : i->GetUses()) { in TrySetPhiInduction()
2223 HInstruction* reduction = inputs[1]; in TrySetPhiReduction()
2272 HInstruction* s = block->GetFirstInstruction(); in TrySetSimpleLoopHeader()
2274 HInstruction* c = s->GetNext(); in TrySetSimpleLoopHeader()
2279 HInstruction* i = c->GetNext(); in TrySetSimpleLoopHeader()
2297 HInstruction* instruction = it.Current(); in IsEmptyBody()
2306 HInstruction* instruction) { in IsUsedOutsideLoop()
2308 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in IsUsedOutsideLoop()
2317 HInstruction* instruction, in IsOnlyUsedAfterLoop()
2321 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in IsOnlyUsedAfterLoop()
2322 HInstruction* user = use.GetUser(); in IsOnlyUsedAfterLoop()
2341 HInstruction* instruction, in TryReplaceWithLastValue()
2345 HInstruction* replacement = induction_range_.GenerateLastValue(instruction, graph_, block); in TryReplaceWithLastValue()
2347 const HUseList<HInstruction*>& uses = instruction->GetUses(); in TryReplaceWithLastValue()
2349 HInstruction* user = it->GetUser(); in TryReplaceWithLastValue()
2384 HInstruction* instruction, in TryAssignLastValue()
2398 HInstruction* instruction = i.Current(); in RemoveDeadInstructions()
2407 for (HInstruction* i : *iset_) { in CanRemoveCycle()