Home
last modified time | relevance | path

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

1234

/art/compiler/optimizing/
Dinduction_var_range.h46 Value(HInstruction* i, int32_t a, int32_t b) in Value()
50 HInstruction* instruction;
65 bool GetInductionRange(HInstruction* context,
66 HInstruction* instruction,
81 bool CanGenerateCode(HInstruction* context,
82 HInstruction* instruction,
101 void GenerateRangeCode(HInstruction* context,
102 HInstruction* instruction,
105 /*out*/ HInstruction** lower,
106 /*out*/ HInstruction** upper);
[all …]
Dinduction_var_analysis_test.cc97 HInstruction* compare = new (&allocator_) HLessThan(basic_[d], constant100_); in BuildLoopNest()
133 HInstruction* InsertInstruction(HInstruction* instruction, int d) { in InsertInstruction()
147 HInstruction* InsertArrayStore(HInstruction* subscript, int d) { in InsertArrayStore()
155 std::string GetInductionInfo(HInstruction* instruction, int d) { in GetInductionInfo()
161 bool HaveSameInduction(HInstruction* instruction1, HInstruction* instruction2) { in HaveSameInduction()
184 HInstruction* parameter_; // "this"
185 HInstruction* constant0_;
186 HInstruction* constant1_;
187 HInstruction* constant100_;
188 HInstruction* float_constant0_;
[all …]
Dinstruction_simplifier_shared.cc25 HInstruction* input_other) { in TrySimpleMultiplyAccumulatePatterns()
37 HInstruction* input_a = input_other; in TrySimpleMultiplyAccumulatePatterns()
38 HInstruction* input_b = nullptr; // Set to a non-null value if we found a pattern to optimize. in TrySimpleMultiplyAccumulatePatterns()
39 HInstruction::InstructionKind op_kind; in TrySimpleMultiplyAccumulatePatterns()
48 op_kind = HInstruction::kAdd; in TrySimpleMultiplyAccumulatePatterns()
59 op_kind = HInstruction::kAdd; in TrySimpleMultiplyAccumulatePatterns()
67 op_kind = HInstruction::kSub; in TrySimpleMultiplyAccumulatePatterns()
109 HInstruction* use = mul->GetUses().front().GetUser(); in TryCombineMultiplyAccumulate()
122 HInstruction* accumulator = nullptr; in TryCombineMultiplyAccumulate()
124 HInstruction* binop_left = binop->GetLeft(); in TryCombineMultiplyAccumulate()
[all …]
Dload_store_elimination.cc34 ReferenceInfo(HInstruction* reference, size_t pos) : reference_(reference), position_(pos) { in ReferenceInfo()
46 for (const HUseListNode<HInstruction*>& use : reference_->GetUses()) { in ReferenceInfo()
47 HInstruction* user = use.GetUser(); in ReferenceInfo()
84 HInstruction* GetReference() const { in GetReference()
106 HInstruction* const reference_;
125 HInstruction* index, in HeapLocation()
144 HInstruction* GetIndex() const { return index_; } in GetIndex()
167 HInstruction* const index_; // index of an array element.
176 static HInstruction* HuntForOriginalReference(HInstruction* ref) { in HuntForOriginalReference()
214 ReferenceInfo* FindReferenceInfoOf(HInstruction* ref) const { in FindReferenceInfoOf()
[all …]
Dbounds_check_elimination_test.cc72 HInstruction* parameter1 = new (&allocator_) in TEST_F()
74 HInstruction* parameter2 = new (&allocator_) in TEST_F()
79 HInstruction* constant_1 = graph_->GetIntConstant(1); in TEST_F()
80 HInstruction* constant_0 = graph_->GetIntConstant(0); in TEST_F()
84 HInstruction* cmp = new (&allocator_) HGreaterThanOrEqual(parameter2, constant_0); in TEST_F()
169 HInstruction* parameter1 = new (&allocator_) in TEST_F()
171 HInstruction* parameter2 = new (&allocator_) in TEST_F()
176 HInstruction* constant_1 = graph_->GetIntConstant(1); in TEST_F()
177 HInstruction* constant_0 = graph_->GetIntConstant(0); in TEST_F()
178 HInstruction* constant_max_int = graph_->GetIntConstant(INT_MAX); in TEST_F()
[all …]
Dinliner.h71 HInstruction** return_replacement)
77 HInstruction** return_replacement);
88 HInstruction** return_replacement)
94 HInstruction* obj);
98 HInstruction* obj,
99 HInstruction* value);
123 HInstruction* receiver,
129 HInstruction* return_replacement,
142 HInstruction* AddTypeGuard(HInstruction* receiver,
143 HInstruction* cursor,
[all …]
Dinstruction_simplifier_arm64.h38 void TryExtractArrayAccessAddress(HInstruction* access,
39 HInstruction* array,
40 HInstruction* index,
42 bool TryMergeIntoUsersShifterOperand(HInstruction* instruction);
43 bool TryMergeIntoShifterOperand(HInstruction* use,
44 HInstruction* bitfield_op,
46 bool CanMergeIntoShifterOperand(HInstruction* use, HInstruction* bitfield_op) { in CanMergeIntoShifterOperand()
49 bool MergeIntoShifterOperand(HInstruction* use, HInstruction* bitfield_op) { in MergeIntoShifterOperand()
63 HInstruction* instruction = it.Current(); in VisitBasicBlock()
Dinduction_var_analysis.h100 HInstruction* f, in InductionInfo()
112 HInstruction* fetch;
116 bool IsVisitedNode(HInstruction* instruction) const { in IsVisitedNode()
125 InductionInfo* CreateInvariantFetch(HInstruction* f) { in CreateInvariantFetch()
149 void VisitNode(HLoopInformation* loop, HInstruction* instruction);
150 uint32_t VisitDescendant(HLoopInformation* loop, HInstruction* instruction);
151 void ClassifyTrivial(HLoopInformation* loop, HInstruction* instruction);
156 InductionInfo* TransferPhi(HLoopInformation* loop, HInstruction* phi, size_t input_index);
164 InductionInfo* SolvePhi(HInstruction* phi, size_t input_index);
166 HInstruction* entry_phi,
[all …]
Dnodes_shared.h26 HInstruction* accumulator,
27 HInstruction* mul_left,
28 HInstruction* mul_right,
41 bool InstructionDataEquals(HInstruction* other) const OVERRIDE { in InstructionDataEquals()
60 HInstruction* left,
61 HInstruction* right,
65 DCHECK(op == HInstruction::kAnd || op == HInstruction::kOr || op == HInstruction::kXor) << op; in HBinaryOperation()
74 case HInstruction::kAnd:
76 case HInstruction::kOr:
78 case HInstruction::kXor:
Dnodes_arm64.h43 HArm64DataProcWithShifterOp(HInstruction* instr,
44 HInstruction* left,
45 HInstruction* right,
59 bool InstructionDataEquals(HInstruction* other_instr) const OVERRIDE { in InstructionDataEquals()
75 static void GetOpInfoFromInstruction(HInstruction* bitfield_op,
102 HArm64IntermediateAddress(HInstruction* base_address, HInstruction* offset, uint32_t dex_pc) in HArm64IntermediateAddress()
109 bool InstructionDataEquals(HInstruction* other ATTRIBUTE_UNUSED) const OVERRIDE { return true; } in InstructionDataEquals()
112 HInstruction* GetBaseAddress() const { return InputAt(0); } in GetBaseAddress()
113 HInstruction* GetOffset() const { return InputAt(1); } in GetOffset()
Dinstruction_simplifier_arm64.cc30 void InstructionSimplifierArm64Visitor::TryExtractArrayAccessAddress(HInstruction* access, in TryExtractArrayAccessAddress()
31 HInstruction* array, in TryExtractArrayAccessAddress()
32 HInstruction* index, in TryExtractArrayAccessAddress()
81 bool InstructionSimplifierArm64Visitor::TryMergeIntoShifterOperand(HInstruction* use, in TryMergeIntoShifterOperand()
82 HInstruction* bitfield_op, in TryMergeIntoShifterOperand()
94 HInstruction* left; in TryMergeIntoShifterOperand()
95 HInstruction* right; in TryMergeIntoShifterOperand()
114 HInstruction* other_input; in TryMergeIntoShifterOperand()
153 bool InstructionSimplifierArm64Visitor::TryMergeIntoUsersShifterOperand(HInstruction* bitfield_op) { in TryMergeIntoUsersShifterOperand()
160 const HUseList<HInstruction*>& uses = bitfield_op->GetUses(); in TryMergeIntoUsersShifterOperand()
[all …]
Dbounds_check_elimination.cc36 ValueBound(HInstruction* instruction, int32_t constant) { in ValueBound()
67 static bool IsAddOrSubAConstant(HInstruction* instruction, in IsAddOrSubAConstant()
68 /* out */ HInstruction** left_instruction, in IsAddOrSubAConstant()
70 HInstruction* left_so_far = nullptr; in IsAddOrSubAConstant()
74 HInstruction* left = bin_op->GetLeft(); in IsAddOrSubAConstant()
75 HInstruction* right = bin_op->GetRight(); in IsAddOrSubAConstant()
95 static ValueBound AsValueBound(HInstruction* instruction) { in AsValueBound()
99 HInstruction *left; in AsValueBound()
109 static ValueBound DetectValueBoundFromValue(HInstruction* instruction, /* out */ bool* found) { in DetectValueBoundFromValue()
121 HInstruction *left; in DetectValueBoundFromValue()
[all …]
Dinstruction_simplifier.cc96 bool CanEnsureNotNullAt(HInstruction* instr, HInstruction* at) const;
185 HInstruction* left = op->GetLeft(); in TryDeMorganNegationFactoring()
186 HInstruction* right = op->GetRight(); in TryDeMorganNegationFactoring()
201 HInstruction* src_left = left->InputAt(0); in TryDeMorganNegationFactoring()
202 HInstruction* src_right = right->InputAt(0); in TryDeMorganNegationFactoring()
218 HInstruction* hnot; in TryDeMorganNegationFactoring()
238 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitShift()
256 static bool IsSubRegBitsMinusOther(HSub* sub, size_t reg_bits, HInstruction* other) { in IsSubRegBitsMinusOther()
286 HInstruction* left = op->GetLeft(); in TryReplaceWithRotate()
287 HInstruction* right = op->GetRight(); in TryReplaceWithRotate()
[all …]
Dnodes.h51 class HInstruction; variable
115 void AddInstruction(HInstruction* instruction);
116 void RemoveInstruction(HInstruction* instruction);
119 void InsertInstructionBefore(HInstruction* instruction, HInstruction* cursor);
120 void InsertInstructionAfter(HInstruction* instruction, HInstruction* cursor);
123 bool Contains(HInstruction* instruction) const;
128 bool FoundBefore(const HInstruction* instruction1,
129 const HInstruction* instruction2) const;
137 void AddAfter(HInstruction* cursor, const HInstructionList& instruction_list);
138 void AddBefore(HInstruction* cursor, const HInstructionList& instruction_list);
[all …]
Dregister_allocator.h30 class HInstruction; variable
123 HInstruction* instruction,
127 HInstruction* instruction,
130 void InsertMoveAfter(HInstruction* instruction, Location source, Location destination) const;
131 void AddInputMoveFor(HInstruction* input,
132 HInstruction* user,
136 HInstruction* instruction,
143 HInstruction* instruction,
148 void ProcessInstruction(HInstruction* instruction);
213 ArenaVector<HInstruction*> safepoints_;
Dlicm_test.cc98 HInstruction* parameter_; // "this"
99 HInstruction* int_constant_;
100 HInstruction* float_constant_;
112 HInstruction* get_field = new (&allocator_) HInstanceFieldGet(parameter_, in TEST_F()
122 HInstruction* set_field = new (&allocator_) HInstanceFieldSet( in TEST_F()
139 HInstruction* get_field = new (&allocator_) HInstanceFieldGet(parameter_, in TEST_F()
149 HInstruction* set_field = new (&allocator_) HInstanceFieldSet(parameter_, in TEST_F()
174 HInstruction* get_array = new (&allocator_) HArrayGet( in TEST_F()
177 HInstruction* set_array = new (&allocator_) HArraySet( in TEST_F()
194 HInstruction* get_array = new (&allocator_) HArrayGet( in TEST_F()
[all …]
Dprepare_for_register_allocation.cc51 HInstruction* value = instruction->GetValue(); in VisitArraySet()
65 HInstruction* implicit_clinit = nullptr; in VisitClinitCheck()
66 for (const HUseListNode<HInstruction*>& use : check->GetUses()) { in VisitClinitCheck()
67 HInstruction* user = use.GetUser(); in VisitClinitCheck()
88 const HUseList<HInstruction*>& uses = check->GetUses(); in VisitClinitCheck()
90 HInstruction* user = it->GetUser(); in VisitClinitCheck()
149 HInstruction* user) const { in CanEmitConditionAt()
167 HInstruction* user = condition->GetUses().front().GetUser(); in VisitCondition()
191 bool PrepareForRegisterAllocation::CanMoveClinitCheck(HInstruction* input, in CanMoveClinitCheck()
192 HInstruction* user) const { in CanMoveClinitCheck()
[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_;
Dreference_type_propagation.h41 void Visit(HInstruction* instruction);
80 void AddToWorklist(HInstruction* instr);
81 void AddDependentInstructionsToWorklist(HInstruction* instr);
83 bool UpdateNullability(HInstruction* instr);
84 bool UpdateReferenceTypeInfo(HInstruction* instr);
100 ArenaVector<HInstruction*> worklist_;
Dnodes.cc91 static void RemoveEnvironmentUses(HInstruction* instruction) { in RemoveEnvironmentUses()
103 static void RemoveAsUser(HInstruction* instruction) { in RemoveAsUser()
203 HInstruction* HBasicBlock::GetFirstInstructionDisregardMoves() const { in GetFirstInstructionDisregardMoves()
204 HInstruction* instruction = GetFirstInstruction(); in GetFirstInstructionDisregardMoves()
371 HInstruction* first_instruction = header->GetFirstInstruction(); in SimplifyLoop()
484 HInstruction* insert_before = nullptr; in InsertConstant()
486 HInstruction* gota = entry_block_->GetLastInstruction(); in InsertConstant()
488 HInstruction* suspend_check = gota->GetPrevious(); in InsertConstant()
715 bool HLoopInformation::IsDefinedOutOfTheLoop(HInstruction* instruction) const { in IsDefinedOutOfTheLoop()
759 static void UpdateInputsUsers(HInstruction* instruction) { in UpdateInputsUsers()
[all …]
Dnodes_test.cc37 HInstruction* parameter = new (&allocator) HParameterValue( in TEST()
45 HInstruction* null_check = new (&allocator) HNullCheck(parameter, 0); in TEST()
80 HInstruction* parameter1 = new (&allocator) HParameterValue( in TEST()
82 HInstruction* parameter2 = new (&allocator) HParameterValue( in TEST()
90 HInstruction* to_insert = new (&allocator) HNullCheck(parameter1, 0); in TEST()
108 HInstruction* parameter = new (&allocator) HParameterValue( in TEST()
114 HInstruction* to_add = new (&allocator) HNullCheck(parameter, 0); in TEST()
129 HInstruction* parameter1 = new (&allocator) HParameterValue( in TEST()
131 HInstruction* with_environment = new (&allocator) HNullCheck(parameter1, 0); in TEST()
141 ArenaVector<HInstruction*> array(allocator.Adapter()); in TEST()
Dreference_type_propagation.cc77 ArenaVector<HInstruction*>* worklist, in RTPVisitor()
92 void UpdateFieldAccessTypeInfo(HInstruction* instr, const FieldInfo& info);
93 void SetClassAsTypeInfo(HInstruction* instr, mirror::Class* klass, bool is_exact)
104 void UpdateReferenceTypeInfo(HInstruction* instr,
112 ArenaVector<HInstruction*>* worklist_;
135 HInstruction* instr = iti.Current(); in ValidateTypes()
156 void ReferenceTypePropagation::Visit(HInstruction* instruction) { in Visit()
184 HInstruction* instr = it.Current(); in VisitBasicBlock()
198 static bool ShouldCreateBoundType(HInstruction* position, in ShouldCreateBoundType()
199 HInstruction* obj, in ShouldCreateBoundType()
[all …]
Dssa_builder.cc30 HInstruction* equality_instr = it.Current(); in FixNullConstantType()
34 HInstruction* left = equality_instr->InputAt(0); in FixNullConstantType()
35 HInstruction* right = equality_instr->InputAt(1); in FixNullConstantType()
36 HInstruction* int_operand = nullptr; in FixNullConstantType()
88 HInstruction* next = phi->GetNext(); in FixEnvironmentPhis()
104 static void AddDependentInstructionsToWorklist(HInstruction* instruction, in AddDependentInstructionsToWorklist()
111 for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) { in AddDependentInstructionsToWorklist()
112 HInstruction* user = use.GetUser(); in AddDependentInstructionsToWorklist()
127 HInstruction* input = it.Current(); in TypePhiFromInputs()
173 HInstruction* input = phi->InputAt(i); in TypeInputsOfPhi()
[all …]
Dlocations.cc24 LocationSummary::LocationSummary(HInstruction* instruction, in LocationSummary()
45 Location Location::RegisterOrConstant(HInstruction* instruction) { in RegisterOrConstant()
51 Location Location::RegisterOrInt32Constant(HInstruction* instruction) { in RegisterOrInt32Constant()
62 Location Location::FpuRegisterOrInt32Constant(HInstruction* instruction) { in FpuRegisterOrInt32Constant()
73 Location Location::ByteRegisterOrConstant(int reg, HInstruction* instruction) { in ByteRegisterOrConstant()
79 Location Location::FpuRegisterOrConstant(HInstruction* instruction) { in FpuRegisterOrConstant()
Dssa_phi_elimination.cc47 for (const HUseListNode<HInstruction*>& use : phi->GetUses()) { in MarkDeadPhis()
89 HInstruction* current = block->GetFirstPhi(); in EliminateDeadPhis()
90 HInstruction* next = nullptr; in EliminateDeadPhis()
98 for (const HUseListNode<HInstruction*>& use : phi->GetUses()) { in EliminateDeadPhis()
99 HInstruction* user = use.GetUser(); in EliminateDeadPhis()
152 HInstruction* candidate = nullptr; in Run()
163 HInstruction* input = phi->InputAt(j); in Run()
185 HInstruction* input = current->InputAt(j); in Run()
238 for (const HUseListNode<HInstruction*>& use : current->GetUses()) { in Run()
239 HInstruction* user = use.GetUser(); in Run()

1234