Home | History | Annotate | Download | only in optimizing

Lines Matching refs:locations

279 void SlowPathCodeARMVIXL::SaveLiveRegisters(CodeGenerator* codegen, LocationSummary* locations) {
283 const uint32_t core_spills = codegen->GetSlowPathSpills(locations, /* core_registers */ true);
286 if (locations->RegisterContainsObject(i)) {
287 locations->SetStackBit(stack_offset / kVRegSize);
298 uint32_t fp_spills = codegen->GetSlowPathSpills(locations, /* core_registers */ false);
317 void SlowPathCodeARMVIXL::RestoreLiveRegisters(CodeGenerator* codegen, LocationSummary* locations) {
321 const uint32_t core_spills = codegen->GetSlowPathSpills(locations, /* core_registers */ true);
332 uint32_t fp_spills = codegen->GetSlowPathSpills(locations, /* core_registers */ false);
434 LocationSummary* locations = instruction_->GetLocations();
441 // We're moving two locations to locations that could overlap, so we need a parallel
445 locations->InAt(0),
448 locations->InAt(1),
475 LocationSummary* locations = instruction_->GetLocations();
476 Location out = locations->Out();
481 SaveLiveRegisters(codegen, locations);
490 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
529 DCHECK(out.IsRegister() && !locations->GetLiveRegisters()->ContainsCoreRegister(out.reg()));
530 arm_codegen->Move32(locations->Out(), LocationFrom(r0));
532 RestoreLiveRegisters(codegen, locations);
559 LocationSummary* locations = instruction_->GetLocations();
560 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(locations->Out().reg()));
568 SaveLiveRegisters(codegen, locations);
575 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
603 arm_codegen->Move32(locations->Out(), LocationFrom(r0));
604 RestoreLiveRegisters(codegen, locations);
621 LocationSummary* locations = instruction_->GetLocations();
623 || !locations->GetLiveRegisters()->ContainsCoreRegister(locations->Out().reg()));
629 SaveLiveRegisters(codegen, locations);
632 // We're moving two locations to locations that could overlap, so we need a parallel
636 codegen->EmitParallelMoves(locations->InAt(0),
639 locations->InAt(1),
648 arm_codegen->Move32(locations->Out(), LocationFrom(r0));
659 RestoreLiveRegisters(codegen, locations);
682 LocationSummary* locations = instruction_->GetLocations();
683 SaveLiveRegisters(codegen, locations);
703 LocationSummary* locations = instruction_->GetLocations();
705 SaveLiveRegisters(codegen, locations);
710 locations->InAt(0),
715 locations->InAt(1),
720 locations->InAt(2),
729 RestoreLiveRegisters(codegen, locations);
834 LocationSummary* locations = instruction_->GetLocations();
835 DCHECK(locations->CanCall());
837 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(ref_.reg())) << ref_.reg();
897 LocationSummary* locations = instruction_->GetLocations();
899 DCHECK(locations->CanCall());
900 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(ref_reg.GetCode())) << ref_reg;
1049 LocationSummary* locations = instruction_->GetLocations();
1051 DCHECK(locations->CanCall());
1052 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(ref_reg.GetCode())) << ref_reg;
1265 LocationSummary* locations = instruction_->GetLocations();
1267 DCHECK(locations->CanCall());
1268 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(reg_out.GetCode()));
1284 SaveLiveRegisters(codegen, locations);
1295 DCHECK(locations->GetLiveRegisters()->ContainsCoreRegister(index_reg.GetCode()));
1356 // We're moving two or three locations to locations that could
1383 RestoreLiveRegisters(codegen, locations);
1430 LocationSummary* locations = instruction_->GetLocations();
1432 DCHECK(locations->CanCall());
1433 DCHECK(!locations->GetLiveRegisters()->ContainsCoreRegister(reg_out.GetCode()));
1439 SaveLiveRegisters(codegen, locations);
1451 RestoreLiveRegisters(codegen, locations);
1641 const LocationSummary* const locations = instruction->GetLocations();
1644 const Location first = locations->InAt(0);
1645 const Location second = locations->InAt(1);
1646 const Location out = locations->Out();
1820 const LocationSummary* const locations = condition->GetLocations();
1829 const Location left = locations->InAt(0);
1830 const Location right = locations->InAt(1);
1930 const LocationSummary* const locations = condition->GetLocations();
1939 Location left = locations->InAt(0);
1940 Location right = locations->InAt(1);
2027 const LocationSummary* const locations = condition->GetLocations();
2029 if (locations->InAt(1).IsConstant()) {
2033 AdjustConstantForCondition(Int64ConstantFrom(locations->InAt(1)), &c, &opposite);
2043 (!LowRegisterFrom(locations->InAt(0)).IsLow() || !IsUint<8>(Low32Bits(value)))) {
2094 const LocationSummary* const locations = cond->GetLocations();
2097 const Location left = locations->InAt(0);
2098 const Location right = locations->InAt(1);
2152 LocationSummary* locations = cond->GetLocations();
2153 Location left = locations->InAt(0);
2154 Location right = locations->InAt(1);
2235 const LocationSummary* const locations = cond->GetLocations();
2238 const Location left = locations->InAt(0);
2239 const Location right = locations->InAt(1);
2892 void CodeGeneratorARMVIXL::AddLocationAsTemp(Location location, LocationSummary* locations) {
2894 locations->AddTemp(location);
2896 locations->AddTemp(LocationFrom(LowRegisterFrom(location)));
2897 locations->AddTemp(LocationFrom(HighRegisterFrom(location)));
3121 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(if_instr);
3123 locations->SetInAt(0, Location::RequiresRegister());
3138 LocationSummary* locations = new (GetGraph()->GetArena())
3143 locations->SetCustomSlowPathCallerSaves(caller_saves);
3145 locations->SetInAt(0, Location::RequiresRegister());
3159 LocationSummary* locations = new (GetGraph()->GetArena())
3161 locations->SetOut(Location::RequiresRegister());
3172 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(select);
3176 locations->SetInAt(0, Location::RequiresFpuRegister());
3177 locations->SetInAt(1, Location::FpuRegisterOrConstant(select->GetTrueValue()));
3179 locations->SetInAt(0, Location::RequiresRegister());
3180 locations->SetInAt(1, Arm8BitEncodableConstantOrRegister(select->GetTrueValue()));
3184 locations->SetInAt(2, Location::RegisterOrConstant(select->GetCondition()));
3186 locations->SetOut(Location::SameAsFirstInput());
3188 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
3190 if (!locations->InAt(1).IsConstant()) {
3191 locations->SetInAt(0, Arm8BitEncodableConstantOrRegister(select->GetFalseValue()));
3194 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3200 const LocationSummary* const locations = select->GetLocations();
3202 const Location first = locations->InAt(0);
3203 const Location out = locations->Out();
3204 const Location second = locations->InAt(1);
3404 LocationSummary* locations =
3409 locations->SetInAt(0, Location::RequiresRegister());
3410 locations->SetInAt(1, Location::RegisterOrConstant(cond->InputAt(1)));
3412 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3418 locations->SetInAt(0, Location::RequiresFpuRegister());
3419 locations->SetInAt(1, ArithmeticZeroOrFpuRegister(cond->InputAt(1)));
3421 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3426 locations->SetInAt(0, Location::RequiresRegister());
3427 locations->SetInAt(1, Location::RegisterOrConstant(cond->InputAt(1)));
3429 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3563 LocationSummary* locations =
3565 locations->SetOut(Location::ConstantLocation(constant));
3573 LocationSummary* locations =
3575 locations->SetOut(Location::ConstantLocation(constant));
3583 LocationSummary* locations =
3585 locations->SetOut(Location::ConstantLocation(constant));
3593 LocationSummary* locations =
3595 locations->SetOut(Location::ConstantLocation(constant));
3604 LocationSummary* locations =
3606 locations->SetOut(Location::ConstantLocation(constant));
3640 LocationSummary* locations =
3642 locations->SetInAt(0, parameter_visitor_.GetReturnLocation(ret->InputAt(0)->GetType()));
3691 LocationSummary* locations = invoke->GetLocations();
3693 invoke, locations->HasTemps() ? locations->GetTemp(0) : Location::NoLocation());
3727 LocationSummary* locations = invoke->GetLocations();
3728 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
3729 vixl32::Register hidden_reg = RegisterFrom(locations->GetTemp(1));
3730 Location receiver = locations->InAt(0);
3804 LocationSummary* locations =
3808 locations->SetInAt(0, Location::RequiresRegister());
3809 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3813 locations->SetInAt(0, Location::RequiresRegister());
3814 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
3820 locations->SetInAt(0, Location::RequiresFpuRegister());
3821 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
3830 LocationSummary* locations = neg->GetLocations();
3831 Location out = locations->Out();
3832 Location in = locations->InAt(0);
3875 LocationSummary* locations =
3892 locations->SetInAt(0, Location::RequiresRegister());
3893 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3912 locations->SetInAt(0, Location::RequiresRegister());
3913 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3926 locations->SetInAt(0, Location::Any());
3927 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3932 locations->SetInAt(0, Location::RequiresFpuRegister());
3933 locations->SetOut(Location::RequiresRegister());
3934 locations->AddTemp(Location::RequiresFpuRegister());
3939 locations->SetInAt(0, Location::RequiresFpuRegister());
3940 locations->SetOut(Location::RequiresRegister());
3941 locations->AddTemp(Location::RequiresFpuRegister());
3959 locations->SetInAt(0, Location::RequiresRegister());
3960 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
3966 locations->SetInAt(0, LocationFrom(calling_convention.GetFpuRegisterAt(0)));
3967 locations->SetOut(LocationFrom(r0, r1));
3974 locations->SetInAt(0, LocationFrom(calling_convention.GetFpuRegisterAt(0),
3976 locations->SetOut(LocationFrom(r0, r1));
3996 locations->SetInAt(0, Location::RequiresRegister());
3997 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4015 locations->SetInAt(0, Location::RequiresRegister());
4016 locations->SetOut(Location::RequiresFpuRegister());
4022 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0),
4024 locations->SetOut(LocationFrom(calling_convention.GetFpuRegisterAt(0)));
4030 locations->SetInAt(0, Location::RequiresFpuRegister());
4031 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4049 locations->SetInAt(0, Location::RequiresRegister());
4050 locations->SetOut(Location::RequiresFpuRegister());
4055 locations->SetInAt(0, Location::RequiresRegister());
4056 locations->SetOut(Location::RequiresFpuRegister());
4057 locations->AddTemp(Location::RequiresFpuRegister());
4058 locations->AddTemp(Location::RequiresFpuRegister());
4063 locations->SetInAt(0, Location::RequiresFpuRegister());
4064 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4080 LocationSummary* locations = conversion->GetLocations();
4081 Location out = locations->Out();
4082 Location in = locations->InAt(0);
4151 vixl32::SRegister temp = LowSRegisterFrom(locations->GetTemp(0));
4159 vixl32::SRegister temp_s = LowSRegisterFrom(locations->GetTemp(0));
4277 vixl32::SRegister temp_s = LowSRegisterFrom(locations->GetTemp(0));
4278 vixl32::DRegister temp_d = DRegisterFrom(locations->GetTemp(0));
4279 vixl32::DRegister constant_d = DRegisterFrom(locations->GetTemp(1));
4312 LocationSummary* locations =
4316 locations->SetInAt(0, Location::RequiresRegister());
4317 locations->SetInAt(1, Location::RegisterOrConstant(add->InputAt(1)));
4318 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4323 locations->SetInAt(0, Location::RequiresRegister());
4324 locations->SetInAt(1, ArmEncodableConstantOrRegister(add->InputAt(1), ADD));
4325 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4331 locations->SetInAt(0, Location::RequiresFpuRegister());
4332 locations->SetInAt(1, Location::RequiresFpuRegister());
4333 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4343 LocationSummary* locations = add->GetLocations();
4344 Location out = locations->Out();
4345 Location first = locations->InAt(0);
4346 Location second = locations->InAt(1);
4377 LocationSummary* locations =
4381 locations->SetInAt(0, Location::RequiresRegister());
4382 locations->SetInAt(1, Location::RegisterOrConstant(sub->InputAt(1)));
4383 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4388 locations->SetInAt(0, Location::RequiresRegister());
4389 locations->SetInAt(1, ArmEncodableConstantOrRegister(sub->InputAt(1), SUB));
4390 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4395 locations->SetInAt(0, Location::RequiresFpuRegister());
4396 locations->SetInAt(1, Location::RequiresFpuRegister());
4397 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4406 LocationSummary* locations = sub->GetLocations();
4407 Location out = locations->Out();
4408 Location first = locations->InAt(0);
4409 Location second = locations->InAt(1);
4439 LocationSummary* locations =
4444 locations->SetInAt(0, Location::RequiresRegister());
4445 locations->SetInAt(1, Location::RequiresRegister());
4446 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4452 locations->SetInAt(0, Location::RequiresFpuRegister());
4453 locations->SetInAt(1, Location::RequiresFpuRegister());
4454 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4464 LocationSummary* locations = mul->GetLocations();
4465 Location out = locations->Out();
4466 Location first = locations->InAt(0);
4467 Location second = locations->InAt(1);
4543 LocationSummary* locations = instruction->GetLocations();
4544 Location second = locations->InAt(1);
4549 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
4577 LocationSummary* locations = instruction->GetLocations();
4578 Location second = locations->InAt(1);
4583 vixl32::Register temp1 = RegisterFrom(locations->GetTemp(0));
4584 vixl32::Register temp2 = RegisterFrom(locations->GetTemp(1));
4649 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(div, call_kind);
4654 locations->SetInAt(0, Location::RequiresRegister());
4655 locations->SetInAt(1, Location::ConstantLocation(div->InputAt(1)->AsConstant()));
4656 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4661 locations->AddTemp(Location::RequiresRegister());
4663 locations->AddTemp(Location::RequiresRegister());
4667 locations->SetInAt(0, Location::RequiresRegister());
4668 locations->SetInAt(1, Location::RequiresRegister());
4669 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4672 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
4673 locations->SetInAt(1, LocationFrom(calling_convention.GetRegisterAt(1)));
4676 locations->SetOut(LocationFrom(r0));
4682 locations->SetInAt(0, LocationFrom(
4684 locations->SetInAt(1, LocationFrom(
4686 locations->SetOut(LocationFrom(r0, r1));
4691 locations->SetInAt(0, Location::RequiresFpuRegister());
4692 locations->SetInAt(1, Location::RequiresFpuRegister());
4693 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
4762 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(rem, call_kind);
4767 locations->SetInAt(0, Location::RequiresRegister());
4768 locations->SetInAt(1, Location::ConstantLocation(rem->InputAt(1)->AsConstant()));
4769 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4774 locations->AddTemp(Location::RequiresRegister());
4776 locations->AddTemp(Location::RequiresRegister());
4780 locations->SetInAt(0, Location::RequiresRegister());
4781 locations->SetInAt(1, Location::RequiresRegister());
4782 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
4783 locations->AddTemp(Location::RequiresRegister());
4786 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
4787 locations->SetInAt(1, LocationFrom(calling_convention.GetRegisterAt(1)));
4790 locations->SetOut(LocationFrom(r1));
4796 locations->SetInAt(0, LocationFrom(
4798 locations->SetInAt(1, LocationFrom(
4801 locations->SetOut(LocationFrom(r2, r3));
4806 locations->SetInAt(0, LocationFrom(calling_convention.GetFpuRegisterAt(0)));
4807 locations->SetInAt(1, LocationFrom(calling_convention.GetFpuRegisterAt(1)));
4808 locations->SetOut(LocationFrom(s0));
4814 locations->SetInAt(0, LocationFrom(
4816 locations->SetInAt(1, LocationFrom(
4818 locations->SetOut(LocationFrom(s0, s1));
4828 LocationSummary* locations = rem->GetLocations();
4829 Location second = locations->InAt(1);
4840 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
4883 LocationSummary* locations = codegen_->CreateThrowingSlowPathLocations(instruction);
4884 locations->SetInAt(0, Location::RegisterOrConstant(instruction->InputAt(0)));
4892 LocationSummary* locations = instruction->GetLocations();
4893 Location value = locations->InAt(0);
4931 LocationSummary* locations = ror->GetLocations();
4933 Location rhs = locations->InAt(1);
4958 LocationSummary* locations = ror->GetLocations();
4959 vixl32::Register in_reg_lo = LowRegisterFrom(locations->InAt(0));
4960 vixl32::Register in_reg_hi = HighRegisterFrom(locations->InAt(0));
4961 Location rhs = locations->InAt(1);
4962 vixl32::Register out_reg_lo = LowRegisterFrom(locations->Out());
4963 vixl32::Register out_reg_hi = HighRegisterFrom(locations->Out());
4987 vixl32::Register shift_right = RegisterFrom(locations->GetTemp(0));
4988 vixl32::Register shift_left = RegisterFrom(locations->GetTemp(1));
5025 LocationSummary* locations =
5029 locations->SetInAt(0, Location::RequiresRegister());
5030 locations->SetInAt(1, Location::RegisterOrConstant(ror->InputAt(1)));
5031 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
5035 locations->SetInAt(0, Location::RequiresRegister());
5037 locations->SetInAt(1, Location::ConstantLocation(ror->InputAt(1)->AsConstant()));
5039 locations->SetInAt(1, Location::RequiresRegister());
5040 locations->AddTemp(Location::RequiresRegister());
5041 locations->AddTemp(Location::RequiresRegister());
5043 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
5071 LocationSummary* locations =
5076 locations->SetInAt(0, Location::RequiresRegister());
5078 locations->SetInAt(1, Location::ConstantLocation(op->InputAt(1)->AsConstant()));
5079 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
5081 locations->SetInAt(1, Location::RequiresRegister());
5084 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
5089 locations->SetInAt(0, Location::RequiresRegister());
5091 locations->SetInAt(1, Location::ConstantLocation(op->InputAt(1)->AsConstant()));
5094 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
5096 locations->SetInAt(1, Location::RequiresRegister());
5097 locations->AddTemp(Location::RequiresRegister());
5098 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
5110 LocationSummary* locations = op->GetLocations();
5111 Location out = locations->Out();
5112 Location first = locations->InAt(0);
5113 Location second = locations->InAt(1);
5154 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
5302 LocationSummary* locations =
5305 locations->AddTemp(LocationFrom(kMethodRegister));
5308 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
5310 locations->SetOut(LocationFrom(r0));
5335 LocationSummary* locations =
5338 locations->SetOut(LocationFrom(r0));
5339 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
5340 locations->SetInAt(1, LocationFrom(calling_convention.GetRegisterAt(1)));
5354 LocationSummary* locations =
5362 locations->SetOut(location);
5371 LocationSummary* locations =
5373 locations->SetOut(LocationFrom(kMethodRegister));
5382 LocationSummary* locations =
5384 locations->SetInAt(0, Location::RequiresRegister());
5385 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
5389 LocationSummary* locations = not_->GetLocations();
5390 Location out = locations->Out();
5391 Location in = locations->InAt(0);
5408 LocationSummary* locations =
5410 locations->SetInAt(0, Location::RequiresRegister());
5411 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
5419 LocationSummary* locations =
5428 locations->SetInAt(0, Location::RequiresRegister());
5429 locations->SetInAt(1, Location::RequiresRegister());
5431 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
5436 locations->SetInAt(0, Location::RequiresFpuRegister());
5437 locations->SetInAt(1, ArithmeticZeroOrFpuRegister(compare->InputAt(1)));
5438 locations->SetOut(Location::RequiresRegister());
5447 LocationSummary* locations = compare->GetLocations();
5449 Location left = locations->InAt(0);
5450 Location right = locations->InAt(1);
5508 LocationSummary* locations =
5510 for (size_t i = 0, e = locations->GetInputCount(); i < e; ++i) {
5511 locations->SetInAt(i, Location::Any());
5513 locations->SetOut(Location::Any());
5586 LocationSummary* locations =
5588 locations->SetInAt(0, Location::RequiresRegister());
5592 locations->SetInAt(1, Location::RequiresFpuRegister());
5594 locations->SetInAt(1, Location::RequiresRegister());
5606 locations->AddTemp(Location::RequiresRegister()); // Possibly used for reference poisoning too.
5607 locations->AddTemp(Location::RequiresRegister());
5616 locations->AddTemp(Location::RequiresRegister());
5617 locations->AddTemp(Location::RequiresRegister());
5620 locations->AddTemp(LocationFrom(r2));
5621 locations->AddTemp(LocationFrom(r3));
5631 LocationSummary* locations = instruction->GetLocations();
5633 Location value = locations->InAt(1);
5666 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
5682 RegisterFrom(locations->GetTemp(0)),
5683 RegisterFrom(locations->GetTemp(1)),
5700 vixl32::Register value_reg_lo = RegisterFrom(locations->GetTemp(0));
5701 vixl32::Register value_reg_hi = RegisterFrom(locations->GetTemp(1));
5709 RegisterFrom(locations->GetTemp(2)),
5710 RegisterFrom(locations->GetTemp(3)),
5735 vixl32::Register temp = RegisterFrom(locations->GetTemp(0));
5736 vixl32::Register card = RegisterFrom(locations->GetTemp(1));
5751 LocationSummary* locations =
5757 locations->SetCustomSlowPathCallerSaves(RegisterSet::Empty()); // No caller-save registers.
5759 locations->SetInAt(0, Location::RequiresRegister());
5773 locations->SetOut(Location::RequiresFpuRegister());
5775 locations->SetOut(Location::RequiresRegister(),
5785 locations->AddTemp(Location::RequiresRegister());
5786 locations->AddTemp(Location::RequiresRegister());
5795 locations->AddTemp(Location::RequiresRegister());
5798 locations->AddTemp(Location::RegisterLocation(kBakerCcEntrypointRegister.GetCode()));
5800 locations->AddTemp(Location::RequiresRegister());
5888 LocationSummary* locations = instruction->GetLocations();
5890 Location out = locations->Out();
5920 Location temp_loc = locations->GetTemp(0);
5937 codegen_->MaybeGenerateReadBarrierSlow(instruction, out, out, locations->InAt(0), offset);
5957 vixl32::Register lo = RegisterFrom(locations->GetTemp(0));
5958 vixl32::Register hi = RegisterFrom(locations->GetTemp(1));
6100 LocationSummary* locations = codegen_->CreateThrowingSlowPathLocations(instruction);
6101 locations->SetInAt(0, Location::RequiresRegister());
6248 LocationSummary* locations =
6254 locations->SetCustomSlowPathCallerSaves(RegisterSet::Empty()); // No caller-save registers.
6256 locations->SetInAt(0, Location::RequiresRegister());
6257 locations->SetInAt(1, Location::RegisterOrConstant(instruction->InputAt(1)));
6259 locations->SetOut(Location::RequiresFpuRegister(), Location::kNoOutputOverlap);
6264 locations->SetOut(
6281 locations->AddTemp(Location::RequiresRegister());
6284 locations
6289 locations->AddTemp(Location::RequiresRegister());
6291 locations->AddTemp(Location::RegisterLocation(kBakerCcEntrypointRegister.GetCode()));
6293 locations->AddTemp(Location::RequiresRegister());
6297 locations->AddTemp(Location::RequiresRegister());
6302 LocationSummary* locations = instruction->GetLocations();
6303 Location obj_loc = locations->InAt(0);
6305 Location index = locations->InAt(1);
6306 Location out_loc = locations->Out();
6322 length = RegisterFrom(locations->GetTemp(0));
6404 Location temp = locations->GetTemp(0);
6415 locations->GetTemp(0),
6532 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(
6538 locations->SetInAt(0, Location::RequiresRegister());
6539 locations->SetInAt(1, Location::RegisterOrConstant(instruction->InputAt(1)));
6541 locations->SetInAt(2, Location::RequiresFpuRegister());
6543 locations->SetInAt(2, Location::RequiresRegister());
6547 locations->AddTemp(Location::RequiresRegister()); // Possibly used for ref. poisoning too.
6548 locations->AddTemp(Location::RequiresRegister());
6553 LocationSummary* locations = instruction->GetLocations();
6555 Location index = locations->InAt(1);
6562 Location value_loc = locations->InAt(2);
6627 Location temp1_loc = locations->GetTemp(0);
6629 Location temp2_loc = locations->GetTemp(1);
6754 Location value = locations->InAt(2);
6769 Location value = locations->InAt(2);
6784 Location value = locations->InAt(2);
6812 LocationSummary* locations =
6814 locations->SetInAt(0, Location::RequiresRegister());
6815 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
6836 LocationSummary* locations =
6839 locations->SetInAt(0, Location::RequiresRegister());
6840 locations->SetInAt(1, Location::RegisterOrConstant(instruction->GetOffset()));
6841 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
6871 LocationSummary* locations = codegen_->CreateThrowingSlowPathLocations(instruction, caller_saves);
6878 // locations.
6880 locations->SetInAt(0, both_const
6883 locations->SetInAt(1, both_const
6889 LocationSummary* locations = instruction->GetLocations();
6890 Location index_loc = locations->InAt(0);
6891 Location length_loc = locations->InAt(1);
6951 LocationSummary* locations =
6953 locations->SetCustomSlowPathCallerSaves(RegisterSet::Empty()); // No caller-save registers.
7289 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(cls, call_kind);
7291 locations->SetCustomSlowPathCallerSaves(RegisterSet::Empty()); // No caller-save registers.
7295 locations->SetInAt(0, Location::RequiresRegister());
7297 locations->SetOut(Location::RequiresRegister());
7303 locations->AddTemp(Location::RequiresRegister());
7309 locations->SetCustomSlowPathCallerSaves(caller_saves);
7318 locations->AddTemp(Location::RegisterLocation(kBakerCcEntrypointRegister.GetCode()));
7333 LocationSummary* locations = cls->GetLocations();
7334 Location out_loc = locations->Out();
7372 ? RegisterFrom(locations->GetTemp(0))
7412 LocationSummary* locations =
7414 locations->SetInAt(0, Location::RequiresRegister());
7416 locations->SetOut(Location::SameAsFirstInput());
7466 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(load, call_kind);
7469 locations->SetOut(LocationFrom(r0));
7471 locations->SetOut(Location::RequiresRegister());
7477 locations->AddTemp(Location::RequiresRegister());
7483 locations->SetCustomSlowPathCallerSaves(caller_saves);
7485 locations->AddTemp(Location::RegisterLocation(kBakerCcEntrypointRegister.GetCode()));
7497 LocationSummary* locations = load->GetLocations();
7498 Location out_loc = locations->Out();
7520 ? RegisterFrom(locations->GetTemp(0))
7558 LocationSummary* locations =
7560 locations->SetOut(Location::RequiresRegister());
7581 LocationSummary* locations =
7584 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
7634 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction, call_kind);
7636 locations->SetCustomSlowPathCallerSaves(RegisterSet::Empty()); // No caller-save registers.
7638 locations->SetInAt(0, Location::RequiresRegister());
7639 locations->SetInAt(1, Location::RequiresRegister());
7642 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
7643 locations->AddRegisterTemps(NumberOfInstanceOfTemps(type_check_kind));
7645 codegen_->MaybeAddBakerCcEntrypointTempForFields(locations);
7651 LocationSummary* locations = instruction->GetLocations();
7652 Location obj_loc = locations->InAt(0);
7655 Location out_loc = locations->Out();
7659 Location maybe_temp_loc = (num_temps >= 1) ? locations->GetTemp(0) : Location::NoLocation();
7850 DCHECK(locations->OnlyCallsOnSlowPath());
7879 DCHECK(locations->OnlyCallsOnSlowPath());
7918 LocationSummary* locations = new (GetGraph()->GetArena()) LocationSummary(instruction, call_kind);
7919 locations->SetInAt(0, Location::RequiresRegister());
7920 locations->SetInAt(1, Location::RequiresRegister());
7921 locations->AddRegisterTemps(NumberOfCheckCastTemps(type_check_kind));
7926 LocationSummary* locations = instruction->GetLocations();
7927 Location obj_loc = locations->InAt(0);
7930 Location temp_loc = locations->GetTemp(0);
7934 Location maybe_temp2_loc = (num_temps >= 2) ? locations->GetTemp(1) : Location::NoLocation();
7935 Location maybe_temp3_loc = (num_temps >= 3) ? locations->GetTemp(2) : Location::NoLocation();
8134 LocationSummary* locations =
8137 locations->SetInAt(0, LocationFrom(calling_convention.GetRegisterAt(0)));
8164 LocationSummary* locations =
8169 locations->SetInAt(0, Location::RequiresRegister());
8170 locations->SetInAt(1, ArmEncodableConstantOrRegister(instruction->InputAt(1), opcode));
8171 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
8187 LocationSummary* locations =
8192 locations->SetInAt(0, Location::RequiresRegister());
8193 locations->SetInAt(1, Location::RequiresRegister());
8194 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
8198 LocationSummary* locations = instruction->GetLocations();
8199 Location first = locations->InAt(0);
8200 Location second = locations->InAt(1);
8201 Location out = locations->Out();
8254 LocationSummary* locations =
8259 locations->SetInAt(0, Location::RequiresRegister());
8260 locations->SetInAt(1, Location::RequiresRegister());
8261 locations->SetOut(Location::RequiresRegister(),
8267 const LocationSummary* const locations = instruction->GetLocations();
8275 ? LowRegisterFrom(locations->InAt(1))
8291 DCHECK(!LowRegisterFrom(locations->Out()).Is(second));
8293 locations->Out(),
8294 locations->InAt(0),
8394 LocationSummary* locations = instruction->GetLocations();
8395 Location first = locations->InAt(0);
8396 Location second = locations->InAt(1);
8397 Location out = locations->Out();
8630 void CodeGeneratorARMVIXL::MaybeAddBakerCcEntrypointTempForFields(LocationSummary* locations) {
8635 locations->AddTemp(Location::RegisterLocation(kBakerCcEntrypointRegister.GetCode()));
9044 // For register locations, check if the register was saved. If so, get it from the stack.
9312 LocationSummary* locations =
9314 locations->SetInAt(HMultiplyAccumulate::kInputAccumulatorIndex,
9316 locations->SetInAt(HMultiplyAccumulate::kInputMulLeftIndex, Location::RequiresRegister());
9317 locations->SetInAt(HMultiplyAccumulate::kInputMulRightIndex, Location::RequiresRegister());
9318 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
9349 LocationSummary* locations =
9351 locations->SetInAt(0, Location::RequiresRegister());
9354 locations->AddTemp(Location::RequiresRegister()); // We need a temp for the table base.
9356 locations->AddTemp(Location::RequiresRegister()); // We need a temp for the bias.
9365 LocationSummary* locations = switch_instr->GetLocations();
9403 vixl32::Register table_base = RegisterFrom(locations->GetTemp(0));
9410 key_reg = RegisterFrom(locations->GetTemp(1));
9471 LocationSummary* locations =
9473 locations->SetInAt(0, Location::RequiresRegister());
9474 locations->SetOut(Location::RequiresRegister());