Lines Matching refs:Location
31 class Location; variable
33 std::ostream& operator<<(std::ostream& os, const Location& location);
39 class Location : public ValueObject {
81 Location() : ValueObject(), value_(kInvalid) { in Location() function
97 Location(const Location& other) = default;
99 Location& operator=(const Location& other) = default;
105 static Location ConstantLocation(HConstant* constant) { in ConstantLocation()
107 return Location(kConstant | reinterpret_cast<uintptr_t>(constant)); in ConstantLocation()
124 static Location NoLocation() { in NoLocation()
125 return Location(); in NoLocation()
129 static Location RegisterLocation(int reg) { in RegisterLocation()
130 return Location(kRegister, reg); in RegisterLocation()
133 static Location FpuRegisterLocation(int reg) { in FpuRegisterLocation()
134 return Location(kFpuRegister, reg); in FpuRegisterLocation()
137 static Location RegisterPairLocation(int low, int high) { in RegisterPairLocation()
138 return Location(kRegisterPair, low << 16 | high); in RegisterPairLocation()
141 static Location FpuRegisterPairLocation(int low, int high) { in FpuRegisterPairLocation()
142 return Location(kFpuRegisterPair, low << 16 | high); in FpuRegisterPairLocation()
220 Location ToLow() const { in ToLow()
222 return Location::RegisterLocation(low()); in ToLow()
224 return Location::FpuRegisterLocation(low()); in ToLow()
227 return Location::StackSlot(GetStackIndex()); in ToLow()
231 Location ToHigh() const { in ToHigh()
233 return Location::RegisterLocation(high()); in ToHigh()
235 return Location::FpuRegisterLocation(high()); in ToHigh()
238 return Location::StackSlot(GetHighStackIndex(4)); in ToHigh()
248 static Location StackSlot(intptr_t stack_index) { in StackSlot()
250 Location loc(kStackSlot, payload); in StackSlot()
260 static Location DoubleStackSlot(intptr_t stack_index) { in DoubleStackSlot()
262 Location loc(kDoubleStackSlot, payload); in DoubleStackSlot()
272 static Location SIMDStackSlot(intptr_t stack_index) { in SIMDStackSlot()
274 Location loc(kSIMDStackSlot, payload); in SIMDStackSlot()
300 bool Equals(Location other) const { in Equals()
304 bool Contains(Location other) const { in Contains()
313 bool OverlapsWith(Location other) const { in OverlapsWith()
358 static Location UnallocatedLocation(Policy policy) { in UnallocatedLocation()
359 return Location(kUnallocated, PolicyField::Encode(policy)); in UnallocatedLocation()
363 static Location Any() { in Any()
367 static Location RequiresRegister() { in RequiresRegister()
371 static Location RequiresFpuRegister() { in RequiresFpuRegister()
375 static Location RegisterOrConstant(HInstruction* instruction);
376 static Location RegisterOrInt32Constant(HInstruction* instruction);
377 static Location ByteRegisterOrConstant(int reg, HInstruction* instruction);
378 static Location FpuRegisterOrConstant(HInstruction* instruction);
379 static Location FpuRegisterOrInt32Constant(HInstruction* instruction);
383 static Location SameAsFirstInput() { in SameAsFirstInput()
406 explicit Location(uintptr_t value) : value_(value) {} in Location() function
408 Location(Kind kind, uintptr_t payload) in Location() function
430 std::ostream& operator<<(std::ostream& os, const Location::Kind& rhs);
431 std::ostream& operator<<(std::ostream& os, const Location::Policy& rhs);
438 void Add(Location loc) { in Add()
447 void Remove(Location loc) { in Remove()
511 void SetInAt(uint32_t at, Location location) { in SetInAt()
515 Location InAt(uint32_t at) const { in InAt()
527 void SetOut(Location location, Location::OutputOverlap overlaps = Location::kOutputOverlap) {
533 void UpdateOut(Location location) { in UpdateOut()
542 void AddTemp(Location location) { in AddTemp()
548 AddTemp(Location::RequiresRegister()); in AddRegisterTemps()
552 Location GetTemp(uint32_t at) const { in GetTemp()
556 void SetTempAt(uint32_t at, Location location) { in SetTempAt()
567 Location Out() const { return output_; } in Out()
628 void AddLiveRegister(Location location) { in AddLiveRegister()
647 && (output_.GetPolicy() == Location::kSameAsFirstInput); in OutputUsesSameAs()
651 Location input = inputs_[input_index]; in IsFixedInput()
660 return output_overlaps_ == Location::kOutputOverlap; in OutputCanOverlapWithInputs()
673 ArenaVector<Location> inputs_;
674 ArenaVector<Location> temps_;
682 Location::OutputOverlap output_overlaps_;
683 Location output_;