| 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 | 
|---|