Lines Matching refs:InstructionOperand
35 // MSVC on x86 has issues with ALIGNAS(8) on InstructionOperand, but does
43 class V8_EXPORT_PRIVATE INSTRUCTION_OPERAND_ALIGN InstructionOperand {
59 InstructionOperand() : InstructionOperand(INVALID) {}
108 static void ReplaceWith(InstructionOperand* dest,
109 const InstructionOperand* src) {
113 bool Equals(const InstructionOperand& that) const {
121 bool Compare(const InstructionOperand& that) const {
125 bool EqualsCanonicalized(const InstructionOperand& that) const {
133 bool CompareCanonicalized(const InstructionOperand& that) const {
138 bool InterferesWith(const InstructionOperand& other) const;
143 bool operator==(InstructionOperand& other) const { return Equals(other); }
144 bool operator!=(InstructionOperand& other) const { return !Equals(other); }
147 explicit InstructionOperand(Kind kind) : value_(KindField::encode(kind)) {}
156 using InstructionOperandVector = ZoneVector<InstructionOperand>;
158 std::ostream& operator<<(std::ostream&, const InstructionOperand&);
162 static OperandType* cast(InstructionOperand* op) { \
167 static const OperandType* cast(const InstructionOperand* op) { \
172 static OperandType cast(const InstructionOperand& op) { \
177 class UnallocatedOperand final : public InstructionOperand {
383 : InstructionOperand(UNALLOCATED) {
389 class ConstantOperand : public InstructionOperand {
392 : InstructionOperand(CONSTANT) {
402 return InstructionOperand::New(zone, ConstantOperand(virtual_register));
411 class ImmediateOperand : public InstructionOperand {
416 : InstructionOperand(IMMEDIATE) {
440 return InstructionOperand::New(zone, ImmediateOperand(type, value));
450 class PendingOperand : public InstructionOperand {
452 PendingOperand() : InstructionOperand(PENDING) {}
473 return InstructionOperand::New(zone, PendingOperand(previous_operand));
482 STATIC_ASSERT(alignof(InstructionOperand) >= (1 << kPointerShift));
488 class LocationOperand : public InstructionOperand {
492 LocationOperand(InstructionOperand::Kind operand_kind,
495 : InstructionOperand(operand_kind) {
573 static LocationOperand* cast(InstructionOperand* op) {
578 static const LocationOperand* cast(const InstructionOperand* op) {
583 static LocationOperand cast(const InstructionOperand& op) {
601 return InstructionOperand::New(zone, AllocatedOperand(kind, rep, index));
609 bool InstructionOperand::IsAnyLocationOperand() const {
613 bool InstructionOperand::IsLocationOperand() const {
618 bool InstructionOperand::IsFPLocationOperand() const {
623 bool InstructionOperand::IsAnyRegister() const {
629 bool InstructionOperand::IsRegister() const {
634 bool InstructionOperand::IsFPRegister() const {
639 bool InstructionOperand::IsFloatRegister() const {
644 bool InstructionOperand::IsDoubleRegister() const {
649 bool InstructionOperand::IsSimd128Register() const {
654 bool InstructionOperand::IsAnyStackSlot() const {
660 bool InstructionOperand::IsStackSlot() const {
665 bool InstructionOperand::IsFPStackSlot() const {
670 bool InstructionOperand::IsFloatStackSlot() const {
678 bool InstructionOperand::IsDoubleStackSlot() const {
686 bool InstructionOperand::IsSimd128StackSlot() const {
694 uint64_t InstructionOperand::GetCanonicalizedValue() const {
714 return InstructionOperand::KindField::update(
723 bool operator()(const InstructionOperand& a,
724 const InstructionOperand& b) const {
732 MoveOperands(const InstructionOperand& source,
733 const InstructionOperand& destination)
741 const InstructionOperand& source() const { return source_; }
742 InstructionOperand& source() { return source_; }
743 void set_source(const InstructionOperand& operand) { source_ = operand; }
745 const InstructionOperand& destination() const { return destination_; }
746 InstructionOperand& destination() { return destination_; }
747 void set_destination(const InstructionOperand& operand) {
756 void SetPending() { destination_ = InstructionOperand(); }
766 void Eliminate() { source_ = destination_ = InstructionOperand(); }
776 InstructionOperand source_;
777 InstructionOperand destination_;
790 MoveOperands* AddMove(const InstructionOperand& from,
791 const InstructionOperand& to) {
796 MoveOperands* AddMove(const InstructionOperand& from,
797 const InstructionOperand& to,
822 const ZoneVector<InstructionOperand>& reference_operands() const {
837 ZoneVector<InstructionOperand> reference_operands_;
851 const InstructionOperand* OutputAt(size_t i) const {
855 InstructionOperand* OutputAt(size_t i) {
861 const InstructionOperand* Output() const { return OutputAt(0); }
862 InstructionOperand* Output() { return OutputAt(0); }
865 const InstructionOperand* InputAt(size_t i) const {
869 InstructionOperand* InputAt(size_t i) {
875 const InstructionOperand* TempAt(size_t i) const {
879 InstructionOperand* TempAt(size_t i) {
907 size_t output_count, InstructionOperand* outputs,
908 size_t input_count, InstructionOperand* inputs,
909 size_t temp_count, InstructionOperand* temps) {
919 RoundUp(sizeof(Instruction), sizeof(InstructionOperand)) +
920 total_extra_ops * sizeof(InstructionOperand));
1042 InstructionOperand* outputs, size_t input_count,
1043 InstructionOperand* inputs, size_t temp_count,
1044 InstructionOperand* temps);
1053 InstructionOperand operands_[1];
1503 using Inputs = ZoneVector<InstructionOperand>;
1515 const InstructionOperand& output() const { return output_; }
1516 InstructionOperand& output() { return output_; }
1520 InstructionOperand output_;