| OLD | NEW |
| 1 //===- subzero/src/IceInstX8632.h - Low-level x86 instructions --*- C++ -*-===// | 1 //===- subzero/src/IceInstX8632.h - Low-level x86 instructions --*- 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 // This file declares the InstX8632 and OperandX8632 classes and | 10 // This file declares the InstX8632 and OperandX8632 classes and |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 Divss, | 146 Divss, |
| 147 Fld, | 147 Fld, |
| 148 Fstp, | 148 Fstp, |
| 149 Icmp, | 149 Icmp, |
| 150 Idiv, | 150 Idiv, |
| 151 Imul, | 151 Imul, |
| 152 Label, | 152 Label, |
| 153 Load, | 153 Load, |
| 154 Mfence, | 154 Mfence, |
| 155 Mov, | 155 Mov, |
| 156 Movp, |
| 156 Movq, | 157 Movq, |
| 157 Movsx, | 158 Movsx, |
| 158 Movzx, | 159 Movzx, |
| 159 Mul, | 160 Mul, |
| 160 Mulss, | 161 Mulss, |
| 161 Or, | 162 Or, |
| 162 Pop, | 163 Pop, |
| 163 Push, | 164 Push, |
| 164 Ret, | 165 Ret, |
| 165 Sar, | 166 Sar, |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 631 virtual void dump(const Cfg *Func) const; | 632 virtual void dump(const Cfg *Func) const; |
| 632 static bool classof(const Inst *Inst) { return isClassof(Inst, Mov); } | 633 static bool classof(const Inst *Inst) { return isClassof(Inst, Mov); } |
| 633 | 634 |
| 634 private: | 635 private: |
| 635 InstX8632Mov(Cfg *Func, Variable *Dest, Operand *Source); | 636 InstX8632Mov(Cfg *Func, Variable *Dest, Operand *Source); |
| 636 InstX8632Mov(const InstX8632Mov &) LLVM_DELETED_FUNCTION; | 637 InstX8632Mov(const InstX8632Mov &) LLVM_DELETED_FUNCTION; |
| 637 InstX8632Mov &operator=(const InstX8632Mov &) LLVM_DELETED_FUNCTION; | 638 InstX8632Mov &operator=(const InstX8632Mov &) LLVM_DELETED_FUNCTION; |
| 638 virtual ~InstX8632Mov() {} | 639 virtual ~InstX8632Mov() {} |
| 639 }; | 640 }; |
| 640 | 641 |
| 642 // Move packed - copy 128 bit values between XMM registers or mem128 and |
| 643 // XMM registers |
| 644 class InstX8632Movp : public InstX8632 { |
| 645 public: |
| 646 static InstX8632Movp *create(Cfg *Func, Variable *Dest, Operand *Source) { |
| 647 return new (Func->allocate<InstX8632Movp>()) |
| 648 InstX8632Movp(Func, Dest, Source); |
| 649 } |
| 650 virtual bool isRedundantAssign() const; |
| 651 virtual void emit(const Cfg *Func) const; |
| 652 virtual void dump(const Cfg *Func) const; |
| 653 static bool classof(const Inst *Inst) { return isClassof(Inst, Movp); } |
| 654 |
| 655 private: |
| 656 InstX8632Movp(Cfg *Func, Variable *Dest, Operand *Source); |
| 657 InstX8632Movp(const InstX8632Movp &) LLVM_DELETED_FUNCTION; |
| 658 InstX8632Movp &operator=(const InstX8632Movp &) LLVM_DELETED_FUNCTION; |
| 659 virtual ~InstX8632Movp() {} |
| 660 }; |
| 661 |
| 641 // This is essentially a "movq" instruction with an OperandX8632Mem | 662 // This is essentially a "movq" instruction with an OperandX8632Mem |
| 642 // operand instead of Variable as the destination. It's important | 663 // operand instead of Variable as the destination. It's important |
| 643 // for liveness that there is no Dest operand. | 664 // for liveness that there is no Dest operand. |
| 644 class InstX8632StoreQ : public InstX8632 { | 665 class InstX8632StoreQ : public InstX8632 { |
| 645 public: | 666 public: |
| 646 static InstX8632StoreQ *create(Cfg *Func, Operand *Value, OperandX8632 *Mem) { | 667 static InstX8632StoreQ *create(Cfg *Func, Operand *Value, OperandX8632 *Mem) { |
| 647 return new (Func->allocate<InstX8632StoreQ>()) | 668 return new (Func->allocate<InstX8632StoreQ>()) |
| 648 InstX8632StoreQ(Func, Value, Mem); | 669 InstX8632StoreQ(Func, Value, Mem); |
| 649 } | 670 } |
| 650 virtual void emit(const Cfg *Func) const; | 671 virtual void emit(const Cfg *Func) const; |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 827 | 848 |
| 828 InstX8632Xadd(Cfg *Func, Operand *Dest, Variable *Source, bool Locked); | 849 InstX8632Xadd(Cfg *Func, Operand *Dest, Variable *Source, bool Locked); |
| 829 InstX8632Xadd(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; | 850 InstX8632Xadd(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; |
| 830 InstX8632Xadd &operator=(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; | 851 InstX8632Xadd &operator=(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; |
| 831 virtual ~InstX8632Xadd() {} | 852 virtual ~InstX8632Xadd() {} |
| 832 }; | 853 }; |
| 833 | 854 |
| 834 } // end of namespace Ice | 855 } // end of namespace Ice |
| 835 | 856 |
| 836 #endif // SUBZERO_SRC_ICEINSTX8632_H | 857 #endif // SUBZERO_SRC_ICEINSTX8632_H |
| OLD | NEW |