Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(856)

Side by Side Diff: src/IceInstX8632.h

Issue 617593002: Handle imul, pcmpeq, pcmpgt. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: go ahead and optimize i8 Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/IceInstX8632.cpp » ('j') | src/IceTargetLoweringX8632.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « no previous file | src/IceInstX8632.cpp » ('j') | src/IceTargetLoweringX8632.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698