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 1331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 NopVariant Variant; | 1342 NopVariant Variant; |
1343 }; | 1343 }; |
1344 | 1344 |
1345 // Fld - load a value onto the x87 FP stack. | 1345 // Fld - load a value onto the x87 FP stack. |
1346 class InstX8632Fld : public InstX8632 { | 1346 class InstX8632Fld : public InstX8632 { |
1347 public: | 1347 public: |
1348 static InstX8632Fld *create(Cfg *Func, Operand *Src) { | 1348 static InstX8632Fld *create(Cfg *Func, Operand *Src) { |
1349 return new (Func->allocate<InstX8632Fld>()) InstX8632Fld(Func, Src); | 1349 return new (Func->allocate<InstX8632Fld>()) InstX8632Fld(Func, Src); |
1350 } | 1350 } |
1351 void emit(const Cfg *Func) const override; | 1351 void emit(const Cfg *Func) const override; |
| 1352 void emitIAS(const Cfg *Func) const override; |
1352 void dump(const Cfg *Func) const override; | 1353 void dump(const Cfg *Func) const override; |
1353 static bool classof(const Inst *Inst) { return isClassof(Inst, Fld); } | 1354 static bool classof(const Inst *Inst) { return isClassof(Inst, Fld); } |
1354 | 1355 |
1355 private: | 1356 private: |
1356 InstX8632Fld(Cfg *Func, Operand *Src); | 1357 InstX8632Fld(Cfg *Func, Operand *Src); |
1357 InstX8632Fld(const InstX8632Fld &) = delete; | 1358 InstX8632Fld(const InstX8632Fld &) = delete; |
1358 InstX8632Fld &operator=(const InstX8632Fld &) = delete; | 1359 InstX8632Fld &operator=(const InstX8632Fld &) = delete; |
1359 ~InstX8632Fld() override {} | 1360 ~InstX8632Fld() override {} |
1360 }; | 1361 }; |
1361 | 1362 |
1362 // Fstp - store x87 st(0) into memory and pop st(0). | 1363 // Fstp - store x87 st(0) into memory and pop st(0). |
1363 class InstX8632Fstp : public InstX8632 { | 1364 class InstX8632Fstp : public InstX8632 { |
1364 public: | 1365 public: |
1365 static InstX8632Fstp *create(Cfg *Func, Variable *Dest) { | 1366 static InstX8632Fstp *create(Cfg *Func, Variable *Dest) { |
1366 return new (Func->allocate<InstX8632Fstp>()) InstX8632Fstp(Func, Dest); | 1367 return new (Func->allocate<InstX8632Fstp>()) InstX8632Fstp(Func, Dest); |
1367 } | 1368 } |
1368 void emit(const Cfg *Func) const override; | 1369 void emit(const Cfg *Func) const override; |
| 1370 void emitIAS(const Cfg *Func) const override; |
1369 void dump(const Cfg *Func) const override; | 1371 void dump(const Cfg *Func) const override; |
1370 static bool classof(const Inst *Inst) { return isClassof(Inst, Fstp); } | 1372 static bool classof(const Inst *Inst) { return isClassof(Inst, Fstp); } |
1371 | 1373 |
1372 private: | 1374 private: |
1373 InstX8632Fstp(Cfg *Func, Variable *Dest); | 1375 InstX8632Fstp(Cfg *Func, Variable *Dest); |
1374 InstX8632Fstp(const InstX8632Fstp &) = delete; | 1376 InstX8632Fstp(const InstX8632Fstp &) = delete; |
1375 InstX8632Fstp &operator=(const InstX8632Fstp &) = delete; | 1377 InstX8632Fstp &operator=(const InstX8632Fstp &) = delete; |
1376 ~InstX8632Fstp() override {} | 1378 ~InstX8632Fstp() override {} |
1377 }; | 1379 }; |
1378 | 1380 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1514 template <> void InstX8632Cbwdq::emitIAS(const Cfg *Func) const; | 1516 template <> void InstX8632Cbwdq::emitIAS(const Cfg *Func) const; |
1515 template <> void InstX8632Movd::emitIAS(const Cfg *Func) const; | 1517 template <> void InstX8632Movd::emitIAS(const Cfg *Func) const; |
1516 template <> void InstX8632Movp::emitIAS(const Cfg *Func) const; | 1518 template <> void InstX8632Movp::emitIAS(const Cfg *Func) const; |
1517 template <> void InstX8632Movq::emitIAS(const Cfg *Func) const; | 1519 template <> void InstX8632Movq::emitIAS(const Cfg *Func) const; |
1518 template <> void InstX8632MovssRegs::emitIAS(const Cfg *Func) const; | 1520 template <> void InstX8632MovssRegs::emitIAS(const Cfg *Func) const; |
1519 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; | 1521 template <> void InstX8632Pmull::emitIAS(const Cfg *Func) const; |
1520 | 1522 |
1521 } // end of namespace Ice | 1523 } // end of namespace Ice |
1522 | 1524 |
1523 #endif // SUBZERO_SRC_ICEINSTX8632_H | 1525 #endif // SUBZERO_SRC_ICEINSTX8632_H |
OLD | NEW |