Home
last modified time | relevance | path

Searched refs:HInstruction (Results 26 – 50 of 122) sorted by relevance

12345

/art/compiler/optimizing/
Dload_store_analysis.h32 ReferenceInfo(HInstruction* reference, size_t pos) in ReferenceInfo()
45 HInstruction* GetReference() const { in GetReference()
75 HInstruction* const reference_;
101 HInstruction* index, in HeapLocation()
125 HInstruction* GetIndex() const { return index_; } in GetIndex()
166 HInstruction* const index_;
225 HInstruction* HuntForOriginalReference(HInstruction* ref) const { in HuntForOriginalReference()
237 ReferenceInfo* FindReferenceInfoOf(HInstruction* ref) const { in FindReferenceInfoOf()
248 size_t GetFieldHeapLocation(HInstruction* object, const FieldInfo* field) const { in GetFieldHeapLocation()
259 size_t GetArrayHeapLocation(HInstruction* instruction) const { in GetArrayHeapLocation()
[all …]
Dinstruction_simplifier_shared.h26 inline bool CanFitInShifterOperand(HInstruction* instruction) { in CanFitInShifterOperand()
41 inline bool HasShifterOperand(HInstruction* instr, InstructionSet isa) { in HasShifterOperand()
55 HInstruction* right = sub->GetRight(); in IsSubRightSubLeftShl()
66 bool TryExtractArrayAccessAddress(HInstruction* access,
67 HInstruction* array,
68 HInstruction* index,
71 bool TryExtractVecArrayAccessAddress(HVecMemoryOperation* access, HInstruction* index);
Dscheduler.cc52 bool SideEffectDependencyAnalysis::HasReorderingDependency(const HInstruction* instr1, in HasReorderingDependency()
53 const HInstruction* instr2) { in HasReorderingDependency()
76 HInstruction* instruction) const { in ArrayAccessHeapLocation()
85 HInstruction* instr1, HInstruction* instr2) const { in ArrayAccessMayAlias()
103 static bool IsArrayAccess(const HInstruction* instruction) { in IsArrayAccess()
107 static bool IsInstanceFieldAccess(const HInstruction* instruction) { in IsInstanceFieldAccess()
114 static bool IsStaticFieldAccess(const HInstruction* instruction) { in IsStaticFieldAccess()
121 static bool IsResolvedFieldAccess(const HInstruction* instruction) { in IsResolvedFieldAccess()
128 static bool IsUnresolvedFieldAccess(const HInstruction* instruction) { in IsUnresolvedFieldAccess()
135 static bool IsFieldAccess(const HInstruction* instruction) { in IsFieldAccess()
[all …]
Dcha_guard_optimization.cc54 bool OptimizeForParameter(HShouldDeoptimizeFlag* flag, HInstruction* receiver);
56 bool OptimizeWithDominatingGuard(HShouldDeoptimizeFlag* flag, HInstruction* receiver);
58 bool HoistGuard(HShouldDeoptimizeFlag* flag, HInstruction* receiver);
90 HInstruction* compare = flag->GetNext(); in RemoveGuard()
92 HInstruction* deopt = compare->GetNext(); in RemoveGuard()
106 HInstruction* receiver) { in OptimizeForParameter()
123 HInstruction* receiver) { in OptimizeWithDominatingGuard()
149 HInstruction* instruction; in OptimizeWithDominatingGuard()
175 HInstruction* receiver) { in HoistGuard()
186 HInstruction* compare = flag->GetNext(); in HoistGuard()
[all …]
Dnodes_test.cc37 HInstruction* parameter = new (GetAllocator()) HParameterValue( in TEST_F()
45 HInstruction* null_check = new (GetAllocator()) HNullCheck(parameter, 0); in TEST_F()
77 HInstruction* parameter1 = new (GetAllocator()) HParameterValue( in TEST_F()
79 HInstruction* parameter2 = new (GetAllocator()) HParameterValue( in TEST_F()
87 HInstruction* to_insert = new (GetAllocator()) HNullCheck(parameter1, 0); in TEST_F()
102 HInstruction* parameter = new (GetAllocator()) HParameterValue( in TEST_F()
108 HInstruction* to_add = new (GetAllocator()) HNullCheck(parameter, 0); in TEST_F()
120 HInstruction* parameter1 = new (GetAllocator()) HParameterValue( in TEST_F()
122 HInstruction* with_environment = new (GetAllocator()) HNullCheck(parameter1, 0); in TEST_F()
132 HInstruction* const array[] = { parameter1 }; in TEST_F()
[all …]
Dnodes.h64 class HInstruction; variable
149 void AddInstruction(HInstruction* instruction);
150 void RemoveInstruction(HInstruction* instruction);
153 void InsertInstructionBefore(HInstruction* instruction, HInstruction* cursor);
154 void InsertInstructionAfter(HInstruction* instruction, HInstruction* cursor);
157 bool Contains(HInstruction* instruction) const;
162 bool FoundBefore(const HInstruction* instruction1,
163 const HInstruction* instruction2) const;
171 void AddAfter(HInstruction* cursor, const HInstructionList& instruction_list);
172 void AddBefore(HInstruction* cursor, const HInstructionList& instruction_list);
[all …]
Dinstruction_simplifier.cc113 bool CanEnsureNotNullAt(HInstruction* instr, HInstruction* at) const;
222 HInstruction* left = op->GetLeft(); in TryDeMorganNegationFactoring()
223 HInstruction* right = op->GetRight(); in TryDeMorganNegationFactoring()
238 HInstruction* src_left = left->InputAt(0); in TryDeMorganNegationFactoring()
239 HInstruction* src_right = right->InputAt(0); in TryDeMorganNegationFactoring()
255 HInstruction* hnot; in TryDeMorganNegationFactoring()
292 HInstruction* use = mul->GetUses().front().GetUser(); in TryCombineVecMultiplyAccumulate()
305 HInstruction* accumulator = nullptr; in TryCombineVecMultiplyAccumulate()
307 HInstruction* binop_left = binop->GetLeft(); in TryCombineVecMultiplyAccumulate()
308 HInstruction* binop_right = binop->GetRight(); in TryCombineVecMultiplyAccumulate()
[all …]
Dconstructor_fence_redundancy_elimination.cc67 HInstruction* value = instruction->InputAt(1); in VisitInstanceFieldSet()
72 HInstruction* value = instruction->InputAt(1); in VisitStaticFieldSet()
77 HInstruction* value = instruction->InputAt(2); in VisitArraySet()
131 void HandleInvoke(HInstruction* invoke) { in HandleInvoke()
147 void VisitAlias(HInstruction* aliasing_inst) { in VisitAlias()
164 void VisitSetLocation(HInstruction* inst ATTRIBUTE_UNUSED, HInstruction* store_input) { in VisitSetLocation()
175 bool HasInterestingPublishTargetAsInput(HInstruction* inst) { in HasInterestingPublishTargetAsInput()
216 bool IsInterestingPublishTarget(HInstruction* store_input) const { in IsInterestingPublishTarget()
245 ScopedArenaHashSet<HInstruction*> candidate_fence_targets_;
Dbounds_check_elimination.cc37 ValueBound(HInstruction* instruction, int32_t constant) { in ValueBound()
68 static bool IsAddOrSubAConstant(HInstruction* instruction, in IsAddOrSubAConstant()
69 /* out */ HInstruction** left_instruction, in IsAddOrSubAConstant()
71 HInstruction* left_so_far = nullptr; in IsAddOrSubAConstant()
75 HInstruction* left = bin_op->GetLeft(); in IsAddOrSubAConstant()
76 HInstruction* right = bin_op->GetRight(); in IsAddOrSubAConstant()
96 static ValueBound AsValueBound(HInstruction* instruction) { in AsValueBound()
100 HInstruction *left; in AsValueBound()
110 static ValueBound DetectValueBoundFromValue(HInstruction* instruction, /* out */ bool* found) { in DetectValueBoundFromValue()
122 HInstruction *left; in DetectValueBoundFromValue()
[all …]
Dprepare_for_register_allocation.cc55 HInstruction* next = check->GetNext(); in VisitNullCheck()
105 HInstruction* value = instruction->GetValue(); in VisitArraySet()
119 HInstruction* implicit_clinit = nullptr; in VisitClinitCheck()
120 for (const HUseListNode<HInstruction*>& use : check->GetUses()) { in VisitClinitCheck()
121 HInstruction* user = use.GetUser(); in VisitClinitCheck()
142 const HUseList<HInstruction*>& uses = check->GetUses(); in VisitClinitCheck()
144 HInstruction* user = it->GetUser(); in VisitClinitCheck()
179 HInstruction* user) const { in CanEmitConditionAt()
197 HInstruction* user = condition->GetUses().front().GetUser(); in VisitCondition()
214 HInstruction* allocation_inst = constructor_fence->GetAssociatedAllocation(); in VisitConstructorFence()
[all …]
Dgraph_visualizer.h31 class HInstruction; variable
59 instruction_intervals_(std::less<const HInstruction*>(), allocator->Adapter()),
66 void AddInstructionInterval(HInstruction* instr, size_t start, size_t end) { in AddInstructionInterval()
82 const ArenaSafeMap<const HInstruction*, GeneratedCodeInterval>& GetInstructionIntervals() const { in GetInstructionIntervals()
86 ArenaSafeMap<const HInstruction*, GeneratedCodeInterval>* GetInstructionIntervals() { in GetInstructionIntervals()
96 ArenaSafeMap<const HInstruction*, GeneratedCodeInterval> instruction_intervals_;
Dinstruction_builder.h81 ScopedArenaVector<HInstruction*>* GetLocalsFor(HBasicBlock* block);
84 ScopedArenaVector<HInstruction*>* GetLocalsForWithAllocation(
85 HBasicBlock* block, ScopedArenaVector<HInstruction*>* locals, const size_t vregs);
86 HInstruction* ValueOfLocalAt(HBasicBlock* block, size_t local);
87 HInstruction* LoadLocal(uint32_t register_index, DataType::Type type) const;
88 HInstruction* LoadNullCheckedLocal(uint32_t register_index, uint32_t dex_pc);
89 void UpdateLocal(uint32_t register_index, HInstruction* instruction);
91 void AppendInstruction(HInstruction* instruction);
92 void InsertInstructionAtTop(HInstruction* instruction);
93 void InitializeInstruction(HInstruction* instruction);
[all …]
Dlocations.cc29 LocationSummary::LocationSummary(HInstruction* instruction, in LocationSummary()
50 LocationSummary::LocationSummary(HInstruction* instruction, in LocationSummary()
58 Location Location::RegisterOrConstant(HInstruction* instruction) { in RegisterOrConstant()
64 Location Location::RegisterOrInt32Constant(HInstruction* instruction) { in RegisterOrInt32Constant()
75 Location Location::FpuRegisterOrInt32Constant(HInstruction* instruction) { in FpuRegisterOrInt32Constant()
86 Location Location::ByteRegisterOrConstant(int reg, HInstruction* instruction) { in ByteRegisterOrConstant()
92 Location Location::FpuRegisterOrConstant(HInstruction* instruction) { in FpuRegisterOrConstant()
Dssa_phi_elimination.cc55 for (const HUseListNode<HInstruction*>& use : phi->GetUses()) { in MarkDeadPhis()
78 for (HInstruction* raw_input : phi->GetInputs()) { in MarkDeadPhis()
96 HInstruction* current = block->GetFirstPhi(); in EliminateDeadPhis()
97 HInstruction* next = nullptr; in EliminateDeadPhis()
105 for (const HUseListNode<HInstruction*>& use : phi->GetUses()) { in EliminateDeadPhis()
106 HInstruction* user = use.GetUser(); in EliminateDeadPhis()
164 HInstruction* candidate = nullptr; in Run()
174 for (HInstruction* input : phi->GetInputs()) { in Run()
195 for (HInstruction* input : current->GetInputs()) { in Run()
248 for (const HUseListNode<HInstruction*>& use : current->GetUses()) { in Run()
[all …]
Dreference_type_propagation.cc84 void UpdateFieldAccessTypeInfo(HInstruction* instr, const FieldInfo& info);
85 void SetClassAsTypeInfo(HInstruction* instr, ObjPtr<mirror::Class> klass, bool is_exact)
89 static bool UpdateNullability(HInstruction* instr);
93 bool UpdateReferenceTypeInfo(HInstruction* instr);
94 void UpdateReferenceTypeInfo(HInstruction* instr,
99 void AddToWorklist(HInstruction* instruction);
100 void AddDependentInstructionsToWorklist(HInstruction* instruction);
113 ScopedArenaVector<HInstruction*> worklist_;
134 HInstruction* instr = iti.Current(); in ValidateTypes()
161 void ReferenceTypePropagation::Visit(HInstruction* instruction) { in Visit()
[all …]
Dssa_builder.cc36 HInstruction* equality_instr = it.Current(); in FixNullConstantType()
40 HInstruction* left = equality_instr->InputAt(0); in FixNullConstantType()
41 HInstruction* right = equality_instr->InputAt(1); in FixNullConstantType()
42 HInstruction* int_operand = nullptr; in FixNullConstantType()
94 HInstruction* next = phi->GetNext(); in FixEnvironmentPhis()
110 static void AddDependentInstructionsToWorklist(HInstruction* instruction, in AddDependentInstructionsToWorklist()
117 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in AddDependentInstructionsToWorklist()
118 HInstruction* user = use.GetUser(); in AddDependentInstructionsToWorklist()
132 for (HInstruction* input : phi->GetInputs()) { in TypePhiFromInputs()
179 for (HInstruction* input : phi->GetInputs()) { in TypeInputsOfPhi()
[all …]
Dlicm_test.cc109 HInstruction* parameter_; // "this"
110 HInstruction* int_constant_;
111 HInstruction* float_constant_;
122 HInstruction* get_field = new (GetAllocator()) HInstanceFieldGet(parameter_, in TEST_F()
132 HInstruction* set_field = new (GetAllocator()) HInstanceFieldSet( in TEST_F()
149 HInstruction* get_field = new (GetAllocator()) HInstanceFieldGet(parameter_, in TEST_F()
159 HInstruction* set_field = new (GetAllocator()) HInstanceFieldSet(parameter_, in TEST_F()
182 HInstruction* get_array = new (GetAllocator()) HArrayGet( in TEST_F()
185 HInstruction* set_array = new (GetAllocator()) HArraySet( in TEST_F()
200 HInstruction* get_array = new (GetAllocator()) HArrayGet( in TEST_F()
[all …]
Dcode_generator_utils.h26 class HInstruction; variable
35 bool IsBooleanValueOrMaterializedCondition(HInstruction* cond_input);
45 bool HasNonNegativeResultOrMinInt(HInstruction* instruction);
Dnodes.cc98 void RemoveEnvironmentUses(HInstruction* instruction) { in RemoveEnvironmentUses()
111 bool HasEnvironmentUsedByOthers(HInstruction* instruction) { in HasEnvironmentUsedByOthers()
116 HInstruction* user = environment->GetInstructionAt(i); in HasEnvironmentUsedByOthers()
126 void ResetEnvironmentInputRecords(HInstruction* instruction) { in ResetEnvironmentInputRecords()
139 static void RemoveAsUser(HInstruction* instruction) { in RemoveAsUser()
242 HInstruction* HBasicBlock::GetFirstInstructionDisregardMoves() const { in GetFirstInstructionDisregardMoves()
243 HInstruction* instruction = GetFirstInstruction(); in GetFirstInstructionDisregardMoves()
377 HInstruction* first_instr = phi->InputAt(first); in FixPhisAfterPredecessorsReodering()
378 HInstruction* second_instr = phi->InputAt(second); in FixPhisAfterPredecessorsReodering()
486 HInstruction* orig_input = header_phi->InputAt(first_nonbackedge_pred_pos); in TransformLoopToSinglePreheaderFormat()
[all …]
Dinduction_var_analysis.cc29 ArenaVector<HInstruction*>* scc, in RotateEntryPhiFirst()
30 ArenaVector<HInstruction*>* new_scc) { in RotateEntryPhiFirst()
33 HInstruction* phi = nullptr; in RotateEntryPhiFirst()
37 HInstruction* other = (*scc)[i]; in RotateEntryPhiFirst()
101 HInstruction* a, in IsGuardedBy()
102 HInstruction* b) { in IsGuardedBy()
120 HInstruction* control = guard->GetLastInstruction(); in IsGuardedBy()
125 HInstruction* if_expr = ifs->InputAt(0); in IsGuardedBy()
146 HInstruction* FindFirstLoopHeaderPhiUse(HLoopInformation* loop, HInstruction* instruction) { in FindFirstLoopHeaderPhiUse()
147 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in FindFirstLoopHeaderPhiUse()
[all …]
Dcommon_arm.h87 inline vixl::aarch32::SRegister OutputSRegister(HInstruction* instr) { in OutputSRegister()
93 inline vixl::aarch32::DRegister OutputDRegister(HInstruction* instr) { in OutputDRegister()
99 inline vixl::aarch32::VRegister OutputVRegister(HInstruction* instr) { in OutputVRegister()
108 inline vixl::aarch32::SRegister InputSRegisterAt(HInstruction* instr, int input_index) { in InputSRegisterAt()
114 inline vixl::aarch32::DRegister InputDRegisterAt(HInstruction* instr, int input_index) { in InputDRegisterAt()
120 inline vixl::aarch32::VRegister InputVRegisterAt(HInstruction* instr, int input_index) { in InputVRegisterAt()
130 inline vixl::aarch32::VRegister InputVRegister(HInstruction* instr) { in InputVRegister()
135 inline vixl::aarch32::Register OutputRegister(HInstruction* instr) { in OutputRegister()
139 inline vixl::aarch32::Register InputRegisterAt(HInstruction* instr, int input_index) { in InputRegisterAt()
144 inline vixl::aarch32::Register InputRegister(HInstruction* instr) { in InputRegister()
[all …]
Dlicm.cc23 static bool IsPhiOf(HInstruction* instruction, HBasicBlock* block) { in IsPhiOf()
31 static bool InputsAreDefinedBeforeLoop(HInstruction* instruction) { in InputsAreDefinedBeforeLoop()
34 for (const HInstruction* input : instruction->GetInputs()) { in InputsAreDefinedBeforeLoop()
47 HInstruction* input = environment->GetInstructionAt(i); in InputsAreDefinedBeforeLoop()
70 HInstruction* input = environment->GetInstructionAt(i); in UpdateLoopPhisIn()
73 HInstruction* incoming = input->InputAt(0); in UpdateLoopPhisIn()
132 HInstruction* instruction = inst_it.Current(); in Run()
Ddead_code_elimination.cc45 HInstruction* last_instruction = block->GetLastInstruction(); in MarkReachableBlocks()
48 HInstruction* condition = if_instruction->InputAt(0); in MarkReachableBlocks()
61 HInstruction* switch_input = switch_instruction->InputAt(0); in MarkReachableBlocks()
103 static bool HasInput(HCondition* instruction, HInstruction* input) { in HasInput()
125 static HConstant* Evaluate(HCondition* condition, HInstruction* left, HInstruction* right) { in Evaluate()
165 HInstruction* cond = ifs->InputAt(0); in RemoveNonNullControlDependences()
175 HInstruction* obj = cond->InputAt(1); in RemoveNonNullControlDependences()
183 const HUseList<HInstruction*>& uses = obj->GetUses(); in RemoveNonNullControlDependences()
185 HInstruction* user = it->GetUser(); in RemoveNonNullControlDependences()
243 HInstruction* first = block->GetFirstInstruction(); in SimplifyAlwaysThrows()
[all …]
Dsuperblock_cloner.h140 using HInstructionMap = ArenaSafeMap<HInstruction*, HInstruction*>;
189 HInstruction* GetInstrCopy(HInstruction* orig_instr) const { in GetInstrCopy()
201 HInstruction* GetInstrOrig(HInstruction* copy_instr) const { in GetInstrOrig()
280 void ReplaceInputsWithCopies(HInstruction* copy_instr);
285 void DeepCloneEnvironmentWithRemapping(HInstruction* copy_instr, const HEnvironment* orig_env);
331 HInstruction* user, HInstruction* old_instruction, HInstruction* replacement);
336 void CheckInstructionInputsRemapping(HInstruction* orig_instr);
Dinduction_var_range.cc75 HInstruction* instruction, HInstruction* hint, /*out*/HInstruction** suitable) { in IsMaxAtHint()
99 static InductionVarRange::Value SimplifyMax(InductionVarRange::Value v, HInstruction* hint) { in SimplifyMax()
110 HInstruction* suitable = nullptr; in SimplifyMax()
144 static HInstruction* Insert(HBasicBlock* block, HInstruction* instruction) { in Insert()
153 static HInstruction* GetLoopControl(HLoopInformation* loop) { in GetLoopControl()
168 bool InductionVarRange::GetInductionRange(HInstruction* context, in GetInductionRange()
169 HInstruction* instruction, in GetInductionRange()
170 HInstruction* chase_hint, in GetInductionRange()
208 bool InductionVarRange::CanGenerateRange(HInstruction* context, in CanGenerateRange()
209 HInstruction* instruction, in CanGenerateRange()
[all …]

12345