| OLD | NEW |
| 1 //===- subzero/src/IceInstX8632.h - x86-32 machine instructions -*- C++ -*-===// | 1 //===- subzero/src/IceInstX8632.h - x86-32 machine 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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 X8632::Address toAsmAddress(const Cfg *Func) const; | 125 X8632::Address toAsmAddress(const Cfg *Func) const; |
| 126 void emit(const Cfg *Func) const override; | 126 void emit(const Cfg *Func) const override; |
| 127 using OperandX8632::dump; | 127 using OperandX8632::dump; |
| 128 void dump(const Cfg *Func, Ostream &Str) const override; | 128 void dump(const Cfg *Func, Ostream &Str) const override; |
| 129 | 129 |
| 130 static bool classof(const Operand *Operand) { | 130 static bool classof(const Operand *Operand) { |
| 131 return Operand->getKind() == static_cast<OperandKind>(kSplit); | 131 return Operand->getKind() == static_cast<OperandKind>(kSplit); |
| 132 } | 132 } |
| 133 | 133 |
| 134 private: | 134 private: |
| 135 VariableSplit(Cfg *Func, Variable *Var, Portion Part) | 135 VariableSplit(Cfg *Func, Variable *MyVar, Portion MyPart) |
| 136 : OperandX8632(kSplit, IceType_i32), Var(Var), Part(Part) { | 136 : OperandX8632(kSplit, IceType_i32), Var(MyVar), Part(MyPart) { |
| 137 assert(Var->getType() == IceType_f64); | 137 assert(Var->getType() == IceType_f64); |
| 138 Vars = Func->allocateArrayOf<Variable *>(1); | 138 Vars = Func->allocateArrayOf<Variable *>(1); |
| 139 Vars[0] = Var; | 139 Vars[0] = Var; |
| 140 NumVars = 1; | 140 NumVars = 1; |
| 141 } | 141 } |
| 142 | 142 |
| 143 Variable *Var; | 143 Variable *Var; |
| 144 Portion Part; | 144 Portion Part; |
| 145 }; | 145 }; |
| 146 | 146 |
| (...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1168 // Base class for a lockable x86-32 instruction (emits a locked prefix). | 1168 // Base class for a lockable x86-32 instruction (emits a locked prefix). |
| 1169 class InstX8632Lockable : public InstX8632 { | 1169 class InstX8632Lockable : public InstX8632 { |
| 1170 InstX8632Lockable() = delete; | 1170 InstX8632Lockable() = delete; |
| 1171 InstX8632Lockable(const InstX8632Lockable &) = delete; | 1171 InstX8632Lockable(const InstX8632Lockable &) = delete; |
| 1172 InstX8632Lockable &operator=(const InstX8632Lockable &) = delete; | 1172 InstX8632Lockable &operator=(const InstX8632Lockable &) = delete; |
| 1173 | 1173 |
| 1174 protected: | 1174 protected: |
| 1175 bool Locked; | 1175 bool Locked; |
| 1176 | 1176 |
| 1177 InstX8632Lockable(Cfg *Func, InstKindX8632 Kind, SizeT Maxsrcs, | 1177 InstX8632Lockable(Cfg *Func, InstKindX8632 Kind, SizeT Maxsrcs, |
| 1178 Variable *Dest, bool Locked) | 1178 Variable *Dest, bool MyLocked) |
| 1179 : InstX8632(Func, Kind, Maxsrcs, Dest), Locked(Locked) { | 1179 : InstX8632(Func, Kind, Maxsrcs, Dest), Locked(MyLocked) { |
| 1180 // Assume that such instructions are used for Atomics and be careful | 1180 // Assume that such instructions are used for Atomics and be careful |
| 1181 // with optimizations. | 1181 // with optimizations. |
| 1182 HasSideEffects = Locked; | 1182 HasSideEffects = Locked; |
| 1183 } | 1183 } |
| 1184 }; | 1184 }; |
| 1185 | 1185 |
| 1186 // Mul instruction - unsigned multiply. | 1186 // Mul instruction - unsigned multiply. |
| 1187 class InstX8632Mul : public InstX8632 { | 1187 class InstX8632Mul : public InstX8632 { |
| 1188 InstX8632Mul() = delete; | 1188 InstX8632Mul() = delete; |
| 1189 InstX8632Mul(const InstX8632Mul &) = delete; | 1189 InstX8632Mul(const InstX8632Mul &) = delete; |
| (...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1777 template <> void InstX8632Pinsr::emitIAS(const Cfg *Func) const; | 1777 template <> void InstX8632Pinsr::emitIAS(const Cfg *Func) const; |
| 1778 template <> void InstX8632Movsx::emitIAS(const Cfg *Func) const; | 1778 template <> void InstX8632Movsx::emitIAS(const Cfg *Func) const; |
| 1779 template <> void InstX8632Movzx::emitIAS(const Cfg *Func) const; | 1779 template <> void InstX8632Movzx::emitIAS(const Cfg *Func) const; |
| 1780 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; | 1780 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; |
| 1781 template <> void InstX8632Pshufd::emitIAS(const Cfg *Func) const; | 1781 template <> void InstX8632Pshufd::emitIAS(const Cfg *Func) const; |
| 1782 template <> void InstX8632Shufps::emitIAS(const Cfg *Func) const; | 1782 template <> void InstX8632Shufps::emitIAS(const Cfg *Func) const; |
| 1783 | 1783 |
| 1784 } // end of namespace Ice | 1784 } // end of namespace Ice |
| 1785 | 1785 |
| 1786 #endif // SUBZERO_SRC_ICEINSTX8632_H | 1786 #endif // SUBZERO_SRC_ICEINSTX8632_H |
| OLD | NEW |