Lines Matching refs:locations

184 void SlowPathCodeARM64::SaveLiveRegisters(CodeGenerator* codegen, LocationSummary* locations) {
185 RegisterSet* register_set = locations->GetLiveRegisters();
190 if (locations->RegisterContainsObject(i)) {
191 locations->SetStackBit(stack_offset / kVRegSize);
214 void SlowPathCodeARM64::RestoreLiveRegisters(CodeGenerator* codegen, LocationSummary* locations) {
215 RegisterSet* register_set = locations->GetLiveRegisters();
225 LocationSummary* locations = instruction_->GetLocations();
233 // We're moving two locations to locations that could overlap, so we need a parallel
237 locations->InAt(0), LocationFrom(calling_convention.GetRegisterAt(0)), Primitive::kPrimInt,
238 locations->InAt(1), LocationFrom(calling_convention.GetRegisterAt(1)), Primitive::kPrimInt);
287 LocationSummary* locations = at_->GetLocations();
291 SaveLiveRegisters(codegen, locations);
305 Location out = locations->Out();
307 DCHECK(out.IsRegister() && !locations->GetLiveRegisters()->ContainsCoreRegister(out.reg()));
312 RestoreLiveRegisters(codegen, locations);
340 LocationSummary* locations = instruction_->GetLocations();
341 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(locations->Out().reg()));
345 SaveLiveRegisters(codegen, locations);
354 arm64_codegen->MoveLocation(locations->Out(), calling_convention.GetReturnLocation(type), type);
356 RestoreLiveRegisters(codegen, locations);
437 LocationSummary* locations = instruction_->GetLocations();
438 Location class_to_check = locations->InAt(1);
439 Location object_class = instruction_->IsCheckCast() ? locations->GetTemp(0)
440 : locations->Out();
442 || !locations->GetLiveRegisters()->ContainsCoreRegister(locations->Out().reg()));
449 SaveLiveRegisters(codegen, locations);
452 // We're moving two locations to locations that could overlap, so we need a parallel
466 arm64_codegen->MoveLocation(locations->Out(), ret_loc, ret_type);
474 RestoreLiveRegisters(codegen, locations);
515 LocationSummary* locations = instruction_->GetLocations();
517 SaveLiveRegisters(codegen, locations);
522 locations->InAt(0),
527 locations->InAt(1),
532 locations->InAt(2),
544 RestoreLiveRegisters(codegen, locations);
587 LocationSummary* locations = instruction_->GetLocations();
589 DCHECK(locations->CanCall());
590 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(out_.reg()));
602 SaveLiveRegisters(codegen, locations);
614 RestoreLiveRegisters(codegen, locations);
656 LocationSummary* locations = instruction_->GetLocations();
658 DCHECK(locations->CanCall());
659 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(out_.reg()));
672 SaveLiveRegisters(codegen, locations);
683 DCHECK(locations->GetLiveRegisters()->ContainsCoreRegister(index_.reg()));
740 // We're moving two or three locations to locations that could
770 RestoreLiveRegisters(codegen, locations);
816 LocationSummary* locations = instruction_->GetLocations();
818 DCHECK(locations->CanCall());
819 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(out_.reg()));
825 SaveLiveRegisters(codegen, locations);
848 RestoreLiveRegisters(codegen, locations);
1068 void CodeGeneratorARM64::AddLocationAsTemp(Location location, LocationSummary* locations) {
1070 locations->AddTemp(location);
1191 // locations. When moving from and to a register, the argument type can be
1193 // checks the coherency of the locations and the type.
1567 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instr); \
1568 locations->SetOut(Location::Any()); \
1578 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instr);
1583 locations->SetInAt(0, Location::RequiresRegister());
1584 locations->SetInAt(1, ARM64EncodableConstantOrRegister(instr->InputAt(1), instr));
1585 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
1590 locations->SetInAt(0, Location::RequiresFpuRegister());
1591 locations->SetInAt(1, Location::RequiresFpuRegister());
1592 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
1605 LocationSummary* locations =
1610 locations->SetInAt(0, Location::RequiresRegister());
1612 locations->SetOut(Location::RequiresFpuRegister());
1617 locations->SetOut(
1626 LocationSummary* locations = instruction->GetLocations();
1627 Location base_loc = locations->InAt(0);
1628 Location out = locations->Out();
1673 LocationSummary* locations =
1675 locations->SetInAt(0, Location::RequiresRegister());
1677 locations->SetInAt(1, Location::RequiresFpuRegister());
1679 locations->SetInAt(1, Location::RequiresRegister());
1778 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instr);
1783 locations->SetInAt(0, Location::RequiresRegister());
1784 locations->SetInAt(1, Location::RegisterOrConstant(instr->InputAt(1)));
1785 locations->SetOut(Location::RequiresRegister());
1849 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instr);
1850 locations->SetInAt(0, Location::RequiresRegister());
1852 locations->SetInAt(1, Location::RequiresRegister());
1853 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
1880 LocationSummary* locations =
1883 locations->SetInAt(0, Location::ConstantLocation(instruction->InputAt(0)->AsConstant()));
1885 locations->SetInAt(0, Location::RequiresRegister());
1887 locations->SetInAt(1, Location::RequiresRegister());
1888 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
1955 LocationSummary* locations =
1957 locations->SetInAt(0, Location::RequiresRegister());
1958 locations->SetInAt(1, ARM64EncodableConstantOrRegister(instruction->GetOffset(), instruction));
1959 locations->SetOut(Location::RequiresRegister());
1973 LocationSummary* locations =
1981 locations->SetInAt(HMultiplyAccumulate::kInputAccumulatorIndex,
1984 locations->SetInAt(HMultiplyAccumulate::kInputMulLeftIndex, Location::RequiresRegister());
1985 locations->SetInAt(HMultiplyAccumulate::kInputMulRightIndex, Location::RequiresRegister());
1986 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
2029 LocationSummary* locations =
2034 locations->SetInAt(0, Location::RequiresRegister());
2035 locations->SetInAt(1, Location::RegisterOrConstant(instruction->InputAt(1)));
2037 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
2042 locations->SetOut(
2051 LocationSummary* locations = instruction->GetLocations();
2052 Location index = locations->InAt(1);
2054 Location out = locations->Out();
2104 Location obj_loc = locations->InAt(0);
2115 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction);
2116 locations->SetInAt(0, Location::RequiresRegister());
2117 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
2133 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(
2138 locations->SetInAt(0, Location::RequiresRegister());
2139 locations->SetInAt(1, Location::RegisterOrConstant(instruction->InputAt(1)));
2141 locations->SetInAt(2, Location::RequiresFpuRegister());
2143 locations->SetInAt(2, Location::RequiresRegister());
2149 LocationSummary* locations = instruction->GetLocations();
2157 Location index = locations->InAt(1);
2328 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction, call_kind);
2329 locations->SetInAt(0, Location::RequiresRegister());
2330 locations->SetInAt(1, ARM64EncodableConstantOrRegister(instruction->InputAt(1), instruction));
2332 locations->SetOut(Location::SameAsFirstInput());
2346 LocationSummary* locations =
2348 locations->SetInAt(0, Location::RequiresRegister());
2350 locations->SetOut(Location::SameAsFirstInput());
2394 LocationSummary* locations =
2404 locations->SetInAt(0, Location::RequiresRegister());
2405 locations->SetInAt(1, ARM64EncodableConstantOrRegister(compare->InputAt(1), compare));
2406 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
2411 locations->SetInAt(0, Location::RequiresFpuRegister());
2412 locations->SetInAt(1,
2416 locations->SetOut(Location::RequiresRegister());
2459 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction);
2462 locations->SetInAt(0, Location::RequiresFpuRegister());
2463 locations->SetInAt(1,
2469 locations->SetInAt(0, Location::RequiresRegister());
2470 locations->SetInAt(1, ARM64EncodableConstantOrRegister(instruction->InputAt(1), instruction));
2474 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
2483 LocationSummary* locations = instruction->GetLocations();
2484 Register res = RegisterFrom(locations->Out(), instruction->GetType());
2520 LocationSummary* locations = instruction->GetLocations();
2521 Location second = locations->InAt(1);
2543 LocationSummary* locations = instruction->GetLocations();
2544 Location second = locations->InAt(1);
2578 LocationSummary* locations = instruction->GetLocations();
2579 Location second = locations->InAt(1);
2631 LocationSummary* locations = instruction->GetLocations();
2633 Location second = locations->InAt(1);
2663 LocationSummary* locations =
2668 locations->SetInAt(0, Location::RequiresRegister());
2669 locations->SetInAt(1, Location::RegisterOrConstant(div->InputAt(1)));
2670 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
2675 locations->SetInAt(0, Location::RequiresFpuRegister());
2676 locations->SetInAt(1, Location::RequiresFpuRegister());
2677 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
2707 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction, call_kind);
2708 locations->SetInAt(0, Location::RegisterOrConstant(instruction->InputAt(0)));
2710 locations->SetOut(Location::SameAsFirstInput());
2741 LocationSummary* locations =
2743 locations->SetOut(Location::ConstantLocation(constant));
2759 LocationSummary* locations =
2761 locations->SetOut(Location::ConstantLocation(constant));
2920 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(if_instr);
2922 locations->SetInAt(0, Location::RequiresRegister());
2937 LocationSummary* locations = new (GetGraph()->GetArena())
2940 locations->SetInAt(0, Location::RequiresRegister());
2999 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(select);
3002 locations->SetInAt(0, Location::RequiresRegister());
3003 locations->SetInAt(1, Location::RequiresRegister());
3004 locations->SetOut(Location::RequiresRegister());
3007 locations->SetInAt(0, Location::ConstantLocation(select->InputAt(0)->AsConstant()));
3008 locations->SetInAt(1, Location::RequiresRegister());
3009 locations->SetOut(Location::RequiresRegister());
3012 locations->SetInAt(0, Location::RequiresRegister());
3013 locations->SetInAt(1, Location::ConstantLocation(select->InputAt(1)->AsConstant()));
3014 locations->SetOut(Location::RequiresRegister());
3017 locations->SetInAt(0, Location::RequiresFpuRegister());
3018 locations->SetInAt(1, Location::RequiresFpuRegister());
3019 locations->SetOut(Location::RequiresFpuRegister());
3023 locations->SetInAt(2, Location::RequiresRegister());
3125 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction, call_kind);
3126 locations->SetInAt(0, Location::RequiresRegister());
3127 locations->SetInAt(1, Location::RequiresRegister());
3130 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
3134 locations->AddTemp(Location::RequiresRegister());
3140 LocationSummary* locations = instruction->GetLocations();
3141 Location obj_loc = locations->InAt(0);
3144 Location out_loc = locations->Out();
3147 locations->GetTemp(0) :
3234 DCHECK(locations->OnlyCallsOnSlowPath());
3266 DCHECK(locations->OnlyCallsOnSlowPath());
3313 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction, call_kind);
3314 locations->SetInAt(0, Location::RequiresRegister());
3315 locations->SetInAt(1, Location::RequiresRegister());
3317 locations->AddTemp(Location::RequiresRegister());
3321 locations->AddTemp(Location::RequiresRegister());
3327 LocationSummary* locations = instruction->GetLocations();
3328 Location obj_loc = locations->InAt(0);
3331 Location temp_loc = locations->GetTemp(0);
3333 locations->GetTemp(1) :
3489 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(constant);
3490 locations->SetOut(Location::ConstantLocation(constant));
3498 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(constant);
3499 locations->SetOut(Location::ConstantLocation(constant));
3528 LocationSummary* locations = invoke->GetLocations();
3529 Register temp = XRegisterFrom(locations->GetTemp(0));
3532 Location receiver = locations->InAt(0);
3897 LocationSummary* locations = invoke->GetLocations();
3899 invoke, locations->HasTemps() ? locations->GetTemp(0) : Location::NoLocation());
3973 LocationSummary* locations =
3975 locations->SetOut(Location::RequiresRegister());
4028 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(load, call_kind);
4030 locations->SetInAt(0, Location::RequiresRegister());
4032 locations->SetOut(Location::RequiresRegister());
4129 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(constant);
4130 locations->SetOut(Location::ConstantLocation(constant));
4138 LocationSummary* locations =
4141 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
4158 LocationSummary* locations =
4163 locations->SetInAt(0, Location::RequiresRegister());
4164 locations->SetInAt(1, Location::RequiresRegister());
4165 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4170 locations->SetInAt(0, Location::RequiresFpuRegister());
4171 locations->SetInAt(1, Location::RequiresFpuRegister());
4172 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4198 LocationSummary* locations =
4203 locations->SetInAt(0, ARM64EncodableConstantOrRegister(neg->InputAt(0), neg));
4204 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4209 locations->SetInAt(0, Location::RequiresFpuRegister());
4210 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4236 LocationSummary* locations =
4239 locations->AddTemp(LocationFrom(calling_convention.GetRegisterAt(0)));
4240 locations->SetOut(LocationFrom(x0));
4241 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(1)));
4242 locations->SetInAt(1, LocationFrom(calling_convention.GetRegisterAt(2)));
4246 LocationSummary* locations = instruction->GetLocations();
4248 Register type_index = RegisterFrom(locations->GetTemp(0), Primitive::kPrimInt);
4261 LocationSummary* locations =
4265 locations->AddTemp(LocationFrom(kArtMethodRegister));
4267 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
4268 locations->SetInAt(1, LocationFrom(calling_convention.GetRegisterAt(1)));
4270 locations->SetOut(calling_convention.GetReturnLocation(Primitive::kPrimNot));
4294 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction);
4295 locations->SetInAt(0, Location::RequiresRegister());
4296 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4312 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction);
4313 locations->SetInAt(0, Location::RequiresRegister());
4314 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4325 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction, call_kind);
4326 locations->SetInAt(0, Location::RequiresRegister());
4328 locations->SetOut(Location::SameAsFirstInput());
4347 LocationSummary* locations = instruction->GetLocations();
4348 Location obj = locations->InAt(0);
4374 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction);
4381 locations->SetOut(location);
4390 LocationSummary* locations =
4392 locations->SetOut(LocationFrom(kArtMethodRegister));
4401 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction);
4403 locations->SetInAt(i, Location::Any());
4405 locations->SetOut(Location::Any());
4416 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(rem, call_kind);
4421 locations->SetInAt(0, Location::RequiresRegister());
4422 locations->SetInAt(1, Location::RegisterOrConstant(rem->InputAt(1)));
4423 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4429 locations->SetInAt(0, LocationFrom(calling_convention.GetFpuRegisterAt(0)));
4430 locations->SetInAt(1, LocationFrom(calling_convention.GetFpuRegisterAt(1)));
4431 locations->SetOut(calling_convention.GetReturnLocation(type));
4479 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction);
4481 locations->SetInAt(0, ARM64ReturnLocation(return_type));
4631 LocationSummary* locations =
4634 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
4644 LocationSummary* locations =
4655 locations->SetInAt(0, Location::RequiresFpuRegister());
4657 locations->SetInAt(0, Location::RequiresRegister());
4661 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4663 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4738 LocationSummary* locations =
4740 locations->SetInAt(0, Location::RequiresRegister());
5175 LocationSummary* locations =
5177 locations->SetInAt(0, Location::RequiresRegister());
5178 locations->SetOut(Location::RequiresRegister());
5182 LocationSummary* locations = instruction->GetLocations();
5191 __ Ldr(XRegisterFrom(locations->Out()),
5192 MemOperand(XRegisterFrom(locations->InAt(0)), method_offset));