/art/compiler/optimizing/ |
D | load_store_elimination_test.cc | 94 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 …]
|
D | escape.h | 24 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 …]
|
D | loop_analysis.cc | 53 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 …]
|
D | loop_optimization.h | 121 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 …]
|
D | induction_var_range.h | 48 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 …]
|
D | ssa_liveness_analysis_test.cc | 61 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 …]
|
D | load_store_analysis_test.cc | 70 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 …]
|
D | induction_var_analysis.h | 108 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 …]
|
D | induction_var_analysis_test.cc | 113 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 …]
|
D | nodes_shared.h | 31 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 …]
|
D | scheduler_test.cc | 96 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 …]
|
D | instruction_simplifier_x86_shared.cc | 32 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 …]
|
D | register_allocation_resolver.h | 30 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,
|
D | bounds_check_elimination_test.cc | 71 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 …]
|
D | instruction_simplifier_shared.cc | 29 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 …]
|
D | code_generator_utils.cc | 99 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 …]
|
D | load_store_analysis.h | 37 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 …]
|
D | scheduler.h | 160 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 …]
|
D | inliner.h | 100 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 …]
|
D | nodes_vector.h | 125 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 …]
|
D | loop_optimization.cc | 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() [all …]
|
D | scheduler.cc | 53 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 …]
|
D | instruction_simplifier_arm.cc | 46 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 …]
|
D | code_sinking.cc | 51 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 …]
|
D | instruction_simplifier_arm64.cc | 46 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 …]
|