Home
last modified time | relevance | path

Searched refs:instruction (Results 1 – 25 of 140) sorted by relevance

123456

/art/compiler/optimizing/
Dconstant_folding.cc50 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 …]
Dcode_generator_vector_arm_vixl.cc36 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 …]
Dinstruction_simplifier_arm64.cc44 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 …]
Dscheduler.cc76 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 …]
Dcode_generator_vector_x86.cc28 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 …]
Dcode_generator_vector_x86_64.cc28 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 …]
Dinstruction_simplifier_arm.cc44 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 …]
Dcode_sinking.cc46 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 …]
Dcode_generator_vector_arm64_sve.cc48 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 …]
Dcode_generator_vector_arm64_neon.cc48 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 …]
Dload_store_elimination.cc120 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 …]
Dinstruction_simplifier_x86_shared.cc21 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 …]
Dlocations.cc29 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 …]
Dinstruction_simplifier.cc57 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 …]
Dlicm.cc23 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 …]
Dinstruction_simplifier_x86.cc43 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 …]
Dinstruction_simplifier_x86_64.cc43 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()
Dload_store_analysis.h259 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 …]
Dinstruction_builder.cc244 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 …]
Dconstructor_fence_redundancy_elimination.cc66 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 …]
Dgraph_checker.cc39 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 …]
Dinstruction_simplifier_shared.h26 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()
Dnodes_shared.cc30 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 …]
Dgraph_checker.h54 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/
Dflow_analysis.cc90 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 …]

123456