OLD | NEW |
1 //===- subzero/src/IceOperand.h - High-level operands -----------*- C++ -*-===// | 1 //===- subzero/src/IceOperand.h - High-level operands -----------*- C++ -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 /// | 9 /// |
10 /// \file | 10 /// \file |
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 /// Used primarily for syntactic correctness of textual assembly | 496 /// Used primarily for syntactic correctness of textual assembly |
497 /// emission. Note that only basic information is copied, in | 497 /// emission. Note that only basic information is copied, in |
498 /// particular not IsArgument, IsImplicitArgument, IgnoreLiveness, | 498 /// particular not IsArgument, IsImplicitArgument, IgnoreLiveness, |
499 /// RegNumTmp, Weight, Live, LoVar, HiVar, VarsReal. | 499 /// RegNumTmp, Weight, Live, LoVar, HiVar, VarsReal. |
500 Variable *asType(Type Ty); | 500 Variable *asType(Type Ty); |
501 | 501 |
502 void emit(const Cfg *Func) const override; | 502 void emit(const Cfg *Func) const override; |
503 using Operand::dump; | 503 using Operand::dump; |
504 void dump(const Cfg *Func, Ostream &Str) const override; | 504 void dump(const Cfg *Func, Ostream &Str) const override; |
505 | 505 |
| 506 /// Return reg num of base register, if different from stack/frame register. |
| 507 virtual int32_t getBaseRegNum() const { return NoRegister; } |
| 508 |
506 static bool classof(const Operand *Operand) { | 509 static bool classof(const Operand *Operand) { |
507 OperandKind Kind = Operand->getKind(); | 510 OperandKind Kind = Operand->getKind(); |
508 return Kind >= kVariable && Kind <= kVariable_Num; | 511 return Kind >= kVariable && Kind <= kVariable_Num; |
509 } | 512 } |
510 | 513 |
511 protected: | 514 protected: |
512 Variable(OperandKind K, Type Ty, SizeT Index) | 515 Variable(OperandKind K, Type Ty, SizeT Index) |
513 : Operand(K, Ty), Number(Index) { | 516 : Operand(K, Ty), Number(Index) { |
514 Vars = VarsReal; | 517 Vars = VarsReal; |
515 Vars[0] = this; | 518 Vars[0] = this; |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 private: | 653 private: |
651 const Cfg *Func; | 654 const Cfg *Func; |
652 MetadataKind Kind; | 655 MetadataKind Kind; |
653 std::vector<VariableTracking> Metadata; | 656 std::vector<VariableTracking> Metadata; |
654 const static InstDefList NoDefinitions; | 657 const static InstDefList NoDefinitions; |
655 }; | 658 }; |
656 | 659 |
657 } // end of namespace Ice | 660 } // end of namespace Ice |
658 | 661 |
659 #endif // SUBZERO_SRC_ICEOPERAND_H | 662 #endif // SUBZERO_SRC_ICEOPERAND_H |
OLD | NEW |