/art/compiler/optimizing/ |
D | parallel_move_test.cc | 36 static void DumpLocationForTest(std::ostream& os, Location location) { in DumpLocationForTest() 107 Location AllocateScratchLocationFor(Location::Kind kind) OVERRIDE { in AllocateScratchLocationFor() 108 if (kind == Location::kStackSlot || kind == Location::kFpuRegister || in AllocateScratchLocationFor() 109 kind == Location::kRegister) { in AllocateScratchLocationFor() 110 kind = Location::kRegister; in AllocateScratchLocationFor() 113 kind = Location::kRegisterPair; in AllocateScratchLocationFor() 115 Location scratch = GetScratchLocation(kind); in AllocateScratchLocationFor() 116 if (scratch.Equals(Location::NoLocation())) { in AllocateScratchLocationFor() 117 AddScratchLocation(Location::RegisterLocation(scratch_index_)); in AllocateScratchLocationFor() 118 AddScratchLocation(Location::RegisterLocation(scratch_index_ + 1)); in AllocateScratchLocationFor() [all …]
|
D | locations.h | 30 class Location; variable 32 std::ostream& operator<<(std::ostream& os, const Location& location); 38 class Location : public ValueObject { 72 Location() : value_(kInvalid) { in Location() function 87 Location(const Location& other) : ValueObject(), value_(other.value_) {} in Location() function 89 Location& operator=(const Location& other) { 98 static Location ConstantLocation(HConstant* constant) { in ConstantLocation() 100 return Location(kConstant | reinterpret_cast<uintptr_t>(constant)); in ConstantLocation() 117 static Location NoLocation() { in NoLocation() 118 return Location(); in NoLocation() [all …]
|
D | locations.cc | 28 output_overlaps_(Location::kOutputOverlap), in LocationSummary() 36 inputs_.Put(i, Location()); in LocationSummary() 47 Location Location::RegisterOrConstant(HInstruction* instruction) { in RegisterOrConstant() 49 ? Location::ConstantLocation(instruction->AsConstant()) in RegisterOrConstant() 50 : Location::RequiresRegister(); in RegisterOrConstant() 53 Location Location::RegisterOrInt32LongConstant(HInstruction* instruction) { in RegisterOrInt32LongConstant() 55 return Location::RequiresRegister(); in RegisterOrInt32LongConstant() 62 ? Location::ConstantLocation(instruction->AsConstant()) in RegisterOrInt32LongConstant() 63 : Location::RequiresRegister(); in RegisterOrInt32LongConstant() 66 Location Location::ByteRegisterOrConstant(int reg, HInstruction* instruction) { in ByteRegisterOrConstant() [all …]
|
D | parallel_move_resolver.cc | 65 Location LowOf(Location location) { in LowOf() 67 return Location::RegisterLocation(location.low()); in LowOf() 69 return Location::FpuRegisterLocation(location.low()); in LowOf() 71 return Location::StackSlot(location.GetStackIndex()); in LowOf() 73 return Location::NoLocation(); in LowOf() 77 Location HighOf(Location location) { in HighOf() 79 return Location::RegisterLocation(location.high()); in HighOf() 81 return Location::FpuRegisterLocation(location.high()); in HighOf() 83 return Location::StackSlot(location.GetHighStackIndex(4)); in HighOf() 85 return Location::NoLocation(); in HighOf() [all …]
|
D | parallel_move_resolver.h | 79 bool IsScratchLocation(Location loc); 142 virtual Location AllocateScratchLocationFor(Location::Kind kind) = 0; 146 virtual void FreeScratchLocation(Location loc) = 0; 153 Location GetScratchLocation(Location::Kind kind); 157 void AddScratchLocation(Location loc); 160 void RemoveScratchLocation(Location loc); 163 GrowableArray<Location> scratches_; 170 void UpdateMoveSource(Location from, Location to); 172 void AddPendingMove(Location source, Location destination, Primitive::Type type); 177 MoveOperands* GetUnblockedPendingMove(Location loc); [all …]
|
D | code_generator_arm.cc | 37 static bool ExpectedPairLayout(Location location) { in ExpectedPairLayout() 133 Location index_location, in BoundsCheckSlowPathARM() 134 Location length_location) in BoundsCheckSlowPathARM() 147 Location::RegisterLocation(calling_convention.GetRegisterAt(0)), in EmitNativeCode() 150 Location::RegisterLocation(calling_convention.GetRegisterAt(1)), in EmitNativeCode() 158 const Location index_location_; 159 const Location length_location_; 189 Location out = locations->Out(); in EmitNativeCode() 192 arm_codegen->Move32(locations->Out(), Location::RegisterLocation(R0)); in EmitNativeCode() 231 arm_codegen->Move32(locations->Out(), Location::RegisterLocation(R0)); in EmitNativeCode() [all …]
|
D | register_allocator.h | 33 class Location; variable 101 void BlockRegister(Location location, size_t start, size_t end); 115 Location source, 116 Location destination) const; 119 Location source, 120 Location destination) const; 121 void InsertMoveAfter(HInstruction* instruction, Location source, Location destination) const; 124 Location source, 125 Location destination) const; 128 Location source, [all …]
|
D | intrinsics_x86.cc | 62 static void MoveFromReturnRegister(Location target, in MoveFromReturnRegister() 149 Location out = invoke_->GetLocations()->Out(); in EmitNativeCode() 174 locations->SetInAt(0, Location::RequiresFpuRegister()); in CreateFPToIntLocations() 175 locations->SetOut(Location::RequiresRegister()); in CreateFPToIntLocations() 177 locations->AddTemp(Location::RequiresFpuRegister()); in CreateFPToIntLocations() 185 locations->SetInAt(0, Location::RequiresRegister()); in CreateIntToFPLocations() 186 locations->SetOut(Location::RequiresFpuRegister()); in CreateIntToFPLocations() 188 locations->AddTemp(Location::RequiresFpuRegister()); in CreateIntToFPLocations() 189 locations->AddTemp(Location::RequiresFpuRegister()); in CreateIntToFPLocations() 194 Location input = locations->InAt(0); in MoveFPToInt() [all …]
|
D | code_generator_x86.cc | 101 Location index_location, in BoundsCheckSlowPathX86() 102 Location length_location) in BoundsCheckSlowPathX86() 115 Location::RegisterLocation(calling_convention.GetRegisterAt(0)), in EmitNativeCode() 118 Location::RegisterLocation(calling_convention.GetRegisterAt(1)), in EmitNativeCode() 126 const Location index_location_; 127 const Location length_location_; 184 x86_codegen->Move32(locations->Out(), Location::RegisterLocation(EAX)); in EmitNativeCode() 220 Location out = locations->Out(); in EmitNativeCode() 223 x86_codegen->Move32(out, Location::RegisterLocation(EAX)); in EmitNativeCode() 250 Location class_to_check, in TypeCheckSlowPathX86() [all …]
|
D | intrinsics_arm.cc | 43 static void MoveFromReturnRegister(Location trg, Primitive::Type type, CodeGeneratorARM* codegen) { in MoveFromReturnRegister() 112 Location out = invoke_->GetLocations()->Out(); in EmitNativeCode() 144 locations->SetInAt(0, Location::RequiresFpuRegister()); in CreateFPToIntLocations() 145 locations->SetOut(Location::RequiresRegister()); in CreateFPToIntLocations() 152 locations->SetInAt(0, Location::RequiresRegister()); in CreateIntToFPLocations() 153 locations->SetOut(Location::RequiresFpuRegister()); in CreateIntToFPLocations() 157 Location input = locations->InAt(0); in MoveFPToInt() 158 Location output = locations->Out(); in MoveFPToInt() 169 Location input = locations->InAt(0); in MoveIntToFP() 170 Location output = locations->Out(); in MoveIntToFP() [all …]
|
D | common_arm64.h | 54 static inline vixl::Register XRegisterFrom(Location location) { in XRegisterFrom() 59 static inline vixl::Register WRegisterFrom(Location location) { in WRegisterFrom() 64 static inline vixl::Register RegisterFrom(Location location, Primitive::Type type) { in RegisterFrom() 78 static inline vixl::FPRegister DRegisterFrom(Location location) { in DRegisterFrom() 83 static inline vixl::FPRegister SRegisterFrom(Location location) { in SRegisterFrom() 88 static inline vixl::FPRegister FPRegisterFrom(Location location, Primitive::Type type) { in FPRegisterFrom() 102 static inline vixl::CPURegister CPURegisterFrom(Location location, Primitive::Type type) { in CPURegisterFrom() 119 static inline int64_t Int64ConstantFrom(Location location) { in Int64ConstantFrom() 131 static inline vixl::Operand OperandFrom(Location location, Primitive::Type type) { in OperandFrom() 144 static inline vixl::MemOperand StackOperandFrom(Location location) { in StackOperandFrom() [all …]
|
D | intrinsics_x86_64.cc | 58 static void MoveFromReturnRegister(Location trg, in MoveFromReturnRegister() 140 Location out = invoke_->GetLocations()->Out(); in EmitNativeCode() 165 locations->SetInAt(0, Location::RequiresFpuRegister()); in CreateFPToIntLocations() 166 locations->SetOut(Location::RequiresRegister()); in CreateFPToIntLocations() 173 locations->SetInAt(0, Location::RequiresRegister()); in CreateIntToFPLocations() 174 locations->SetOut(Location::RequiresFpuRegister()); in CreateIntToFPLocations() 178 Location input = locations->InAt(0); in MoveFPToInt() 179 Location output = locations->Out(); in MoveFPToInt() 184 Location input = locations->InAt(0); in MoveIntToFP() 185 Location output = locations->Out(); in MoveIntToFP() [all …]
|
D | code_generator_x86_64.cc | 154 Location index_location, in BoundsCheckSlowPathX86_64() 155 Location length_location) in BoundsCheckSlowPathX86_64() 167 Location::RegisterLocation(calling_convention.GetRegisterAt(0)), in EmitNativeCode() 170 Location::RegisterLocation(calling_convention.GetRegisterAt(1)), in EmitNativeCode() 179 const Location index_location_; 180 const Location length_location_; 209 Location out = locations->Out(); in EmitNativeCode() 213 x64_codegen->Move(out, Location::RegisterLocation(RAX)); in EmitNativeCode() 255 x64_codegen->Move(locations->Out(), Location::RegisterLocation(RAX)); in EmitNativeCode() 269 Location class_to_check, in TypeCheckSlowPathX86_64() [all …]
|
D | code_generator_arm64.cc | 84 Location ARM64ReturnLocation(Primitive::Type return_type) { in ARM64ReturnLocation() 100 Location InvokeRuntimeCallingConvention::GetReturnLocation(Primitive::Type return_type) { in GetReturnLocation() 110 Location index_location, in BoundsCheckSlowPathARM64() 111 Location length_location) in BoundsCheckSlowPathARM64() 133 const Location index_location_; 134 const Location length_location_; 185 Location out = locations->Out(); in EmitNativeCode() 305 Location class_to_check, in TypeCheckSlowPathARM64() 306 Location object_class, in TypeCheckSlowPathARM64() 333 Location ret_loc = calling_convention.GetReturnLocation(ret_type); in EmitNativeCode() [all …]
|
D | code_generator_mips64.cc | 45 Location Mips64ReturnLocation(Primitive::Type return_type) { in Mips64ReturnLocation() 54 return Location::RegisterLocation(V0); in Mips64ReturnLocation() 58 return Location::FpuRegisterLocation(F0); in Mips64ReturnLocation() 61 return Location(); in Mips64ReturnLocation() 66 Location InvokeDexCallingConventionVisitorMIPS64::GetReturnLocation(Primitive::Type type) const { in GetReturnLocation() 70 Location InvokeDexCallingConventionVisitorMIPS64::GetNextLocation(Primitive::Type type) { in GetNextLocation() 71 Location next_location; in GetNextLocation() 78 next_location = Location::FpuRegisterLocation( in GetNextLocation() 83 next_location = Location::RegisterLocation(calling_convention.GetRegisterAt(gp_index_++)); in GetNextLocation() 87 next_location = Primitive::Is64BitType(type) ? Location::DoubleStackSlot(stack_offset) in GetNextLocation() [all …]
|
D | intrinsics_arm64.cc | 52 ALWAYS_INLINE inline MemOperand AbsoluteHeapOperandFrom(Location location, size_t offset = 0) { in AbsoluteHeapOperandFrom() 68 static void MoveFromReturnRegister(Location trg, in MoveFromReturnRegister() 121 Location out = invoke_->GetLocations()->Out(); in EmitNativeCode() 153 locations->SetInAt(0, Location::RequiresFpuRegister()); in CreateFPToIntLocations() 154 locations->SetOut(Location::RequiresRegister()); in CreateFPToIntLocations() 161 locations->SetInAt(0, Location::RequiresRegister()); in CreateIntToFPLocations() 162 locations->SetOut(Location::RequiresFpuRegister()); in CreateIntToFPLocations() 166 Location input = locations->InAt(0); in MoveFPToInt() 167 Location output = locations->Out(); in MoveFPToInt() 173 Location input = locations->InAt(0); in MoveIntToFP() [all …]
|
D | code_generator_x86.h | 85 Location GetNextLocation(Primitive::Type type) OVERRIDE; 168 void GenerateShlLong(const Location& loc, Register shifter); 169 void GenerateShrLong(const Location& loc, Register shifter); 170 void GenerateUShrLong(const Location& loc, Register shifter); 171 void GenerateShlLong(const Location& loc, int shift); 172 void GenerateShrLong(const Location& loc, int shift); 173 void GenerateUShrLong(const Location& loc, int shift); 179 void PushOntoFPStack(Location source, uint32_t temp_offset, 205 void Move(HInstruction* instruction, Location location, HInstruction* move_for) OVERRIDE; 238 Location AllocateFreeRegister(Primitive::Type type) const OVERRIDE; [all …]
|
D | code_generator.cc | 41 static bool CheckType(Primitive::Type type, Location location) { in CheckType() 43 || (location.IsUnallocated() && (location.GetPolicy() == Location::kRequiresFpuRegister))) { in CheckType() 46 (location.IsUnallocated() && (location.GetPolicy() == Location::kRequiresRegister))) { in CheckType() 72 return location.IsInvalid() || (location.GetPolicy() == Location::kAny); in CheckType() 84 && (locations->Out().GetPolicy() == Location::kSameAsFirstInput)) { in CheckTypeConsistency() 261 Location CodeGenerator::GetTemporaryLocation(HTemporary* temp) const { in GetTemporaryLocation() 271 return temp_size == 2 ? Location::DoubleStackSlot(slot) : Location::StackSlot(slot); in GetTemporaryLocation() 291 void CodeGenerator::BlockIfInRegister(Location location, bool is_out) const { in BlockIfInRegister() 336 Location loc = locations->GetTemp(i); in AllocateRegistersLocally() 339 Location result_location = locations->Out(); in AllocateRegistersLocally() [all …]
|
D | ssa_liveness_analysis.cc | 319 static int RegisterOrLowRegister(Location location) { in RegisterOrLowRegister() 368 Location phi_location = user->GetLiveInterval()->ToLocation(); in FindFirstRegisterHint() 385 Location location = input->GetLiveInterval()->GetLocationAt( in FindFirstRegisterHint() 398 Location expected = locations->InAt(use->GetInputIndex()); in FindFirstRegisterHint() 428 Location input_location = input_interval->ToLocation(); in FindHintAtDefinition() 437 Location out = locations->Out(); in FindHintAtDefinition() 438 if (out.IsUnallocated() && out.GetPolicy() == Location::kSameAsFirstInput) { in FindHintAtDefinition() 445 Location location = input_interval->ToLocation(); in FindHintAtDefinition() 456 bool LiveInterval::SameRegisterKind(Location other) const { in SameRegisterKind() 476 Location LiveInterval::ToLocation() const { in ToLocation() [all …]
|
D | code_generator_arm64.h | 64 Location ARM64ReturnLocation(Primitive::Type return_type); 100 Location GetReturnLocation(Primitive::Type return_type); 115 Location GetReturnLocation(Primitive::Type return_type) { in GetReturnLocation() 129 Location GetNextLocation(Primitive::Type type) OVERRIDE; 130 Location GetReturnLocation(Primitive::Type return_type) { in GetReturnLocation() 206 Location AllocateScratchLocationFor(Location::Kind kind) OVERRIDE; 207 void FreeScratchLocation(Location loc) OVERRIDE; 248 void Move(HInstruction* instruction, Location location, HInstruction* move_for) OVERRIDE; 278 Location AllocateFreeRegister(Primitive::Type type) const OVERRIDE; 280 Location GetStackLocation(HLoadLocal* load) const OVERRIDE; [all …]
|
D | code_generator_mips64.h | 84 Location GetNextLocation(Primitive::Type type) OVERRIDE; 85 Location GetReturnLocation(Primitive::Type type) const; 102 Location GetReturnLocation(Primitive::Type return_type); 217 void Move(HInstruction* instruction, Location location, HInstruction* move_for) OVERRIDE; 238 Location AllocateFreeRegister(Primitive::Type type) const OVERRIDE; 240 Location GetStackLocation(HLoadLocal* load) const OVERRIDE; 268 void MoveLocation(Location destination, Location source, Primitive::Type type); 270 void SwapLocations(Location loc1, Location loc2, Primitive::Type type);
|
D | register_allocator.cc | 127 void RegisterAllocator::BlockRegister(Location location, in BlockRegister() 209 Location temp = locations->GetTemp(i); in ProcessInstruction() 215 case Location::kRequiresRegister: { in ProcessInstruction() 224 case Location::kRequiresFpuRegister: { in ProcessInstruction() 279 BlockRegister(Location::RegisterLocation(i), in ProcessInstruction() 286 BlockRegister(Location::FpuRegisterLocation(i), in ProcessInstruction() 294 Location input = locations->InAt(i); in ProcessInstruction() 347 Location output = locations->Out(); in ProcessInstruction() 348 if (output.IsUnallocated() && output.GetPolicy() == Location::kSameAsFirstInput) { in ProcessInstruction() 349 Location first = locations->InAt(0); in ProcessInstruction() [all …]
|
D | code_generator_arm.h | 89 Location GetNextLocation(Primitive::Type type) OVERRIDE; 90 Location GetReturnLocation(Primitive::Type type); 212 void Move(HInstruction* instruction, Location location, HInstruction* move_for) OVERRIDE; 245 Location AllocateFreeRegister(Primitive::Type type) const OVERRIDE; 247 Location GetStackLocation(HLoadLocal* load) const OVERRIDE; 264 void Move32(Location destination, Location source); 266 void Move64(Location destination, Location source);
|
D | code_generator.h | 110 virtual Location GetNextLocation(Primitive::Type type) = 0; 157 virtual void Move(HInstruction* instruction, Location location, HInstruction* move_for) = 0; 168 Location GetTemporaryLocation(HTemporary* temp) const; 272 void EmitParallelMoves(Location from1, 273 Location to1, 275 Location from2, 276 Location to2, 285 void AddAllocatedRegister(Location location) { in AddAllocatedRegister() 369 virtual Location AllocateFreeRegister(Primitive::Type type) const = 0; 374 virtual Location GetStackLocation(HLoadLocal* load) const = 0; [all …]
|
D | code_generator_x86_64.h | 78 Location GetNextLocation(Primitive::Type type) OVERRIDE; 183 void PushOntoFPStack(Location source, uint32_t temp_offset, 206 void Move(HInstruction* instruction, Location location, HInstruction* move_for) OVERRIDE; 240 Location GetStackLocation(HLoadLocal* load) const OVERRIDE; 243 Location AllocateFreeRegister(Primitive::Type type) const OVERRIDE; 256 void Move(Location destination, Location source);
|