/art/compiler/optimizing/ |
D | constant_folding.cc | 50 void VisitEqual(HEqual* instruction) override; 51 void VisitNotEqual(HNotEqual* instruction) override; 53 void VisitAbove(HAbove* instruction) override; 54 void VisitAboveOrEqual(HAboveOrEqual* instruction) override; 55 void VisitBelow(HBelow* instruction) override; 56 void VisitBelowOrEqual(HBelowOrEqual* instruction) override; 58 void VisitAnd(HAnd* instruction) override; 59 void VisitCompare(HCompare* instruction) override; 60 void VisitMul(HMul* instruction) override; 61 void VisitOr(HOr* instruction) override; [all …]
|
D | code_generator_vector_arm_vixl.cc | 36 void LocationsBuilderARMVIXL::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 37 LocationSummary* locations = new (GetGraph()->GetAllocator()) LocationSummary(instruction); in VisitVecReplicateScalar() 38 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 49 LOG(FATAL) << "Unsupported SIMD type: " << instruction->GetPackedType(); in VisitVecReplicateScalar() 54 void InstructionCodeGeneratorARMVIXL::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 55 LocationSummary* locations = instruction->GetLocations(); in VisitVecReplicateScalar() 57 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 61 DCHECK_EQ(8u, instruction->GetVectorLength()); in VisitVecReplicateScalar() 62 __ Vdup(Untyped8, dst, InputRegisterAt(instruction, 0)); in VisitVecReplicateScalar() 66 DCHECK_EQ(4u, instruction->GetVectorLength()); in VisitVecReplicateScalar() [all …]
|
D | scheduler.cc | 76 HInstruction* instruction) const { in ArrayAccessHeapLocation() 78 size_t heap_loc = heap_location_collector_->GetArrayHeapLocation(instruction); in ArrayAccessHeapLocation() 103 static bool IsArrayAccess(const HInstruction* instruction) { in IsArrayAccess() argument 104 return instruction->IsArrayGet() || instruction->IsArraySet(); in IsArrayAccess() 107 static bool IsInstanceFieldAccess(const HInstruction* instruction) { in IsInstanceFieldAccess() argument 108 return instruction->IsInstanceFieldGet() || in IsInstanceFieldAccess() 109 instruction->IsInstanceFieldSet() || in IsInstanceFieldAccess() 110 instruction->IsUnresolvedInstanceFieldGet() || in IsInstanceFieldAccess() 111 instruction->IsUnresolvedInstanceFieldSet(); in IsInstanceFieldAccess() 114 static bool IsStaticFieldAccess(const HInstruction* instruction) { in IsStaticFieldAccess() argument [all …]
|
D | instruction_simplifier_arm64.cc | 43 bool TryMergeIntoUsersShifterOperand(HInstruction* instruction); 64 HInstruction* instruction = it.Current(); in VisitBasicBlock() local 65 if (instruction->IsInBlock()) { in VisitBasicBlock() 66 instruction->Accept(this); in VisitBasicBlock() 72 void VisitAnd(HAnd* instruction) override; 73 void VisitArrayGet(HArrayGet* instruction) override; 74 void VisitArraySet(HArraySet* instruction) override; 75 void VisitMul(HMul* instruction) override; 76 void VisitOr(HOr* instruction) override; 77 void VisitShl(HShl* instruction) override; [all …]
|
D | code_generator_vector_x86.cc | 28 void LocationsBuilderX86::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 29 LocationSummary* locations = new (GetGraph()->GetAllocator()) LocationSummary(instruction); in VisitVecReplicateScalar() 30 HInstruction* input = instruction->InputAt(0); in VisitVecReplicateScalar() 32 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 57 LOG(FATAL) << "Unsupported SIMD type: " << instruction->GetPackedType(); in VisitVecReplicateScalar() 62 void InstructionCodeGeneratorX86::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 63 LocationSummary* locations = instruction->GetLocations(); in VisitVecReplicateScalar() 68 if (IsZeroBitPattern(instruction->InputAt(0))) { in VisitVecReplicateScalar() 73 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 77 DCHECK_EQ(16u, instruction->GetVectorLength()); in VisitVecReplicateScalar() [all …]
|
D | code_generator_vector_x86_64.cc | 28 void LocationsBuilderX86_64::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 29 LocationSummary* locations = new (GetGraph()->GetAllocator()) LocationSummary(instruction); in VisitVecReplicateScalar() 30 HInstruction* input = instruction->InputAt(0); in VisitVecReplicateScalar() 32 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 52 LOG(FATAL) << "Unsupported SIMD type: " << instruction->GetPackedType(); in VisitVecReplicateScalar() 57 void InstructionCodeGeneratorX86_64::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 58 LocationSummary* locations = instruction->GetLocations(); in VisitVecReplicateScalar() 63 if (IsZeroBitPattern(instruction->InputAt(0))) { in VisitVecReplicateScalar() 68 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 72 DCHECK_EQ(16u, instruction->GetVectorLength()); in VisitVecReplicateScalar() [all …]
|
D | code_generator_vector_arm64.cc | 50 void LocationsBuilderARM64::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 51 LocationSummary* locations = new (GetGraph()->GetAllocator()) LocationSummary(instruction); in VisitVecReplicateScalar() 52 HInstruction* input = instruction->InputAt(0); in VisitVecReplicateScalar() 53 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 61 locations->SetInAt(0, ARM64EncodableConstantOrRegister(input, instruction)); in VisitVecReplicateScalar() 67 Arm64CanEncodeConstantAsImmediate(input->AsConstant(), instruction)) { in VisitVecReplicateScalar() 76 LOG(FATAL) << "Unsupported SIMD type: " << instruction->GetPackedType(); in VisitVecReplicateScalar() 81 void InstructionCodeGeneratorARM64::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 82 LocationSummary* locations = instruction->GetLocations(); in VisitVecReplicateScalar() 85 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() [all …]
|
D | code_sinking.cc | 46 static bool IsInterestingInstruction(HInstruction* instruction) { in IsInterestingInstruction() argument 48 if (instruction->GetBlock() == instruction->GetBlock()->GetGraph()->GetEntryBlock()) { in IsInterestingInstruction() 55 if (instruction->IsInstanceFieldSet()) { in IsInterestingInstruction() 56 if (instruction->AsInstanceFieldSet()->IsVolatile()) { in IsInterestingInstruction() 62 if (instruction->IsNewInstance() || instruction->IsNewArray()) { in IsInterestingInstruction() 68 if (instruction->IsConstructorFence()) { in IsInterestingInstruction() 69 HConstructorFence* ctor_fence = instruction->AsConstructorFence(); in IsInterestingInstruction() 83 if (instruction->CanThrow()) { in IsInterestingInstruction() 91 if (instruction->IsInstanceFieldSet()) { in IsInterestingInstruction() 92 if (!instruction->InputAt(0)->IsNewInstance()) { in IsInterestingInstruction() [all …]
|
D | instruction_simplifier_arm.cc | 43 bool TryMergeIntoUsersShifterOperand(HInstruction* instruction); 62 HInstruction* instruction = it.Current(); in VisitBasicBlock() local 63 if (instruction->IsInBlock()) { in VisitBasicBlock() 64 instruction->Accept(this); in VisitBasicBlock() 69 void VisitAnd(HAnd* instruction) override; 70 void VisitArrayGet(HArrayGet* instruction) override; 71 void VisitArraySet(HArraySet* instruction) override; 72 void VisitMul(HMul* instruction) override; 73 void VisitOr(HOr* instruction) override; 74 void VisitShl(HShl* instruction) override; [all …]
|
D | instruction_simplifier_x86_shared.cc | 21 bool TryCombineAndNot(HAnd* instruction) { in TryCombineAndNot() argument 22 DataType::Type type = instruction->GetType(); in TryCombineAndNot() 31 HInstruction* left = instruction->GetLeft(); in TryCombineAndNot() 32 HInstruction* right = instruction->GetRight(); in TryCombineAndNot() 43 ArenaAllocator* arena = instruction->GetBlock()->GetGraph()->GetAllocator(); in TryCombineAndNot() 47 instruction->GetDexPc()); in TryCombineAndNot() 48 instruction->GetBlock()->ReplaceAndRemoveInstructionWith(instruction, and_not); in TryCombineAndNot() 57 bool TryGenerateResetLeastSetBit(HAnd* instruction) { in TryGenerateResetLeastSetBit() argument 58 DataType::Type type = instruction->GetType(); in TryGenerateResetLeastSetBit() 69 HInstruction* left = instruction->GetLeft(); in TryGenerateResetLeastSetBit() [all …]
|
D | locations.cc | 29 LocationSummary::LocationSummary(HInstruction* instruction, in LocationSummary() argument 33 : inputs_(instruction->InputCount(), allocator->Adapter(kArenaAllocLocationSummary)), in LocationSummary() 43 instruction->SetLocations(this); in LocationSummary() 50 LocationSummary::LocationSummary(HInstruction* instruction, in LocationSummary() argument 53 : LocationSummary(instruction, in LocationSummary() 56 instruction->GetBlock()->GetGraph()->GetAllocator()) {} in LocationSummary() 58 Location Location::RegisterOrConstant(HInstruction* instruction) { in RegisterOrConstant() argument 59 return instruction->IsConstant() in RegisterOrConstant() 60 ? Location::ConstantLocation(instruction->AsConstant()) in RegisterOrConstant() 64 Location Location::RegisterOrInt32Constant(HInstruction* instruction) { in RegisterOrInt32Constant() argument [all …]
|
D | instruction_simplifier.cc | 55 bool TryReplaceWithRotate(HBinaryOperation* instruction); 65 bool TryHandleAssociativeAndCommutativeOperation(HBinaryOperation* instruction); 66 bool TrySubtractionChainSimplification(HBinaryOperation* instruction); 76 void VisitTypeConversion(HTypeConversion* instruction) override; 77 void VisitNullCheck(HNullCheck* instruction) override; 78 void VisitArrayLength(HArrayLength* instruction) override; 79 void VisitCheckCast(HCheckCast* instruction) override; 80 void VisitAbs(HAbs* instruction) override; 81 void VisitAdd(HAdd* instruction) override; 82 void VisitAnd(HAnd* instruction) override; [all …]
|
D | licm.cc | 23 static bool IsPhiOf(HInstruction* instruction, HBasicBlock* block) { in IsPhiOf() argument 24 return instruction->IsPhi() && instruction->GetBlock() == block; in IsPhiOf() 31 static bool InputsAreDefinedBeforeLoop(HInstruction* instruction) { in InputsAreDefinedBeforeLoop() argument 32 DCHECK(instruction->IsInLoop()); in InputsAreDefinedBeforeLoop() 33 HLoopInformation* info = instruction->GetBlock()->GetLoopInformation(); in InputsAreDefinedBeforeLoop() 34 for (const HInstruction* input : instruction->GetInputs()) { in InputsAreDefinedBeforeLoop() 43 for (HEnvironment* environment = instruction->GetEnvironment(); in InputsAreDefinedBeforeLoop() 132 HInstruction* instruction = inst_it.Current(); in Run() local 134 if (instruction->CanBeMoved() && InputsAreDefinedBeforeLoop(instruction)) { in Run() 135 if (instruction->CanThrow()) { in Run() [all …]
|
D | instruction_simplifier_x86.cc | 43 HInstruction* instruction = it.Current(); in VisitBasicBlock() local 44 if (instruction->IsInBlock()) { in VisitBasicBlock() 45 instruction->Accept(this); in VisitBasicBlock() 50 void VisitAnd(HAnd * instruction) override; 51 void VisitXor(HXor* instruction) override; 59 void InstructionSimplifierX86Visitor::VisitAnd(HAnd* instruction) { in VisitAnd() argument 60 if (TryCombineAndNot(instruction)) { in VisitAnd() 62 } else if (instruction->GetResultType() == DataType::Type::kInt32) { in VisitAnd() 63 if (TryGenerateResetLeastSetBit(instruction)) { in VisitAnd() 69 void InstructionSimplifierX86Visitor::VisitXor(HXor* instruction) { in VisitXor() argument [all …]
|
D | load_store_elimination.cc | 120 HTypeConversion* AddTypeConversionIfNecessary(HInstruction* instruction, in AddTypeConversionIfNecessary() argument 128 expected_type, value, instruction->GetDexPc()); in AddTypeConversionIfNecessary() 129 instruction->GetBlock()->InsertInstructionBefore(type_conversion, instruction); in AddTypeConversionIfNecessary() 136 HInstruction* FindSubstitute(HInstruction* instruction) { in FindSubstitute() argument 137 if (!IsLoad(instruction)) { in FindSubstitute() 138 return instruction; in FindSubstitute() 142 if (removed_loads_[i] == instruction) { in FindSubstitute() 149 return instruction; in FindSubstitute() 259 static bool IsLoad(const HInstruction* instruction) { in IsLoad() argument 260 if (instruction == kUnknownHeapValue || instruction == kDefaultHeapValue) { in IsLoad() [all …]
|
D | load_store_analysis.h | 254 size_t GetArrayHeapLocation(HInstruction* instruction) const { in GetArrayHeapLocation() argument 255 DCHECK(instruction != nullptr); in GetArrayHeapLocation() 256 HInstruction* array = instruction->InputAt(0); in GetArrayHeapLocation() 257 HInstruction* index = instruction->InputAt(1); in GetArrayHeapLocation() 258 DataType::Type type = instruction->GetType(); in GetArrayHeapLocation() 260 if (instruction->IsArraySet()) { in GetArrayHeapLocation() 261 type = instruction->AsArraySet()->GetComponentType(); in GetArrayHeapLocation() 262 } else if (instruction->IsVecStore() || in GetArrayHeapLocation() 263 instruction->IsVecLoad()) { in GetArrayHeapLocation() 264 HVecOperation* vec_op = instruction->AsVecOperation(); in GetArrayHeapLocation() [all …]
|
D | instruction_simplifier_x86_64.cc | 43 HInstruction* instruction = it.Current(); in VisitBasicBlock() local 44 if (instruction->IsInBlock()) { in VisitBasicBlock() 45 instruction->Accept(this); in VisitBasicBlock() 50 void VisitAnd(HAnd* instruction) override; 51 void VisitXor(HXor* instruction) override; 58 void InstructionSimplifierX86_64Visitor::VisitAnd(HAnd* instruction) { in VisitAnd() argument 59 if (TryCombineAndNot(instruction)) { in VisitAnd() 61 } else if (TryGenerateResetLeastSetBit(instruction)) { in VisitAnd() 67 void InstructionSimplifierX86_64Visitor::VisitXor(HXor* instruction) { in VisitXor() argument 68 if (TryGenerateMaskUptoLeastSetBit(instruction)) { in VisitXor()
|
D | constructor_fence_redundancy_elimination.cc | 66 void VisitInstanceFieldSet(HInstanceFieldSet* instruction) override { in VisitInstanceFieldSet() argument 67 HInstruction* value = instruction->InputAt(1); in VisitInstanceFieldSet() 68 VisitSetLocation(instruction, value); in VisitInstanceFieldSet() 71 void VisitStaticFieldSet(HStaticFieldSet* instruction) override { in VisitStaticFieldSet() argument 72 HInstruction* value = instruction->InputAt(1); in VisitStaticFieldSet() 73 VisitSetLocation(instruction, value); in VisitStaticFieldSet() 76 void VisitArraySet(HArraySet* instruction) override { in VisitArraySet() argument 77 HInstruction* value = instruction->InputAt(2); in VisitArraySet() 78 VisitSetLocation(instruction, value); in VisitArraySet() 81 void VisitDeoptimize(HDeoptimize* instruction ATTRIBUTE_UNUSED) override { in VisitDeoptimize() [all …]
|
D | instruction_builder.cc | 245 void HInstructionBuilder::AppendInstruction(HInstruction* instruction) { in AppendInstruction() argument 246 current_block_->AddInstruction(instruction); in AppendInstruction() 247 InitializeInstruction(instruction); in AppendInstruction() 250 void HInstructionBuilder::InsertInstructionAtTop(HInstruction* instruction) { in InsertInstructionAtTop() argument 252 current_block_->AddInstruction(instruction); in InsertInstructionAtTop() 254 current_block_->InsertInstructionBefore(instruction, current_block_->GetFirstInstruction()); in InsertInstructionAtTop() 256 InitializeInstruction(instruction); in InsertInstructionAtTop() 259 void HInstructionBuilder::InitializeInstruction(HInstruction* instruction) { in InitializeInstruction() argument 260 if (instruction->NeedsEnvironment()) { in InitializeInstruction() 265 instruction->GetDexPc(), in InitializeInstruction() [all …]
|
D | graph_checker.cc | 38 static bool IsAllowedToJumpToExitBlock(HInstruction* instruction) { in IsAllowedToJumpToExitBlock() argument 40 if (instruction->IsReturn() || instruction->IsReturnVoid()) { in IsAllowedToJumpToExitBlock() 44 if (instruction->IsGoto() && instruction->GetPrevious() != nullptr) { in IsAllowedToJumpToExitBlock() 45 instruction = instruction->GetPrevious(); in IsAllowedToJumpToExitBlock() 47 return instruction->AlwaysThrows(); in IsAllowedToJumpToExitBlock() 358 void GraphChecker::VisitInstruction(HInstruction* instruction) { in VisitInstruction() argument 359 if (seen_ids_.IsBitSet(instruction->GetId())) { in VisitInstruction() 361 instruction->GetId())); in VisitInstruction() 363 seen_ids_.SetBit(instruction->GetId()); in VisitInstruction() 367 if (instruction->GetBlock() == nullptr) { in VisitInstruction() [all …]
|
D | instruction_simplifier_shared.h | 26 inline bool CanFitInShifterOperand(HInstruction* instruction) { in CanFitInShifterOperand() argument 27 if (instruction->IsTypeConversion()) { in CanFitInShifterOperand() 28 HTypeConversion* conversion = instruction->AsTypeConversion(); in CanFitInShifterOperand() 35 return (instruction->IsShl() && instruction->AsShl()->InputAt(1)->IsIntConstant()) || in CanFitInShifterOperand() 36 (instruction->IsShr() && instruction->AsShr()->InputAt(1)->IsIntConstant()) || in CanFitInShifterOperand() 37 (instruction->IsUShr() && instruction->AsUShr()->InputAt(1)->IsIntConstant()); in CanFitInShifterOperand()
|
D | nodes_shared.cc | 30 void HDataProcWithShifterOp::GetOpInfoFromInstruction(HInstruction* instruction, in GetOpInfoFromInstruction() argument 33 DCHECK(CanFitInShifterOperand(instruction)); in GetOpInfoFromInstruction() 34 if (instruction->IsShl()) { in GetOpInfoFromInstruction() 36 *shift_amount = instruction->AsShl()->GetRight()->AsIntConstant()->GetValue(); in GetOpInfoFromInstruction() 37 } else if (instruction->IsShr()) { in GetOpInfoFromInstruction() 39 *shift_amount = instruction->AsShr()->GetRight()->AsIntConstant()->GetValue(); in GetOpInfoFromInstruction() 40 } else if (instruction->IsUShr()) { in GetOpInfoFromInstruction() 42 *shift_amount = instruction->AsUShr()->GetRight()->AsIntConstant()->GetValue(); in GetOpInfoFromInstruction() 44 DCHECK(instruction->IsTypeConversion()); in GetOpInfoFromInstruction() 45 DataType::Type result_type = instruction->AsTypeConversion()->GetResultType(); in GetOpInfoFromInstruction() [all …]
|
D | graph_visualizer.cc | 338 void VisitParallelMove(HParallelMove* instruction) override { in VisitParallelMove() argument 339 StartAttributeStream("liveness") << instruction->GetLifetimePosition(); in VisitParallelMove() 341 for (size_t i = 0, e = instruction->NumMoves(); i < e; ++i) { in VisitParallelMove() 342 MoveOperands* move = instruction->MoveOperandsAt(i); in VisitParallelMove() 351 void VisitIntConstant(HIntConstant* instruction) override { in VisitIntConstant() argument 352 StartAttributeStream() << instruction->GetValue(); in VisitIntConstant() 355 void VisitLongConstant(HLongConstant* instruction) override { in VisitLongConstant() argument 356 StartAttributeStream() << instruction->GetValue(); in VisitLongConstant() 359 void VisitFloatConstant(HFloatConstant* instruction) override { in VisitFloatConstant() argument 360 StartAttributeStream() << instruction->GetValue(); in VisitFloatConstant() [all …]
|
D | loop_optimization.cc | 52 static void RemoveFromCycle(HInstruction* instruction) { in RemoveFromCycle() argument 53 instruction->RemoveAsUserOfAllInputs(); in RemoveFromCycle() 54 instruction->RemoveEnvironmentUsers(); in RemoveFromCycle() 55 instruction->GetBlock()->RemoveInstructionOrPhi(instruction, /*ensure_safety=*/ false); in RemoveFromCycle() 56 RemoveEnvironmentUses(instruction); in RemoveFromCycle() 57 ResetEnvironmentInputRecords(instruction); in RemoveFromCycle() 85 static bool IsZeroExtensionAndGet(HInstruction* instruction, 91 static bool IsSignExtensionAndGet(HInstruction* instruction, in IsSignExtensionAndGet() argument 98 if (IsInt64AndGet(instruction, /*out*/ &value)) { in IsSignExtensionAndGet() 103 *operand = instruction; in IsSignExtensionAndGet() [all …]
|
/art/tools/veridex/ |
D | flow_analysis.cc | 90 const Instruction& instruction = pair.Inst(); in FindBranches() local 92 if (instruction.IsBranch()) { in FindBranches() 93 SetAsBranchTarget(dex_pc + instruction.GetTargetOffset()); in FindBranches() 94 } else if (instruction.IsSwitch()) { in FindBranches() 95 DexSwitchTable table(instruction, dex_pc); in FindBranches() 147 int VeriFlowAnalysis::GetBranchFlags(const Instruction& instruction) const { in GetBranchFlags() 148 switch (instruction.Opcode()) { in GetBranchFlags() 151 RegisterValue lhs = GetRegister(instruction.VRegA()); \ in GetBranchFlags() 152 RegisterValue rhs = GetRegister(instruction.VRegB()); \ in GetBranchFlags() 163 RegisterValue val = GetRegister(instruction.VRegA()); \ in GetBranchFlags() [all …]
|