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

Side by Side Diff: src/IceInstX8632.h

Issue 384443003: Add scalar lowering for sqrt intrinsic. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: whitespace Created 6 years, 5 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_fcmp_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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 Pop, 163 Pop,
164 Push, 164 Push,
165 Pxor, 165 Pxor,
166 Ret, 166 Ret,
167 Sar, 167 Sar,
168 Sbb, 168 Sbb,
169 Shl, 169 Shl,
170 Shld, 170 Shld,
171 Shr, 171 Shr,
172 Shrd, 172 Shrd,
173 Sqrtss,
173 Store, 174 Store,
174 StoreQ, 175 StoreQ,
175 Sub, 176 Sub,
176 Subss, 177 Subss,
177 Test, 178 Test,
178 Ucomiss, 179 Ucomiss,
179 UD2, 180 UD2,
180 Xadd, 181 Xadd,
181 Xor 182 Xor
182 }; 183 };
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 virtual void dump(const Cfg *Func) const; 821 virtual void dump(const Cfg *Func) const;
821 static bool classof(const Inst *Inst) { return isClassof(Inst, Ret); } 822 static bool classof(const Inst *Inst) { return isClassof(Inst, Ret); }
822 823
823 private: 824 private:
824 InstX8632Ret(Cfg *Func, Variable *Source); 825 InstX8632Ret(Cfg *Func, Variable *Source);
825 InstX8632Ret(const InstX8632Ret &) LLVM_DELETED_FUNCTION; 826 InstX8632Ret(const InstX8632Ret &) LLVM_DELETED_FUNCTION;
826 InstX8632Ret &operator=(const InstX8632Ret &) LLVM_DELETED_FUNCTION; 827 InstX8632Ret &operator=(const InstX8632Ret &) LLVM_DELETED_FUNCTION;
827 virtual ~InstX8632Ret() {} 828 virtual ~InstX8632Ret() {}
828 }; 829 };
829 830
831 // Sqrtss - Scalar sqrt of a float or double.
832 class InstX8632Sqrtss : public InstX8632 {
833 public:
834 static InstX8632Sqrtss *create(Cfg *Func, Variable *Dest, Operand *Source) {
835 return new (Func->allocate<InstX8632Sqrtss>())
836 InstX8632Sqrtss(Func, Dest, Source);
837 }
838 virtual void emit(const Cfg *Func) const;
839 virtual void dump(const Cfg *Func) const;
840 static bool classof(const Inst *Inst) { return isClassof(Inst, Sqrtss); }
841
842 private:
843 InstX8632Sqrtss(Cfg *Func, Variable *Dest, Operand *Source);
844 InstX8632Sqrtss(const InstX8632Sqrtss &) LLVM_DELETED_FUNCTION;
845 InstX8632Sqrtss &operator=(const InstX8632Sqrtss &) LLVM_DELETED_FUNCTION;
846 virtual ~InstX8632Sqrtss() {}
847 };
848
830 // Exchanging Add instruction. Exchanges the first operand (destination 849 // Exchanging Add instruction. Exchanges the first operand (destination
831 // operand) with the second operand (source operand), then loads the sum 850 // operand) with the second operand (source operand), then loads the sum
832 // of the two values into the destination operand. The destination may be 851 // of the two values into the destination operand. The destination may be
833 // a register or memory, while the source must be a register. 852 // a register or memory, while the source must be a register.
834 // 853 //
835 // Both the dest and source are updated. The caller should then insert a 854 // Both the dest and source are updated. The caller should then insert a
836 // FakeDef to reflect the second udpate. 855 // FakeDef to reflect the second udpate.
837 class InstX8632Xadd : public InstX8632 { 856 class InstX8632Xadd : public InstX8632 {
838 public: 857 public:
839 static InstX8632Xadd *create(Cfg *Func, Operand *Dest, Variable *Source, 858 static InstX8632Xadd *create(Cfg *Func, Operand *Dest, Variable *Source,
(...skipping 10 matching lines...) Expand all
850 869
851 InstX8632Xadd(Cfg *Func, Operand *Dest, Variable *Source, bool Locked); 870 InstX8632Xadd(Cfg *Func, Operand *Dest, Variable *Source, bool Locked);
852 InstX8632Xadd(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; 871 InstX8632Xadd(const InstX8632Xadd &) LLVM_DELETED_FUNCTION;
853 InstX8632Xadd &operator=(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; 872 InstX8632Xadd &operator=(const InstX8632Xadd &) LLVM_DELETED_FUNCTION;
854 virtual ~InstX8632Xadd() {} 873 virtual ~InstX8632Xadd() {}
855 }; 874 };
856 875
857 } // end of namespace Ice 876 } // end of namespace Ice
858 877
859 #endif // SUBZERO_SRC_ICEINSTX8632_H 878 #endif // SUBZERO_SRC_ICEINSTX8632_H
OLDNEW
« no previous file with comments | « crosstest/test_fcmp_main.cpp ('k') | src/IceInstX8632.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698