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 static 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()
541 ScopedArenaSet<HInstruction*> iset(loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
542 ScopedArenaSafeMap<HInstruction*, HInstruction*> reds( in LocalRun()
543 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
545 ScopedArenaSafeMap<HInstruction*, HInstruction*> map( in LocalRun()
546 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
547 ScopedArenaSafeMap<HInstruction*, HInstruction*> perm( in LocalRun()
548 std::less<HInstruction*>(), loop_allocator_->Adapter(kArenaAllocLoopOptimization)); in LocalRun()
662 for (HInstruction* i : *iset_) { in SimplifyInduction()
841 HInstruction* copy = entry.second; in TryPeelingForLoopInvariantExitsElimination()
970 HInstruction* a = i->base; in ShouldVectorize()
971 HInstruction* b = j->base; in ShouldVectorize()
972 HInstruction* x = i->offset; in ShouldVectorize()
973 HInstruction* y = j->offset; in ShouldVectorize()
1072 HInstruction* ptc = nullptr; in Vectorize()
1087 HInstruction* adjusted_offset = graph_->GetConstant(induc_type, hidden_offset >> shift); in Vectorize()
1088 HInstruction* offset = Insert(preheader, new (global_allocator_) HAdd( in Vectorize()
1090 HInstruction* rem = Insert(preheader, new (global_allocator_) HAnd( in Vectorize()
1092 HInstruction* sub = Insert(preheader, new (global_allocator_) HSub( in Vectorize()
1094 HInstruction* cond = Insert(preheader, new (global_allocator_) HEqual( in Vectorize()
1106 HInstruction* stc = induction_range_.GenerateTripCount(node->loop_info, graph_, preheader); in Vectorize()
1107 HInstruction* vtc = stc; in Vectorize()
1110 HInstruction* diff = stc; in Vectorize()
1113 HInstruction* cond = Insert(preheader, new (global_allocator_) HAboveOrEqual(stc, ptc)); in Vectorize()
1118 HInstruction* rem = Insert( in Vectorize()
1129 HInstruction* rt = Insert( in Vectorize()
1186 HInstruction* phi = i->first; in Vectorize()
1187 HInstruction* repl = ReduceAndExtractIfNeeded(i->second); in Vectorize()
1189 for (const HUseListNode<HInstruction*>& use : phi->GetUses()) { in Vectorize()
1213 HInstruction* lo, in GenerateNewLoop()
1214 HInstruction* hi, in GenerateNewLoop()
1215 HInstruction* step, in GenerateNewLoop()
1230 HInstruction* cond = new (global_allocator_) HAboveOrEqual(phi, hi); in GenerateNewLoop()
1273 HInstruction* instruction, in VectorizeDef()
1287 HInstruction* base = instruction->InputAt(0); in VectorizeDef()
1288 HInstruction* index = instruction->InputAt(1); in VectorizeDef()
1289 HInstruction* value = instruction->InputAt(2); in VectorizeDef()
1290 HInstruction* offset = nullptr; in VectorizeDef()
1322 HInstruction* new_red = vector_map_->Get(instruction); in VectorizeDef()
1341 HInstruction* instruction, in VectorizeUse()
1371 HInstruction* base = instruction->InputAt(0); in VectorizeUse()
1372 HInstruction* index = instruction->InputAt(1); in VectorizeUse()
1373 HInstruction* offset = nullptr; in VectorizeUse()
1403 HInstruction* opa = conversion->InputAt(0); in VectorizeUse()
1445 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1461 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1462 HInstruction* opb = instruction->InputAt(1); in VectorizeUse()
1476 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1477 HInstruction* opb = instruction->InputAt(1); in VectorizeUse()
1478 HInstruction* r = opa; in VectorizeUse()
1514 HInstruction* opa = instruction->InputAt(0); in VectorizeUse()
1515 HInstruction* r = opa; in VectorizeUse()
1671 void HLoopOptimization::GenerateVecInv(HInstruction* org, DataType::Type type) { in GenerateVecInv()
1680 HInstruction* vector = nullptr; in GenerateVecInv()
1686 HInstruction* input = org; in GenerateVecInv()
1701 void HLoopOptimization::GenerateVecSub(HInstruction* org, HInstruction* offset) { in GenerateVecSub()
1703 HInstruction* subscript = vector_index_; in GenerateVecSub()
1715 void HLoopOptimization::GenerateVecMem(HInstruction* org, in GenerateVecMem()
1716 HInstruction* opa, in GenerateVecMem()
1717 HInstruction* opb, in GenerateVecMem()
1718 HInstruction* offset, in GenerateVecMem()
1721 HInstruction* vector = nullptr; in GenerateVecMem()
1725 HInstruction* base = org->InputAt(0); in GenerateVecMem()
1771 HInstruction* vector = nullptr; in GenerateVecReductionPhi()
1792 void HLoopOptimization::GenerateVecReductionPhiInputs(HPhi* phi, HInstruction* reduction) { in GenerateVecReductionPhiInputs()
1793 HInstruction* new_phi = vector_map_->Get(phi); in GenerateVecReductionPhiInputs()
1794 HInstruction* new_init = reductions_->Get(phi); in GenerateVecReductionPhiInputs()
1795 HInstruction* new_red = vector_map_->Get(reduction); in GenerateVecReductionPhiInputs()
1835 HInstruction* HLoopOptimization::ReduceAndExtractIfNeeded(HInstruction* instruction) { in ReduceAndExtractIfNeeded()
1837 HInstruction* input = instruction->InputAt(1); in ReduceAndExtractIfNeeded()
1849 HInstruction* reduce = new (global_allocator_) HVecReduce( in ReduceAndExtractIfNeeded()
1869 void HLoopOptimization::GenerateVecOp(HInstruction* org, in GenerateVecOp()
1870 HInstruction* opa, in GenerateVecOp()
1871 HInstruction* opb, in GenerateVecOp()
1874 HInstruction* vector = nullptr; in GenerateVecOp()
1877 case HInstruction::kNeg: in GenerateVecOp()
1882 case HInstruction::kNot: in GenerateVecOp()
1887 case HInstruction::kBooleanNot: in GenerateVecOp()
1892 case HInstruction::kTypeConversion: in GenerateVecOp()
1897 case HInstruction::kAdd: in GenerateVecOp()
1901 case HInstruction::kSub: in GenerateVecOp()
1905 case HInstruction::kMul: in GenerateVecOp()
1909 case HInstruction::kDiv: in GenerateVecOp()
1913 case HInstruction::kAnd: in GenerateVecOp()
1917 case HInstruction::kOr: in GenerateVecOp()
1921 case HInstruction::kXor: in GenerateVecOp()
1925 case HInstruction::kShl: in GenerateVecOp()
1929 case HInstruction::kShr: in GenerateVecOp()
1933 case HInstruction::kUShr: in GenerateVecOp()
1937 case HInstruction::kAbs: in GenerateVecOp()
1964 HInstruction* instruction, in VectorizeHalvingAddIdiom()
1975 HInstruction* a = nullptr; in VectorizeHalvingAddIdiom()
1976 HInstruction* b = nullptr; in VectorizeHalvingAddIdiom()
1987 HInstruction* r = nullptr; in VectorizeHalvingAddIdiom()
1988 HInstruction* s = nullptr; in VectorizeHalvingAddIdiom()
2036 HInstruction* instruction, in VectorizeSADIdiom()
2046 HInstruction* acc = instruction->InputAt(0); in VectorizeSADIdiom()
2047 HInstruction* abs = instruction->InputAt(1); in VectorizeSADIdiom()
2048 HInstruction* a = nullptr; in VectorizeSADIdiom()
2049 HInstruction* b = nullptr; in VectorizeSADIdiom()
2060 HInstruction* r = a; in VectorizeSADIdiom()
2061 HInstruction* s = b; in VectorizeSADIdiom()
2116 HInstruction* instruction, in VectorizeDotProdIdiom()
2124 HInstruction* const acc = instruction->InputAt(0); in VectorizeDotProdIdiom()
2125 HInstruction* const mul = instruction->InputAt(1); in VectorizeDotProdIdiom()
2130 HInstruction* const mul_left = mul->InputAt(0); in VectorizeDotProdIdiom()
2131 HInstruction* const mul_right = mul->InputAt(1); in VectorizeDotProdIdiom()
2132 HInstruction* r = mul_left; in VectorizeDotProdIdiom()
2133 HInstruction* s = mul_right; in VectorizeDotProdIdiom()
2189 Alignment HLoopOptimization::ComputeAlignment(HInstruction* offset, in ComputeAlignment()
2260 ArenaSet<HInstruction*>* set = induction_range_.LookupCycle(phi); in TrySetPhiInduction()
2262 for (HInstruction* i : *set) { in TrySetPhiInduction()
2272 for (const HUseListNode<HInstruction*>& use : i->GetUses()) { in TrySetPhiInduction()
2295 HInstruction* reduction = inputs[1]; in TrySetPhiReduction()
2344 HInstruction* s = block->GetFirstInstruction(); in TrySetSimpleLoopHeader()
2346 HInstruction* c = s->GetNext(); in TrySetSimpleLoopHeader()
2351 HInstruction* i = c->GetNext(); in TrySetSimpleLoopHeader()
2369 HInstruction* instruction = it.Current(); in IsEmptyBody()
2378 HInstruction* instruction) { in IsUsedOutsideLoop()
2380 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in IsUsedOutsideLoop()
2389 HInstruction* instruction, in IsOnlyUsedAfterLoop()
2393 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in IsOnlyUsedAfterLoop()
2394 HInstruction* user = use.GetUser(); in IsOnlyUsedAfterLoop()
2413 HInstruction* instruction, in TryReplaceWithLastValue()
2417 HInstruction* replacement = induction_range_.GenerateLastValue(instruction, graph_, block); in TryReplaceWithLastValue()
2419 const HUseList<HInstruction*>& uses = instruction->GetUses(); in TryReplaceWithLastValue()
2421 HInstruction* user = it->GetUser(); in TryReplaceWithLastValue()
2456 HInstruction* instruction, in TryAssignLastValue()
2470 HInstruction* instruction = i.Current(); in RemoveDeadInstructions()
2479 for (HInstruction* i : *iset_) { in CanRemoveCycle()