| 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 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 typedef InstX8632BinopXmm<InstX8632::Subss, false> InstX8632Subss; | 830 typedef InstX8632BinopXmm<InstX8632::Subss, false> InstX8632Subss; |
| 831 typedef InstX8632BinopGPR<InstX8632::Sbb> InstX8632Sbb; | 831 typedef InstX8632BinopGPR<InstX8632::Sbb> InstX8632Sbb; |
| 832 typedef InstX8632BinopXmm<InstX8632::Psub, true> InstX8632Psub; | 832 typedef InstX8632BinopXmm<InstX8632::Psub, true> InstX8632Psub; |
| 833 typedef InstX8632BinopGPR<InstX8632::And> InstX8632And; | 833 typedef InstX8632BinopGPR<InstX8632::And> InstX8632And; |
| 834 typedef InstX8632BinopXmm<InstX8632::Pand, false> InstX8632Pand; | 834 typedef InstX8632BinopXmm<InstX8632::Pand, false> InstX8632Pand; |
| 835 typedef InstX8632BinopXmm<InstX8632::Pandn, false> InstX8632Pandn; | 835 typedef InstX8632BinopXmm<InstX8632::Pandn, false> InstX8632Pandn; |
| 836 typedef InstX8632BinopGPR<InstX8632::Or> InstX8632Or; | 836 typedef InstX8632BinopGPR<InstX8632::Or> InstX8632Or; |
| 837 typedef InstX8632BinopXmm<InstX8632::Por, false> InstX8632Por; | 837 typedef InstX8632BinopXmm<InstX8632::Por, false> InstX8632Por; |
| 838 typedef InstX8632BinopGPR<InstX8632::Xor> InstX8632Xor; | 838 typedef InstX8632BinopGPR<InstX8632::Xor> InstX8632Xor; |
| 839 typedef InstX8632BinopXmm<InstX8632::Pxor, false> InstX8632Pxor; | 839 typedef InstX8632BinopXmm<InstX8632::Pxor, false> InstX8632Pxor; |
| 840 typedef InstX8632Binop<InstX8632::Imul> InstX8632Imul; | 840 typedef InstX8632BinopGPR<InstX8632::Imul> InstX8632Imul; |
| 841 typedef InstX8632BinopXmm<InstX8632::Mulps, true> InstX8632Mulps; | 841 typedef InstX8632BinopXmm<InstX8632::Mulps, true> InstX8632Mulps; |
| 842 typedef InstX8632BinopXmm<InstX8632::Mulss, false> InstX8632Mulss; | 842 typedef InstX8632BinopXmm<InstX8632::Mulss, false> InstX8632Mulss; |
| 843 typedef InstX8632Binop<InstX8632::Pmull> InstX8632Pmull; | 843 typedef InstX8632Binop<InstX8632::Pmull> InstX8632Pmull; |
| 844 typedef InstX8632BinopXmm<InstX8632::Pmuludq, false> InstX8632Pmuludq; | 844 typedef InstX8632BinopXmm<InstX8632::Pmuludq, false> InstX8632Pmuludq; |
| 845 typedef InstX8632BinopXmm<InstX8632::Divps, true> InstX8632Divps; | 845 typedef InstX8632BinopXmm<InstX8632::Divps, true> InstX8632Divps; |
| 846 typedef InstX8632BinopXmm<InstX8632::Divss, false> InstX8632Divss; | 846 typedef InstX8632BinopXmm<InstX8632::Divss, false> InstX8632Divss; |
| 847 typedef InstX8632Binop<InstX8632::Rol, true> InstX8632Rol; | 847 typedef InstX8632Binop<InstX8632::Rol, true> InstX8632Rol; |
| 848 typedef InstX8632Binop<InstX8632::Shl, true> InstX8632Shl; | 848 typedef InstX8632Binop<InstX8632::Shl, true> InstX8632Shl; |
| 849 typedef InstX8632Binop<InstX8632::Psll> InstX8632Psll; | 849 typedef InstX8632Binop<InstX8632::Psll> InstX8632Psll; |
| 850 typedef InstX8632Binop<InstX8632::Shr, true> InstX8632Shr; | 850 typedef InstX8632Binop<InstX8632::Shr, true> InstX8632Shr; |
| 851 typedef InstX8632Binop<InstX8632::Sar, true> InstX8632Sar; | 851 typedef InstX8632Binop<InstX8632::Sar, true> InstX8632Sar; |
| 852 typedef InstX8632Binop<InstX8632::Psra> InstX8632Psra; | 852 typedef InstX8632Binop<InstX8632::Psra> InstX8632Psra; |
| 853 typedef InstX8632Binop<InstX8632::Pcmpeq> InstX8632Pcmpeq; | 853 typedef InstX8632BinopXmm<InstX8632::Pcmpeq, true> InstX8632Pcmpeq; |
| 854 typedef InstX8632Binop<InstX8632::Pcmpgt> InstX8632Pcmpgt; | 854 typedef InstX8632BinopXmm<InstX8632::Pcmpgt, true> InstX8632Pcmpgt; |
| 855 // TODO: movss is only a binary operation when the source and dest | 855 // TODO: movss is only a binary operation when the source and dest |
| 856 // operands are both registers. In other cases, it behaves like a copy | 856 // operands are both registers. In other cases, it behaves like a copy |
| 857 // (mov-like) operation. Eventually, InstX8632Movss should assert that | 857 // (mov-like) operation. Eventually, InstX8632Movss should assert that |
| 858 // both its source and dest operands are registers, and the lowering | 858 // both its source and dest operands are registers, and the lowering |
| 859 // code should use _mov instead of _movss in cases where a copy | 859 // code should use _mov instead of _movss in cases where a copy |
| 860 // operation is intended. | 860 // operation is intended. |
| 861 typedef InstX8632Binop<InstX8632::Movss> InstX8632Movss; | 861 typedef InstX8632Binop<InstX8632::Movss> InstX8632Movss; |
| 862 typedef InstX8632Ternop<InstX8632::Idiv> InstX8632Idiv; | 862 typedef InstX8632Ternop<InstX8632::Idiv> InstX8632Idiv; |
| 863 typedef InstX8632Ternop<InstX8632::Div> InstX8632Div; | 863 typedef InstX8632Ternop<InstX8632::Div> InstX8632Div; |
| 864 typedef InstX8632Ternop<InstX8632::Insertps> InstX8632Insertps; | 864 typedef InstX8632Ternop<InstX8632::Insertps> InstX8632Insertps; |
| (...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1443 template <> void InstX8632Pmull::emit(const Cfg *Func) const; | 1443 template <> void InstX8632Pmull::emit(const Cfg *Func) const; |
| 1444 template <> void InstX8632Pmuludq::emit(const Cfg *Func) const; | 1444 template <> void InstX8632Pmuludq::emit(const Cfg *Func) const; |
| 1445 template <> void InstX8632Psll::emit(const Cfg *Func) const; | 1445 template <> void InstX8632Psll::emit(const Cfg *Func) const; |
| 1446 template <> void InstX8632Psra::emit(const Cfg *Func) const; | 1446 template <> void InstX8632Psra::emit(const Cfg *Func) const; |
| 1447 template <> void InstX8632Psub::emit(const Cfg *Func) const; | 1447 template <> void InstX8632Psub::emit(const Cfg *Func) const; |
| 1448 template <> void InstX8632Sqrtss::emit(const Cfg *Func) const; | 1448 template <> void InstX8632Sqrtss::emit(const Cfg *Func) const; |
| 1449 template <> void InstX8632Subss::emit(const Cfg *Func) const; | 1449 template <> void InstX8632Subss::emit(const Cfg *Func) const; |
| 1450 | 1450 |
| 1451 template <> void InstX8632Div::emitIAS(const Cfg *Func) const; | 1451 template <> void InstX8632Div::emitIAS(const Cfg *Func) const; |
| 1452 template <> void InstX8632Idiv::emitIAS(const Cfg *Func) const; | 1452 template <> void InstX8632Idiv::emitIAS(const Cfg *Func) const; |
| 1453 template <> void InstX8632Imul::emitIAS(const Cfg *Func) const; |
| 1453 template <> void InstX8632Cbwdq::emitIAS(const Cfg *Func) const; | 1454 template <> void InstX8632Cbwdq::emitIAS(const Cfg *Func) const; |
| 1454 template <> void InstX8632Movd::emitIAS(const Cfg *Func) const; | 1455 template <> void InstX8632Movd::emitIAS(const Cfg *Func) const; |
| 1455 | 1456 |
| 1456 } // end of namespace Ice | 1457 } // end of namespace Ice |
| 1457 | 1458 |
| 1458 #endif // SUBZERO_SRC_ICEINSTX8632_H | 1459 #endif // SUBZERO_SRC_ICEINSTX8632_H |
| OLD | NEW |