/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 | instruction_simplifier_arm64.cc | 44 bool TryMergeIntoUsersShifterOperand(HInstruction* instruction); 65 HInstruction* instruction = it.Current(); in VisitBasicBlock() local 66 if (instruction->IsInBlock()) { in VisitBasicBlock() 67 instruction->Accept(this); in VisitBasicBlock() 73 void VisitAnd(HAnd* instruction) override; 74 void VisitArrayGet(HArrayGet* instruction) override; 75 void VisitArraySet(HArraySet* instruction) override; 76 void VisitMul(HMul* instruction) override; 77 void VisitOr(HOr* instruction) override; 78 void VisitShl(HShl* instruction) override; [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 | 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 | instruction_simplifier_arm.cc | 44 bool TryMergeIntoUsersShifterOperand(HInstruction* instruction); 63 HInstruction* instruction = it.Current(); in VisitBasicBlock() local 64 if (instruction->IsInBlock()) { in VisitBasicBlock() 65 instruction->Accept(this); in VisitBasicBlock() 70 void VisitAnd(HAnd* instruction) override; 71 void VisitArrayGet(HArrayGet* instruction) override; 72 void VisitArraySet(HArraySet* instruction) override; 73 void VisitMul(HMul* instruction) override; 74 void VisitOr(HOr* instruction) override; 75 void VisitShl(HShl* instruction) override; [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() || instruction->IsLoadString()) { 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 | code_generator_vector_arm64_sve.cc | 48 void LocationsBuilderARM64Sve::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 49 LocationSummary* locations = new (GetGraph()->GetAllocator()) LocationSummary(instruction); in VisitVecReplicateScalar() 50 HInstruction* input = instruction->InputAt(0); in VisitVecReplicateScalar() 51 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 59 locations->SetInAt(0, ARM64EncodableConstantOrRegister(input, instruction)); in VisitVecReplicateScalar() 65 Arm64CanEncodeConstantAsImmediate(input->AsConstant(), instruction)) { in VisitVecReplicateScalar() 74 LOG(FATAL) << "Unsupported SIMD type: " << instruction->GetPackedType(); in VisitVecReplicateScalar() 79 void InstructionCodeGeneratorARM64Sve::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 80 LocationSummary* locations = instruction->GetLocations(); in VisitVecReplicateScalar() 83 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() [all …]
|
D | code_generator_vector_arm64_neon.cc | 48 void LocationsBuilderARM64Neon::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 49 LocationSummary* locations = new (GetGraph()->GetAllocator()) LocationSummary(instruction); in VisitVecReplicateScalar() 50 HInstruction* input = instruction->InputAt(0); in VisitVecReplicateScalar() 51 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() 59 locations->SetInAt(0, ARM64EncodableConstantOrRegister(input, instruction)); in VisitVecReplicateScalar() 65 Arm64CanEncodeConstantAsImmediate(input->AsConstant(), instruction)) { in VisitVecReplicateScalar() 74 LOG(FATAL) << "Unsupported SIMD type: " << instruction->GetPackedType(); in VisitVecReplicateScalar() 79 void InstructionCodeGeneratorARM64Neon::VisitVecReplicateScalar(HVecReplicateScalar* instruction) { in VisitVecReplicateScalar() argument 80 LocationSummary* locations = instruction->GetLocations(); in VisitVecReplicateScalar() 83 switch (instruction->GetPackedType()) { in VisitVecReplicateScalar() [all …]
|
D | load_store_elimination.cc | 120 HTypeConversion* FindOrAddTypeConversionIfNecessary(HInstruction* instruction, in FindOrAddTypeConversionIfNecessary() argument 138 use.GetUser()->GetBlock()->Dominates(instruction->GetBlock()) && in FindOrAddTypeConversionIfNecessary() 141 (use.GetUser()->GetBlock() == instruction->GetBlock() || in FindOrAddTypeConversionIfNecessary() 143 if (use.GetUser()->GetBlock() == instruction->GetBlock() && in FindOrAddTypeConversionIfNecessary() 144 use.GetUser()->GetBlock()->GetInstructions().FoundBefore(instruction, use.GetUser())) { in FindOrAddTypeConversionIfNecessary() 146 use.GetUser()->MoveBefore(instruction); in FindOrAddTypeConversionIfNecessary() 148 DCHECK(use.GetUser()->StrictlyDominates(instruction)); in FindOrAddTypeConversionIfNecessary() 155 expected_type, value, instruction->GetDexPc()); in FindOrAddTypeConversionIfNecessary() 156 instruction->GetBlock()->InsertInstructionBefore(type_conversion, instruction); in FindOrAddTypeConversionIfNecessary() 162 HInstruction* FindSubstitute(HInstruction* instruction) { in FindSubstitute() argument [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 | 57 bool TryReplaceWithRotate(HBinaryOperation* instruction); 67 bool TryHandleAssociativeAndCommutativeOperation(HBinaryOperation* instruction); 68 bool TrySubtractionChainSimplification(HBinaryOperation* instruction); 79 void VisitTypeConversion(HTypeConversion* instruction) override; 80 void VisitNullCheck(HNullCheck* instruction) override; 81 void VisitArrayLength(HArrayLength* instruction) override; 82 void VisitCheckCast(HCheckCast* instruction) override; 83 void VisitAbs(HAbs* instruction) override; 84 void VisitAdd(HAdd* instruction) override; 85 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 | 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 | load_store_analysis.h | 259 size_t GetArrayHeapLocation(HInstruction* instruction) const { in GetArrayHeapLocation() argument 260 DCHECK(instruction != nullptr); in GetArrayHeapLocation() 261 HInstruction* array = instruction->InputAt(0); in GetArrayHeapLocation() 262 HInstruction* index = instruction->InputAt(1); in GetArrayHeapLocation() 263 DataType::Type type = instruction->GetType(); in GetArrayHeapLocation() 265 if (instruction->IsArraySet()) { in GetArrayHeapLocation() 266 type = instruction->AsArraySet()->GetComponentType(); in GetArrayHeapLocation() 267 } else if (instruction->IsVecStore() || in GetArrayHeapLocation() 268 instruction->IsVecLoad()) { in GetArrayHeapLocation() 269 HVecOperation* vec_op = instruction->AsVecOperation(); in GetArrayHeapLocation() [all …]
|
D | instruction_builder.cc | 244 void HInstructionBuilder::AppendInstruction(HInstruction* instruction) { in AppendInstruction() argument 245 current_block_->AddInstruction(instruction); in AppendInstruction() 246 InitializeInstruction(instruction); in AppendInstruction() 249 void HInstructionBuilder::InsertInstructionAtTop(HInstruction* instruction) { in InsertInstructionAtTop() argument 251 current_block_->AddInstruction(instruction); in InsertInstructionAtTop() 253 current_block_->InsertInstructionBefore(instruction, current_block_->GetFirstInstruction()); in InsertInstructionAtTop() 255 InitializeInstruction(instruction); in InsertInstructionAtTop() 258 void HInstructionBuilder::InitializeInstruction(HInstruction* instruction) { in InitializeInstruction() argument 259 if (instruction->NeedsEnvironment()) { in InitializeInstruction() 264 instruction->GetDexPc(), in InitializeInstruction() [all …]
|
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 | graph_checker.cc | 39 static bool IsAllowedToJumpToExitBlock(HInstruction* instruction) { in IsAllowedToJumpToExitBlock() argument 41 if (instruction->IsReturn() || instruction->IsReturnVoid()) { in IsAllowedToJumpToExitBlock() 45 if (instruction->IsGoto() && instruction->GetPrevious() != nullptr) { in IsAllowedToJumpToExitBlock() 46 instruction = instruction->GetPrevious(); in IsAllowedToJumpToExitBlock() 48 return instruction->AlwaysThrows(); in IsAllowedToJumpToExitBlock() 359 void GraphChecker::VisitInstruction(HInstruction* instruction) { in VisitInstruction() argument 360 if (seen_ids_.IsBitSet(instruction->GetId())) { in VisitInstruction() 362 instruction->GetId())); in VisitInstruction() 364 seen_ids_.SetBit(instruction->GetId()); in VisitInstruction() 368 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_checker.h | 54 void VisitInstruction(HInstruction* instruction) override; 58 void VisitBooleanNot(HBooleanNot* instruction) override; 59 void VisitBoundType(HBoundType* instruction) override; 63 void VisitConstant(HConstant* instruction) override; 64 void VisitDeoptimize(HDeoptimize* instruction) override; 65 void VisitIf(HIf* instruction) override; 69 void VisitNeg(HNeg* instruction) override; 70 void VisitPackedSwitch(HPackedSwitch* instruction) override; 73 void VisitSelect(HSelect* instruction) override; 75 void VisitTypeConversion(HTypeConversion* instruction) override; [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 …]
|