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

Side by Side Diff: src/IceInstX8632.h

Issue 443203003: Subzero: Use scalar arithmetic when no vector instruction exists. (Closed) Base URL: https://gerrit.chromium.org/gerrit/p/native_client/pnacl-subzero.git@master
Patch Set: TODO(stichnot) Created 6 years, 4 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 | « crosstest/test_arith_main.cpp ('k') | src/IceInstX8632.cpp » ('j') | no next file with comments »
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 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 Add, 137 Add,
138 Addps, 138 Addps,
139 Addss, 139 Addss,
140 And, 140 And,
141 Blendvps, 141 Blendvps,
142 Br, 142 Br,
143 Bsf, 143 Bsf,
144 Bsr, 144 Bsr,
145 Bswap, 145 Bswap,
146 Call, 146 Call,
147 Cdq, 147 Cbwdq,
148 Cmov, 148 Cmov,
149 Cmpps, 149 Cmpps,
150 Cmpxchg, 150 Cmpxchg,
151 Cmpxchg8b, 151 Cmpxchg8b,
152 Cvt, 152 Cvt,
153 Div, 153 Div,
154 Divps, 154 Divps,
155 Divss, 155 Divss,
156 Fld, 156 Fld,
157 Fstp, 157 Fstp,
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 static bool classof(const Inst *Inst) { return isClassof(Inst, Shrd); } 682 static bool classof(const Inst *Inst) { return isClassof(Inst, Shrd); }
683 683
684 private: 684 private:
685 InstX8632Shrd(Cfg *Func, Variable *Dest, Variable *Source1, 685 InstX8632Shrd(Cfg *Func, Variable *Dest, Variable *Source1,
686 Variable *Source2); 686 Variable *Source2);
687 InstX8632Shrd(const InstX8632Shrd &) LLVM_DELETED_FUNCTION; 687 InstX8632Shrd(const InstX8632Shrd &) LLVM_DELETED_FUNCTION;
688 InstX8632Shrd &operator=(const InstX8632Shrd &) LLVM_DELETED_FUNCTION; 688 InstX8632Shrd &operator=(const InstX8632Shrd &) LLVM_DELETED_FUNCTION;
689 virtual ~InstX8632Shrd() {} 689 virtual ~InstX8632Shrd() {}
690 }; 690 };
691 691
692 // Cdq instruction - sign-extend eax into edx 692 // Cbdwq instruction - wrapper for cbw, cwd, or cdq
693 class InstX8632Cdq : public InstX8632 { 693 class InstX8632Cbwdq : public InstX8632 {
694 public: 694 public:
695 static InstX8632Cdq *create(Cfg *Func, Variable *Dest, Operand *Source) { 695 static InstX8632Cbwdq *create(Cfg *Func, Variable *Dest, Operand *Source) {
696 return new (Func->allocate<InstX8632Cdq>()) 696 return new (Func->allocate<InstX8632Cbwdq>())
697 InstX8632Cdq(Func, Dest, Source); 697 InstX8632Cbwdq(Func, Dest, Source);
698 } 698 }
699 virtual void emit(const Cfg *Func) const; 699 virtual void emit(const Cfg *Func) const;
700 virtual void dump(const Cfg *Func) const; 700 virtual void dump(const Cfg *Func) const;
701 static bool classof(const Inst *Inst) { return isClassof(Inst, Cdq); } 701 static bool classof(const Inst *Inst) { return isClassof(Inst, Cbwdq); }
702 702
703 private: 703 private:
704 InstX8632Cdq(Cfg *Func, Variable *Dest, Operand *Source); 704 InstX8632Cbwdq(Cfg *Func, Variable *Dest, Operand *Source);
705 InstX8632Cdq(const InstX8632Cdq &) LLVM_DELETED_FUNCTION; 705 InstX8632Cbwdq(const InstX8632Cbwdq &) LLVM_DELETED_FUNCTION;
706 InstX8632Cdq &operator=(const InstX8632Cdq &) LLVM_DELETED_FUNCTION; 706 InstX8632Cbwdq &operator=(const InstX8632Cbwdq &) LLVM_DELETED_FUNCTION;
707 virtual ~InstX8632Cdq() {} 707 virtual ~InstX8632Cbwdq() {}
708 }; 708 };
709 709
710 // Conditional move instruction. 710 // Conditional move instruction.
711 class InstX8632Cmov : public InstX8632 { 711 class InstX8632Cmov : public InstX8632 {
712 public: 712 public:
713 static InstX8632Cmov *create(Cfg *Func, Variable *Dest, Operand *Source, 713 static InstX8632Cmov *create(Cfg *Func, Variable *Dest, Operand *Source,
714 BrCond Cond) { 714 BrCond Cond) {
715 return new (Func->allocate<InstX8632Cmov>()) 715 return new (Func->allocate<InstX8632Cmov>())
716 InstX8632Cmov(Func, Dest, Source, Cond); 716 InstX8632Cmov(Func, Dest, Source, Cond);
717 } 717 }
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
1211 template <> void InstX8632Pmuludq::emit(const Cfg *Func) const; 1211 template <> void InstX8632Pmuludq::emit(const Cfg *Func) const;
1212 template <> void InstX8632Psll::emit(const Cfg *Func) const; 1212 template <> void InstX8632Psll::emit(const Cfg *Func) const;
1213 template <> void InstX8632Psra::emit(const Cfg *Func) const; 1213 template <> void InstX8632Psra::emit(const Cfg *Func) const;
1214 template <> void InstX8632Psub::emit(const Cfg *Func) const; 1214 template <> void InstX8632Psub::emit(const Cfg *Func) const;
1215 template <> void InstX8632Sqrtss::emit(const Cfg *Func) const; 1215 template <> void InstX8632Sqrtss::emit(const Cfg *Func) const;
1216 template <> void InstX8632Subss::emit(const Cfg *Func) const; 1216 template <> void InstX8632Subss::emit(const Cfg *Func) const;
1217 1217
1218 } // end of namespace Ice 1218 } // end of namespace Ice
1219 1219
1220 #endif // SUBZERO_SRC_ICEINSTX8632_H 1220 #endif // SUBZERO_SRC_ICEINSTX8632_H
OLDNEW
« no previous file with comments | « crosstest/test_arith_main.cpp ('k') | src/IceInstX8632.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698