Home
last modified time | relevance | path

Searched refs:HInstruction (Results 1 – 25 of 133) sorted by relevance

123456

/art/compiler/optimizing/
Dload_store_elimination_test.cc94 HInstruction* c1 = graph_->GetIntConstant(1); in CreateEntryBlockInstructions()
95 HInstruction* c4 = graph_->GetIntConstant(4); in CreateEntryBlockInstructions()
123 HInstruction* c0 = graph_->GetIntConstant(0); in CreateTestControlFlowGraph()
124 HInstruction* c1 = graph_->GetIntConstant(1); in CreateTestControlFlowGraph()
125 HInstruction* c128 = graph_->GetIntConstant(128); in CreateTestControlFlowGraph()
141 HInstruction* inc_phi = new (GetAllocator()) HAdd(DataType::Type::kInt32, phi_, c1); in CreateTestControlFlowGraph()
142 HInstruction* cmp = new (GetAllocator()) HGreaterThanOrEqual(phi_, c128); in CreateTestControlFlowGraph()
143 HInstruction* hif = new (GetAllocator()) HIf(cmp); in CreateTestControlFlowGraph()
179 HInstruction* cmp = new (GetAllocator()) HGreaterThanOrEqual(i_, j_); in CreateDiamondShapedCFG()
180 HInstruction* hif = new (GetAllocator()) HIf(cmp); in CreateDiamondShapedCFG()
[all …]
Descape.h24 class HInstruction; variable
37 virtual bool Visit(HInstruction* escape) = 0;
38 bool operator()(HInstruction* user) { in operator()
48 bool Visit(HInstruction* escape) override { in Visit()
65 virtual bool NoEscape(HInstruction* reference, HInstruction* user) = 0;
66 bool operator()(HInstruction* ref, HInstruction* user) { in operator()
76 bool NoEscape(HInstruction* ref, HInstruction* user) override { in NoEscape()
109 void CalculateEscape(HInstruction* reference,
115 inline void CalculateEscape(HInstruction* reference, in CalculateEscape()
116 bool (*no_escape_fn)(HInstruction*, HInstruction*), in CalculateEscape() argument
[all …]
Dloop_analysis.cc53 HInstruction* instruction = it.Current(); in CalculateLoopBasicProperties()
194 uint32_t GetMachineInstructionCount(HInstruction* inst) const { in GetMachineInstructionCount()
196 case HInstruction::InstructionKind::kAbs: in GetMachineInstructionCount()
198 case HInstruction::InstructionKind::kAdd: in GetMachineInstructionCount()
200 case HInstruction::InstructionKind::kAnd: in GetMachineInstructionCount()
202 case HInstruction::InstructionKind::kArrayLength: in GetMachineInstructionCount()
204 case HInstruction::InstructionKind::kArrayGet: in GetMachineInstructionCount()
206 case HInstruction::InstructionKind::kArraySet: in GetMachineInstructionCount()
208 case HInstruction::InstructionKind::kBoundsCheck: in GetMachineInstructionCount()
210 case HInstruction::InstructionKind::kCheckCast: in GetMachineInstructionCount()
[all …]
Dloop_optimization.h121 ArrayReference(HInstruction* b, HInstruction* o, DataType::Type t, bool l, bool c = false)
134 HInstruction* base; // base address
135 HInstruction* offset; // offset + i
347 HInstruction* lo,
348 HInstruction* hi,
349 HInstruction* step);
355 HInstruction* lo,
356 HInstruction* hi,
357 HInstruction* step,
366 HPhi* InitializeForNewLoop(HBasicBlock* new_preheader, HInstruction* lo);
[all …]
Dinduction_var_range.h48 Value(HInstruction* i, int32_t a, int32_t b) in Value()
52 HInstruction* instruction;
69 HInstruction* instruction,
70 HInstruction* chase_hint,
82 HInstruction* instruction,
102 HInstruction* instruction,
105 /*out*/ HInstruction** lower,
106 /*out*/ HInstruction** upper);
114 HInstruction* GenerateTakenTest(HInstruction* loop_control, HGraph* graph, HBasicBlock* block);
120 bool CanGenerateLastValue(HInstruction* instruction);
[all …]
Dssa_liveness_analysis_test.cc61 HInstruction* arg = new (GetAllocator()) HParameterValue( in TEST_F()
66 HInstruction* ret = new (GetAllocator()) HReturn(arg); in TEST_F()
81 HInstruction* array = new (GetAllocator()) HParameterValue( in TEST_F()
83 HInstruction* index = new (GetAllocator()) HParameterValue( in TEST_F()
85 HInstruction* value = new (GetAllocator()) HParameterValue( in TEST_F()
87 HInstruction* extra_arg1 = new (GetAllocator()) HParameterValue( in TEST_F()
89 HInstruction* extra_arg2 = new (GetAllocator()) HParameterValue( in TEST_F()
91 HInstruction* const args[] = { array, index, value, extra_arg1, extra_arg2 }; in TEST_F()
92 for (HInstruction* insn : args) { in TEST_F()
97 HInstruction* null_check = new (GetAllocator()) HNullCheck(array, 0); in TEST_F()
[all …]
Dload_store_analysis_test.cc70 HInstruction* array = new (GetAllocator()) HParameterValue( in TEST_F()
72 HInstruction* index = new (GetAllocator()) HParameterValue( in TEST_F()
74 HInstruction* c1 = graph_->GetIntConstant(1); in TEST_F()
75 HInstruction* c2 = graph_->GetIntConstant(2); in TEST_F()
76 HInstruction* c3 = graph_->GetIntConstant(3); in TEST_F()
77 HInstruction* array_get1 = new (GetAllocator()) HArrayGet(array, c1, DataType::Type::kInt32, 0); in TEST_F()
78 HInstruction* array_get2 = new (GetAllocator()) HArrayGet(array, c2, DataType::Type::kInt32, 0); in TEST_F()
79 HInstruction* array_set1 = in TEST_F()
81 HInstruction* array_set2 = in TEST_F()
151 HInstruction* c1 = graph_->GetIntConstant(1); in TEST_F()
[all …]
Dinduction_var_analysis.h108 HInstruction* f, in InductionInfo()
120 HInstruction* fetch;
134 InductionInfo* CreateInvariantFetch(HInstruction* f) { in CreateInvariantFetch()
152 HInstruction* f, in CreateInduction()
161 HInstruction* start_instruction,
163 /*inout*/ ScopedArenaSafeMap<HInstruction*, NodeInfo>* visited_instructions);
164 void ExtractScc(ArrayRef<const StackEntry> stack_tail, ScopedArenaVector<HInstruction*>* scc);
165 void ClassifyTrivial(const HLoopInformation* loop, HInstruction* instruction);
173 HInstruction* phi,
194 InductionInfo* SolvePhi(HInstruction* phi,
[all …]
Dinduction_var_analysis_test.cc113 HInstruction* compare = new (GetAllocator()) HLessThan(basic_[d], constant100_); in BuildLoopNest()
149 HInstruction* InsertInstruction(HInstruction* instruction, int d) { in InsertInstruction()
163 HInstruction* InsertArrayStore(HInstruction* subscript, int d) { in InsertArrayStore()
171 std::string GetInductionInfo(HInstruction* instruction, int d) { in GetInductionInfo()
178 HInstruction* control = loop_header_[d]->GetLastInstruction(); in GetTripCount()
184 bool HaveSameInduction(HInstruction* instruction1, HInstruction* instruction2) { in HaveSameInduction()
191 bool IsNarrowingLinear(HInstruction* instruction) { in IsNarrowingLinear()
211 HInstruction* parameter_; // "this"
212 HInstruction* constant0_;
213 HInstruction* constant1_;
[all …]
Dnodes_shared.h31 HInstruction* accumulator,
32 HInstruction* mul_left,
33 HInstruction* mul_right,
49 bool InstructionDataEquals(const HInstruction* other) const override { in InstructionDataEquals()
85 HInstruction* index, HInstruction* offset, HInstruction* shift, uint32_t dex_pc) in HIntermediateAddressIndex()
97 bool InstructionDataEquals([[maybe_unused]] const HInstruction* other) const override { in InstructionDataEquals()
102 HInstruction* GetIndex() const { return InputAt(0); } in GetIndex()
103 HInstruction* GetOffset() const { return InputAt(1); } in GetOffset()
104 HInstruction* GetShift() const { return InputAt(2); } in GetShift()
131 HDataProcWithShifterOp(HInstruction* instr,
[all …]
Dscheduler_test.cc96 HInstruction* array = new (GetAllocator()) HParameterValue(graph_->GetDexFile(), in TestBuildDependencyGraphAndSchedule()
100 HInstruction* c1 = graph_->GetIntConstant(1); in TestBuildDependencyGraphAndSchedule()
101 HInstruction* c2 = graph_->GetIntConstant(10); in TestBuildDependencyGraphAndSchedule()
102 HInstruction* add1 = new (GetAllocator()) HAdd(DataType::Type::kInt32, c1, c2); in TestBuildDependencyGraphAndSchedule()
103 HInstruction* add2 = new (GetAllocator()) HAdd(DataType::Type::kInt32, add1, c2); in TestBuildDependencyGraphAndSchedule()
104 HInstruction* mul = new (GetAllocator()) HMul(DataType::Type::kInt32, add1, add2); in TestBuildDependencyGraphAndSchedule()
105 HInstruction* div_check = new (GetAllocator()) HDivZeroCheck(add2, 0); in TestBuildDependencyGraphAndSchedule()
106 HInstruction* div = new (GetAllocator()) HDiv(DataType::Type::kInt32, add1, div_check, 0); in TestBuildDependencyGraphAndSchedule()
107 HInstruction* array_get1 = in TestBuildDependencyGraphAndSchedule()
109 HInstruction* array_set1 = in TestBuildDependencyGraphAndSchedule()
[all …]
Dinstruction_simplifier_x86_shared.cc32 HInstruction* left = instruction->GetLeft(); in TryCombineAndNot()
33 HInstruction* right = instruction->GetRight(); in TryCombineAndNot()
39 HInstruction* other_ins = (left_is_not ? right : left); in TryCombineAndNot()
68 HInstruction* candidate = nullptr; in TryGenerateResetLeastSetBit()
69 HInstruction* other = nullptr; in TryGenerateResetLeastSetBit()
70 HInstruction* left = instruction->GetLeft(); in TryGenerateResetLeastSetBit()
71 HInstruction* right = instruction->GetRight(); in TryGenerateResetLeastSetBit()
82 type, HInstruction::kAnd, other, instruction->GetDexPc()); in TryGenerateResetLeastSetBit()
101 HInstruction* left = instruction->GetLeft(); in TryGenerateMaskUptoLeastSetBit()
102 HInstruction* right = instruction->GetRight(); in TryGenerateMaskUptoLeastSetBit()
[all …]
Dregister_allocation_resolver.h30 class HInstruction; variable
45 void Resolve(ArrayRef<HInstruction* const> safepoints,
59 size_t CalculateMaximumSafepointSpillSize(ArrayRef<HInstruction* const> safepoints);
69 HInstruction* instruction,
73 HInstruction* instruction,
76 void InsertMoveAfter(HInstruction* instruction, Location source, Location destination) const;
77 void AddInputMoveFor(HInstruction* input,
78 HInstruction* user,
82 HInstruction* instruction,
88 HInstruction* instruction,
Dbounds_check_elimination_test.cc71 HInstruction* parameter1 = new (GetAllocator()) HParameterValue( in TEST_F()
73 HInstruction* parameter2 = new (GetAllocator()) HParameterValue( in TEST_F()
78 HInstruction* constant_1 = graph_->GetIntConstant(1); in TEST_F()
79 HInstruction* constant_0 = graph_->GetIntConstant(0); in TEST_F()
83 HInstruction* cmp = new (GetAllocator()) HGreaterThanOrEqual(parameter2, constant_0); in TEST_F()
168 HInstruction* parameter1 = new (GetAllocator()) HParameterValue( in TEST_F()
170 HInstruction* parameter2 = new (GetAllocator()) HParameterValue( in TEST_F()
175 HInstruction* constant_1 = graph_->GetIntConstant(1); in TEST_F()
176 HInstruction* constant_0 = graph_->GetIntConstant(0); in TEST_F()
177 HInstruction* constant_max_int = graph_->GetIntConstant(INT_MAX); in TEST_F()
[all …]
Dinstruction_simplifier_shared.cc29 HInstruction* input_other) { in TrySimpleMultiplyAccumulatePatterns()
41 HInstruction* input_a = input_other; in TrySimpleMultiplyAccumulatePatterns()
42 HInstruction* input_b = nullptr; // Set to a non-null value if we found a pattern to optimize. in TrySimpleMultiplyAccumulatePatterns()
43 HInstruction::InstructionKind op_kind; in TrySimpleMultiplyAccumulatePatterns()
52 op_kind = HInstruction::kAdd; in TrySimpleMultiplyAccumulatePatterns()
63 op_kind = HInstruction::kAdd; in TrySimpleMultiplyAccumulatePatterns()
71 op_kind = HInstruction::kSub; in TrySimpleMultiplyAccumulatePatterns()
113 HInstruction* use = mul->GetUses().front().GetUser(); in TryCombineMultiplyAccumulate()
126 HInstruction* accumulator = nullptr; in TryCombineMultiplyAccumulate()
128 HInstruction* binop_left = binop->GetLeft(); in TryCombineMultiplyAccumulate()
[all …]
Dcode_generator_utils.cc99 bool IsBooleanValueOrMaterializedCondition(HInstruction* cond_input) { in IsBooleanValueOrMaterializedCondition()
114 bool IsNonNegativeUse(HInstruction* target_user, HInstruction* value);
115 bool IsComparedValueNonNegativeInBlock(HInstruction* value,
119 ArenaSet<HInstruction*> seen_values_;
121 friend bool HasNonNegativeInputAt(HInstruction* instr, size_t i);
126 bool UnsignedUseAnalyzer::IsComparedValueNonNegativeInBlock(HInstruction* value, in IsComparedValueNonNegativeInBlock()
201 bool UnsignedUseAnalyzer::IsNonNegativeUse(HInstruction* target_user, HInstruction* value) { in IsNonNegativeUse()
214 for (const HUseListNode<HInstruction*>& use : value->GetUses()) { in IsNonNegativeUse()
215 HInstruction* user = use.GetUser(); in IsNonNegativeUse()
243 bool HasNonNegativeInputAt(HInstruction* instr, size_t i) { in HasNonNegativeInputAt()
[all …]
Dload_store_analysis.h37 ReferenceInfo(HInstruction* reference, size_t pos) in ReferenceInfo()
50 HInstruction* GetReference() const { in GetReference()
80 HInstruction* const reference_;
106 HInstruction* index, in HeapLocation()
126 HInstruction* GetIndex() const { return index_; } in GetIndex()
160 HInstruction* const index_;
217 HInstruction* HuntForOriginalReference(HInstruction* ref) const { in HuntForOriginalReference()
229 ReferenceInfo* FindReferenceInfoOf(HInstruction* ref) const { in FindReferenceInfoOf()
240 size_t GetFieldHeapLocation(HInstruction* object, const FieldInfo* field) const { in GetFieldHeapLocation()
252 size_t GetArrayHeapLocation(HInstruction* instruction) const { in GetArrayHeapLocation()
[all …]
Dscheduler.h160 SchedulingNode(HInstruction* instr, ScopedArenaAllocator* allocator, bool is_scheduling_barrier) in SchedulingNode()
212 HInstruction* GetInstruction() const { return instruction_; } in GetInstruction()
246 HInstruction* const instruction_;
277 bool HasSideEffectDependency(HInstruction* instr1, HInstruction* instr2) const { in HasSideEffectDependency()
293 static bool HasExceptionDependency(const HInstruction* instr1, const HInstruction* instr2);
294 static bool HasReorderingDependency(const HInstruction* instr1, const HInstruction* instr2);
305 bool HasMemoryDependency(HInstruction* instr1, HInstruction* instr2) const;
308 bool ArrayAccessMayAlias(HInstruction* instr1, HInstruction* instr2) const;
309 bool FieldAccessMayAlias(const HInstruction* instr1, const HInstruction* instr2) const;
310 size_t ArrayAccessHeapLocation(HInstruction* instruction) const;
[all …]
Dinliner.h100 HInstruction** return_replacement,
107 HInstruction** return_replacement,
130 HInstruction** return_replacement)
171 HInstruction* obj);
175 HInstruction* obj,
176 HInstruction* value,
244 void AddCHAGuard(HInstruction* invoke_instruction,
246 HInstruction* cursor,
250 HInstruction* receiver,
254 void MaybeRunReferenceTypePropagation(HInstruction* replacement,
[all …]
Dnodes_vector.h125 void SetGoverningPredicate(HInstruction* input, PredicationKind pred_kind) { in SetGoverningPredicate()
133 void SetMergingGoverningPredicate(HInstruction* input) { in SetMergingGoverningPredicate()
136 void SetZeroingGoverningPredicate(HInstruction* input) { in SetZeroingGoverningPredicate()
143 HInstruction* pred_input = InputAt(InputCount() - 1); in GetGoverningPredicate()
189 bool InstructionDataEquals(const HInstruction* other) const override { in InstructionDataEquals()
230 static bool ReturnsSIMDValue(HInstruction* instruction) { in ReturnsSIMDValue()
248 static constexpr size_t kPredicationKind = HInstruction::kNumberOfGenericPackedBits;
270 HInstruction* input, in HVecUnaryOperation()
284 HInstruction* GetInput() const { return InputAt(0); } in GetInput()
297 HInstruction* left, in HVecBinaryOperation()
[all …]
Dloop_optimization.cc53 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()
[all …]
Dscheduler.cc53 bool SideEffectDependencyAnalysis::HasReorderingDependency(const HInstruction* instr1, in HasReorderingDependency()
54 const HInstruction* instr2) { in HasReorderingDependency()
77 HInstruction* instruction) const { in ArrayAccessHeapLocation()
86 HInstruction* instr1, HInstruction* instr2) const { in ArrayAccessMayAlias()
104 static bool IsArrayAccess(const HInstruction* instruction) { in IsArrayAccess()
108 static bool IsInstanceFieldAccess(const HInstruction* instruction) { in IsInstanceFieldAccess()
112 static bool IsStaticFieldAccess(const HInstruction* instruction) { in IsStaticFieldAccess()
116 static bool IsFieldAccess(const HInstruction* instruction) { in IsFieldAccess()
120 static const FieldInfo* GetFieldInfo(const HInstruction* instruction) { in GetFieldInfo()
125 const HInstruction* instr) const { in FieldAccessHeapLocation()
[all …]
Dinstruction_simplifier_arm.cc46 bool TryMergeIntoUsersShifterOperand(HInstruction* instruction);
47 bool TryMergeIntoShifterOperand(HInstruction* use, HInstruction* bitfield_op, bool do_merge);
48 bool CanMergeIntoShifterOperand(HInstruction* use, HInstruction* bitfield_op) { in CanMergeIntoShifterOperand()
51 bool MergeIntoShifterOperand(HInstruction* use, HInstruction* bitfield_op) { in MergeIntoShifterOperand()
65 HInstruction* instruction = it.Current(); in VisitBasicBlock()
87 bool InstructionSimplifierArmVisitor::TryMergeIntoShifterOperand(HInstruction* use, in TryMergeIntoShifterOperand()
88 HInstruction* bitfield_op, in TryMergeIntoShifterOperand()
100 HInstruction* left = use->InputAt(0); in TryMergeIntoShifterOperand()
101 HInstruction* right = use->InputAt(1); in TryMergeIntoShifterOperand()
112 HInstruction* other_input; in TryMergeIntoShifterOperand()
[all …]
Dcode_sinking.cc51 HInstruction* last = exit_predecessor->GetLastInstruction(); in UncommonBranchSinking()
76 static bool IsInterestingInstruction(HInstruction* instruction) { in IsInterestingInstruction()
152 static void AddInstruction(HInstruction* instruction, in AddInstruction()
155 ScopedArenaVector<HInstruction*>* worklist) { in AddInstruction()
165 static void AddInputs(HInstruction* instruction, in AddInputs()
168 ScopedArenaVector<HInstruction*>* worklist) { in AddInputs()
169 for (HInstruction* input : instruction->GetInputs()) { in AddInputs()
177 ScopedArenaVector<HInstruction*>* worklist) { in AddInputs()
186 static bool ShouldFilterUse(HInstruction* instruction, in ShouldFilterUse()
187 HInstruction* user, in ShouldFilterUse()
[all …]
Dinstruction_simplifier_arm64.cc46 bool TryMergeIntoUsersShifterOperand(HInstruction* instruction);
47 bool TryMergeIntoShifterOperand(HInstruction* use,
48 HInstruction* bitfield_op,
50 bool CanMergeIntoShifterOperand(HInstruction* use, HInstruction* bitfield_op) { in CanMergeIntoShifterOperand()
53 bool MergeIntoShifterOperand(HInstruction* use, HInstruction* bitfield_op) { in MergeIntoShifterOperand()
67 HInstruction* instruction = it.Current(); in VisitBasicBlock()
93 bool InstructionSimplifierArm64Visitor::TryMergeIntoShifterOperand(HInstruction* use, in TryMergeIntoShifterOperand()
94 HInstruction* bitfield_op, in TryMergeIntoShifterOperand()
106 HInstruction* left; in TryMergeIntoShifterOperand()
107 HInstruction* right; in TryMergeIntoShifterOperand()
[all …]

123456