Home | History | Annotate | Download | only in optimizing

Lines Matching refs:locations

92     LocationSummary* locations = instruction_->GetLocations();
93 DCHECK(locations->CanCall());
103 Register src = locations->InAt(0).AsRegister<Register>();
104 Location src_pos = locations->InAt(1);
105 Register dest = locations->InAt(2).AsRegister<Register>();
106 Location dest_pos = locations->InAt(3);
107 Location length = locations->InAt(4);
108 Location temp1_loc = locations->GetTemp(0);
110 Register temp2 = locations->GetTemp(1).AsRegister<Register>();
111 Register temp3 = locations->GetTemp(2).AsRegister<Register>();
179 LocationSummary* locations =
181 locations->SetInAt(0, Location::RequiresFpuRegister());
182 locations->SetOut(Location::RequiresRegister());
184 locations->AddTemp(Location::RequiresFpuRegister());
189 LocationSummary* locations =
191 locations->SetInAt(0, Location::RequiresRegister());
192 locations->SetOut(Location::RequiresFpuRegister());
194 locations->AddTemp(Location::RequiresFpuRegister());
195 locations->AddTemp(Location::RequiresFpuRegister());
199 static void MoveFPToInt(LocationSummary* locations, bool is64bit, X86Assembler* assembler) {
200 Location input = locations->InAt(0);
201 Location output = locations->Out();
204 XmmRegister temp = locations->GetTemp(0).AsFpuRegister<XmmRegister>();
214 static void MoveIntToFP(LocationSummary* locations, bool is64bit, X86Assembler* assembler) {
215 Location input = locations->InAt(0);
216 Location output = locations->Out();
219 XmmRegister temp1 = locations->GetTemp(0).AsFpuRegister<XmmRegister>();
220 XmmRegister temp2 = locations->GetTemp(1).AsFpuRegister<XmmRegister>();
259 LocationSummary* locations =
261 locations->SetInAt(0, Location::RequiresRegister());
262 locations->SetOut(Location::SameAsFirstInput());
266 LocationSummary* locations =
268 locations->SetInAt(0, Location::RequiresRegister());
269 locations->SetOut(Location::RequiresRegister());
273 LocationSummary* locations =
275 locations->SetInAt(0, Location::RequiresRegister());
276 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
279 static void GenReverseBytes(LocationSummary* locations,
282 Register out = locations->Out().AsRegister<Register>();
312 LocationSummary* locations = invoke->GetLocations();
313 Location input = locations->InAt(0);
316 Location output = locations->Out();
342 LocationSummary* locations =
344 locations->SetInAt(0, Location::RequiresFpuRegister());
345 locations->SetOut(Location::SameAsFirstInput());
351 locations->SetInAt(1, Location::RequiresRegister());
353 locations->AddTemp(Location::RequiresFpuRegister());
361 LocationSummary* locations = invoke->GetLocations();
362 Location output = locations->Out();
365 if (locations->GetInputCount() == 2 && locations->InAt(1).IsValid()) {
368 DCHECK(locations->InAt(1).IsRegister());
370 Register constant_area = locations->InAt(1).AsRegister<Register>();
371 XmmRegister temp = locations->GetTemp(0).AsFpuRegister<XmmRegister>();
414 locations =
416 locations->SetInAt(0, Location::RegisterLocation(EAX));
417 locations->SetOut(Location::SameAsFirstInput());
418 locations->AddTemp(Location::RegisterLocation(EDX));
421 static void GenAbsInteger(LocationSummary* locations, X86Assembler* assembler) {
422 Location output = locations->Out();
425 Register temp = locations->GetTemp(0).AsRegister<Register>();
441 LocationSummary* locations =
443 locations->SetInAt(0, Location::RequiresRegister());
444 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
445 locations->AddTemp(Location::RequiresRegister());
448 static void GenAbsLong(LocationSummary* locations, X86Assembler* assembler) {
449 Location input = locations->InAt(0);
452 Location output = locations->Out();
455 Register temp = locations->GetTemp(0).AsRegister<Register>();
495 LocationSummary* locations = invoke->GetLocations();
496 Location op1_loc = locations->InAt(0);
497 Location op2_loc = locations->InAt(1);
498 Location out_loc = locations->Out();
501 // Shortcut for same input locations.
557 if (locations->GetInputCount() == 3 && locations->InAt(2).IsValid()) {
560 DCHECK(locations->InAt(2).IsRegister());
561 Register constant_area = locations->InAt(2).AsRegister<Register>();
594 LocationSummary* locations =
596 locations->SetInAt(0, Location::RequiresFpuRegister());
597 locations->SetInAt(1, Location::RequiresFpuRegister());
600 locations->SetOut(Location::SameAsFirstInput());
605 locations->SetInAt(2, Location::RequiresRegister());
657 static void GenMinMax(LocationSummary* locations, bool is_min, bool is_long,
659 Location op1_loc = locations->InAt(0);
660 Location op2_loc = locations->InAt(1);
662 // Shortcut for same input locations.
667 DCHECK(locations->Out().Equals(op1_loc));
674 Location output = locations->Out();
682 Register temp = locations->GetTemp(0).AsRegister<Register>();
697 Register out = locations->Out().AsRegister<Register>();
713 LocationSummary* locations =
715 locations->SetInAt(0, Location::RequiresRegister());
716 locations->SetInAt(1, Location::RequiresRegister());
717 locations->SetOut(Location::SameAsFirstInput());
721 LocationSummary* locations =
723 locations->SetInAt(0, Location::RequiresRegister());
724 locations->SetInAt(1, Location::RequiresRegister());
725 locations->SetOut(Location::SameAsFirstInput());
727 locations->AddTemp(Location::RequiresRegister());
763 LocationSummary* locations =
765 locations->SetInAt(0, Location::RequiresFpuRegister());
766 locations->SetOut(Location::RequiresFpuRegister());
774 LocationSummary* locations = invoke->GetLocations();
775 XmmRegister in = locations->InAt(0).AsFpuRegister<XmmRegister>();
776 XmmRegister out = locations->Out().AsFpuRegister<XmmRegister>();
806 LocationSummary* locations =
809 locations->SetInAt(0, Location::RegisterLocation(calling_convention.GetFpuRegisterAt(0)));
810 locations->SetOut(Location::FpuRegisterLocation(XMM0));
812 locations->AddTemp(Location::RegisterLocation(EAX));
819 LocationSummary* locations = invoke->GetLocations();
820 if (locations->WillCall()) {
823 XmmRegister in = locations->InAt(0).AsFpuRegister<XmmRegister>();
824 XmmRegister out = locations->Out().AsFpuRegister<XmmRegister>();
858 LocationSummary* locations =
860 locations->SetInAt(0, Location::RequiresFpuRegister());
864 locations->SetInAt(1, Location::RequiresRegister());
866 locations->SetOut(Location::RequiresRegister());
867 locations->AddTemp(Location::RequiresFpuRegister());
868 locations->AddTemp(Location::RequiresFpuRegister());
873 LocationSummary* locations =
876 locations->SetInAt(0, Location::RegisterLocation(calling_convention.GetFpuRegisterAt(0)));
877 locations->SetOut(Location::RegisterLocation(EAX));
879 locations->AddTemp(Location::RegisterLocation(EAX));
883 LocationSummary* locations = invoke->GetLocations();
884 if (locations->WillCall()) { // TODO: can we reach this?
889 XmmRegister in = locations
890 XmmRegister t1 = locations->GetTemp(0).AsFpuRegister<XmmRegister>();
891 XmmRegister t2 = locations->GetTemp(1).AsFpuRegister<XmmRegister>();
892 Register out = locations->Out().AsRegister<Register>();
904 if (locations->GetInputCount() == 2 && locations->InAt(1).IsValid()) {
908 Register constant_area = locations->InAt(1).AsRegister<Register>();
942 LocationSummary* locations =
945 locations->SetInAt(0, Location::FpuRegisterLocation(calling_convention.GetFpuRegisterAt(0)));
946 locations->SetOut(Location::FpuRegisterLocation(XMM0));
950 LocationSummary* locations = invoke->GetLocations();
951 DCHECK(locations->WillCall());
1092 LocationSummary* locations =
1095 locations->SetInAt(0, Location::FpuRegisterLocation(calling_convention.GetFpuRegisterAt(0)));
1096 locations->SetInAt(1, Location::FpuRegisterLocation(calling_convention.GetFpuRegisterAt(1)));
1097 locations->SetOut(Location::FpuRegisterLocation(XMM0));
1167 LocationSummary* locations =
1170 locations->SetInAt(0, Location::RequiresRegister());
1171 locations->SetInAt(1, Location::RegisterOrConstant(invoke->InputAt(1)));
1172 locations->SetInAt(2, Location::RequiresRegister());
1173 locations->SetInAt(3, Location::RegisterOrConstant(invoke->InputAt(3)));
1174 locations->SetInAt(4, Location::RegisterOrConstant(invoke->InputAt(4)));
1177 locations->AddTemp(Location::RegisterLocation(ESI));
1178 locations->AddTemp(Location::RegisterLocation(EDI));
1179 locations->AddTemp(Location::RegisterLocation(ECX));
1248 LocationSummary* locations = invoke->GetLocations();
1250 Register src = locations->InAt(0).AsRegister<Register>();
1251 Location srcPos = locations->InAt(1);
1252 Register dest = locations->InAt(2).AsRegister<Register>();
1253 Location destPos = locations->InAt(3);
1254 Location length = locations->InAt(4);
1257 Register src_base = locations->GetTemp(0).AsRegister<Register>();
1259 Register dest_base = locations->GetTemp(1).AsRegister<Register>();
1261 Register count = locations->GetTemp(2).AsRegister<Register>();
1330 LocationSummary* locations = new (allocator_) LocationSummary(
1333 locations->SetInAt(0, Location::RegisterLocation(calling_convention.GetRegisterAt(0)));
1334 locations->SetInAt(1, Location::RegisterLocation(calling_convention.GetRegisterAt(1)));
1335 locations->SetOut(Location::RegisterLocation(EAX));
1340 LocationSummary* locations = invoke->GetLocations();
1345 Register argument = locations->InAt(1).AsRegister<Register>();
1363 LocationSummary* locations =
1365 locations->SetInAt(0, Location::RequiresRegister());
1366 locations->SetInAt(1, Location::RequiresRegister());
1369 locations->AddTemp(Location::RegisterLocation(ECX));
1370 locations->AddTemp(Location::RegisterLocation(EDI));
1373 locations->SetOut(Location::RegisterLocation(ESI), Location::kOutputOverlap);
1378 LocationSummary* locations = invoke->GetLocations();
1380 Register str = locations->InAt(0).AsRegister<Register>();
1381 Register arg = locations->InAt(1).AsRegister<Register>();
1382 Register ecx = locations->GetTemp(0).AsRegister<Register>();
1383 Register edi = locations->GetTemp(1).AsRegister<Register>();
1384 Register esi = locations->Out().AsRegister<Register>();
1474 LocationSummary* locations = new (allocator) LocationSummary(invoke,
1478 locations->SetInAt(0, Location::RegisterLocation(EDI));
1483 locations->SetInAt(1, Location::RegisterLocation(EAX));
1485 locations->SetInAt(2, Location::RequiresRegister()); // The starting index.
1488 locations->SetOut(Location::SameAsFirstInput());
1491 locations->AddTemp(Location::RegisterLocation(ECX));
1493 locations->AddTemp(Location::RequiresRegister());
1496 locations->AddTemp(Location::RequiresRegister());
1504 LocationSummary* locations = invoke->GetLocations();
1509 Register string_obj = locations->InAt(0).AsRegister<Register>();
1510 Register search_value = locations->InAt(1).AsRegister<Register>();
1511 Register counter = locations->GetTemp(0).AsRegister<Register>();
1512 Register string_length = locations->GetTemp(1).AsRegister<Register>();
1513 Register out = locations->Out().AsRegister<Register>();
1563 string_length_flagged = locations->GetTemp(2).AsRegister<Register>();
1576 Register start_index = locations->InAt(2).AsRegister<Register>();
1669 LocationSummary* locations = new (allocator_) LocationSummary(
1672 locations->SetInAt(0, Location::RegisterLocation(calling_convention.GetRegisterAt(0)));
1673 locations->SetInAt(1, Location::RegisterLocation(calling_convention.GetRegisterAt(1)));
1674 locations->SetInAt(2, Location::RegisterLocation(calling_convention.GetRegisterAt(2)));
1675 locations->SetInAt(3, Location::RegisterLocation(calling_convention.GetRegisterAt(3)));
1676 locations->SetOut(Location::RegisterLocation(EAX));
1681 LocationSummary* locations = invoke->GetLocations();
1683 Register byte_array = locations->InAt(0).AsRegister<Register>();
1695 LocationSummary* locations =
1698 locations->SetInAt(0, Location::RegisterLocation(calling_convention.GetRegisterAt(0)));
1699 locations->SetInAt(1, Location::RegisterLocation(calling_convention.GetRegisterAt(1)));
1700 locations->SetInAt(2, Location::RegisterLocation(calling_convention.GetRegisterAt(2)));
1701 locations->SetOut(Location::RegisterLocation(EAX));
1705 // No need to emit code checking whether `locations->InAt(2)` is a null
1716 locations = new (allocator_) LocationSummary(
1719 locations->SetInAt(0, Location::RegisterLocation(calling_convention.GetRegisterAt(0)));
1720 locations->SetOut(Location::RegisterLocation(EAX));
1725 LocationSummary* locations = invoke->GetLocations();
1727 Register string_to_copy = locations->InAt(0).AsRegister<Register>();
1740 LocationSummary* locations =
1742 locations->SetInAt(0, Location::RequiresRegister());
1743 locations->SetInAt(1, Location::RegisterOrConstant(invoke->InputAt(1)));
1745 locations->SetInAt(2, Location::RegisterLocation(ECX));
1746 locations->SetInAt(3, Location::RequiresRegister());
1747 locations->SetInAt(4, Location::RequiresRegister());
1751 locations->AddTemp(Location::RegisterLocation(ESI));
1752 locations->AddTemp(Location::RegisterLocation(EDI));
1757 LocationSummary* locations = invoke->GetLocations();
1766 Register obj = locations->InAt(0).AsRegister<Register>();
1767 Location srcBegin = locations->InAt(1);
1770 Register srcEnd = locations->InAt(2).AsRegister<Register>();
1771 Register dst = locations->InAt(3).AsRegister<Register>();
1772 Register dstBegin = locations->InAt(4).AsRegister<Register>();
1842 static void GenPeek(LocationSummary* locations, DataType::Type size, X86Assembler* assembler) {
1843 Register address = locations->InAt(0).AsRegisterPairLow<Register>();
1844 Location out_loc = locations->Out();
1902 LocationSummary* locations =
1904 locations->SetInAt(0, Location::RequiresRegister());
1907 locations->SetInAt(1, Location::ByteRegisterOrConstant(EDX, value));
1909 locations->SetInAt(1, Location::RegisterOrConstant(value));
1913 static void GenPoke(LocationSummary* locations, DataType::Type size, X86Assembler* assembler) {
1914 Register address = locations->InAt(0).AsRegisterPairLow<Register>();
1915 Location value_loc = locations->InAt(1);
1992 LocationSummary* locations =
1994 locations->SetOut(Location::RequiresRegister());
2007 LocationSummary* locations = invoke->GetLocations();
2008 Location base_loc = locations->InAt(1);
2010 Location offset_loc = locations->InAt(2);
2012 Location output_loc = locations->Out();
2045 XmmRegister temp = locations->GetTemp(0).AsFpuRegister<XmmRegister>();
2070 LocationSummary* locations =
2077 locations->SetCustomSlowPathCallerSaves(RegisterSet::Empty()); // No caller-save registers.
2079 locations->SetInAt(0, Location::NoLocation()); // Unused receiver.
2080 locations->SetInAt(1, Location::RequiresRegister());
2081 locations->SetInAt(2, Location::RequiresRegister());
2085 locations->AddTemp(Location::RequiresFpuRegister());
2086 locations->SetOut(Location::RequiresRegister(), Location::kNoOutputOverlap);
2088 locations->SetOut(Location::RequiresRegister(), Location::kOutputOverlap);
2091 locations->SetOut(Location::RequiresRegister(),
2144 LocationSummary* locations =
2146 locations->SetInAt(0, Location::NoLocation()); // Unused receiver.
2147 locations->SetInAt(1, Location::RequiresRegister());
2148 locations->SetInAt(2, Location::RequiresRegister());
2149 locations->SetInAt(3, Location::RequiresRegister());
2152 locations->AddTemp(Location::RequiresRegister()); // Possibly used for reference poisoning too.
2154 locations->AddTemp(Location::RegisterLocation(ECX));
2156 locations->AddTemp(Location::RequiresFpuRegister());
2157 locations->AddTemp(Location::RequiresFpuRegister());
2200 static void GenUnsafePut(LocationSummary* locations,
2205 Register base = locations->InAt(1).AsRegister<Register>();
2206 Register offset = locations->InAt(2).AsRegisterPairLow<Register>();
2207 Location value_loc = locations->InAt(3);
2213 XmmRegister temp1 = locations->GetTemp(0).AsFpuRegister<XmmRegister>();
2214 XmmRegister temp2 = locations->GetTemp(1).AsFpuRegister<XmmRegister>();
2224 Register temp = locations->GetTemp(0).AsRegister<Register>();
2238 codegen->MarkGCCard(locations->GetTemp(0).AsRegister<Register>(),
2239 locations->GetTemp(1).AsRegister<Register>(),
2283 LocationSummary* locations =
2289 locations->SetInAt(0, Location::NoLocation()); // Unused receiver.
2290 locations->SetInAt(1, Location::RequiresRegister());
2293 locations->SetInAt(2, Location::RequiresRegister());
2297 locations->SetInAt(3, Location::RegisterPairLocation(EAX, EDX));
2298 locations->SetInAt(4, Location::RegisterPairLocation(EBX, ECX));
2300 locations->SetInAt(3, Location::RegisterLocation(EAX));
2301 locations->SetInAt(4, Location::RequiresRegister());
2305 locations->SetOut(Location::RegisterLocation(EAX));
2309 locations->AddTemp(Location::RequiresRegister()); // Possibly used for reference poisoning too.
2311 locations->AddTemp(Location::RegisterLocation(ECX));
2335 LocationSummary* locations = invoke->GetLocations();
2337 Register base = locations->InAt(1).AsRegister<Register>();
2338 Register offset = locations->InAt(2).AsRegisterPairLow<Register>();
2339 Location out = locations->Out();
2350 Location temp1_loc = locations->GetTemp(0);
2352 Register temp2 = locations->GetTemp(1).AsRegister<Register>();
2354 Register expected = locations->InAt(3).AsRegister<Register>();
2357 Register value = locations->InAt(4).AsRegister<Register>();
2429 DCHECK_EQ(locations->InAt(3).AsRegister<Register>(), EAX);
2430 __ LockCmpxchgl(field_addr, locations->InAt(4).AsRegister<Register>());
2434 DCHECK_EQ(locations->InAt(3).AsRegisterPairLow<Register>(), EAX);
2435 DCHECK_EQ(locations->InAt(3).AsRegisterPairHigh<Register>(), EDX);
2436 DCHECK_EQ(locations->InAt(4).AsRegisterPairLow<Register>(), EBX);
2437 DCHECK_EQ(locations->InAt(4).AsRegisterPairHigh<Register>(), ECX);
2469 LocationSummary* locations =
2471 locations->SetInAt(0, Location::RequiresRegister());
2472 locations->SetOut(Location::SameAsFirstInput());
2473 locations->AddTemp(Location::RequiresRegister());
2490 LocationSummary* locations = invoke->GetLocations();
2492 Register reg = locations->InAt(0).AsRegister<Register>();
2493 Register temp = locations->GetTemp(0).AsRegister<Register>();
2511 LocationSummary* locations =
2513 locations->SetInAt(0, Location::RequiresRegister());
2514 locations->SetOut(Location::SameAsFirstInput());
2515 locations->AddTemp(Location::RequiresRegister());
2520 LocationSummary* locations = invoke->GetLocations();
2522 Register reg_low = locations->InAt(0).AsRegisterPairLow<Register>();
2523 Register reg_high = locations->InAt(0).AsRegisterPairHigh<Register>();
2524 Register temp = locations->GetTemp(0).AsRegister<Register>();
2553 LocationSummary* locations =
2556 locations->AddTemp(Location::RequiresRegister());
2558 locations->SetInAt(0, Location::Any());
2559 locations->SetOut(Location::RequiresRegister());
2565 LocationSummary* locations = invoke->GetLocations();
2566 Location src = locations->InAt(0);
2567 Register out = locations->Out().AsRegister<Register>();
2589 Register temp = locations->GetTemp(0).AsRegister<Register>();
2619 LocationSummary* locations =
2622 locations->SetInAt(0, Location::RequiresRegister());
2624 locations->SetInAt(0, Location::Any());
2626 locations->SetOut(Location::RequiresRegister());
2632 LocationSummary* locations = invoke->GetLocations();
2633 Location src = locations->InAt(0);
2634 Register out = locations->Out().AsRegister<Register>();
2723 LocationSummary* locations =
2726 locations->SetInAt(0, Location::RequiresRegister());
2728 locations->SetInAt(0, Location::Any());
2730 locations->SetOut(Location::RequiresRegister());
2736 LocationSummary* locations = invoke->GetLocations();
2737 Location src = locations->InAt(0);
2738 Register out = locations->Out().AsRegister<Register>();
2898 LocationSummary* locations = invoke->GetLocations();
2906 Register src = locations->InAt(0).AsRegister<Register>();
2907 Location src_pos = locations->InAt(1);
2908 Register dest = locations->InAt(2).AsRegister<Register>();
2909 Location dest_pos = locations->InAt(3);
2910 Location length_arg = locations->InAt(4);
2912 Location temp1_loc = locations->GetTemp(0);
2914 Location temp2_loc = locations->GetTemp(1);
2931 // Checked when building locations.
2974 Location temp3_loc = locations->GetTemp(2);
3295 LocationSummary* locations = invoke->GetLocations();
3298 Register out = locations->Out().AsRegister<Register>();
3320 Register in = locations->InAt(0).AsRegister<Register>();
3344 LocationSummary* locations =
3346 locations->SetOut(Location::RequiresRegister());
3363 LocationSummary* locations =
3365 locations->SetInAt(0, Location::Any());