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

Side by Side Diff: src/IceInstX8632.h

Issue 389653002: Lower vector floating point arithmetic operations. (Closed) Base URL: https://gerrit.chromium.org/gerrit/p/native_client/pnacl-subzero.git@master
Patch Set: Avoid _movp() trickery 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 | « 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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 Variable *Var; 129 Variable *Var;
130 Portion Part; 130 Portion Part;
131 }; 131 };
132 132
133 class InstX8632 : public InstTarget { 133 class InstX8632 : public InstTarget {
134 public: 134 public:
135 enum InstKindX8632 { 135 enum InstKindX8632 {
136 k__Start = Inst::Target, 136 k__Start = Inst::Target,
137 Adc, 137 Adc,
138 Add, 138 Add,
139 Addps,
139 Addss, 140 Addss,
140 And, 141 And,
141 Br, 142 Br,
142 Call, 143 Call,
143 Cdq, 144 Cdq,
144 Cvt, 145 Cvt,
145 Div, 146 Div,
147 Divps,
146 Divss, 148 Divss,
147 Fld, 149 Fld,
148 Fstp, 150 Fstp,
149 Icmp, 151 Icmp,
150 Idiv, 152 Idiv,
151 Imul, 153 Imul,
152 Label, 154 Label,
153 Load, 155 Load,
154 Mfence, 156 Mfence,
155 Mov, 157 Mov,
156 Movp, 158 Movp,
157 Movq, 159 Movq,
158 Movsx, 160 Movsx,
159 Movzx, 161 Movzx,
160 Mul, 162 Mul,
163 Mulps,
161 Mulss, 164 Mulss,
162 Or, 165 Or,
163 Pop, 166 Pop,
164 Push, 167 Push,
165 Pxor, 168 Pxor,
166 Ret, 169 Ret,
167 Sar, 170 Sar,
168 Sbb, 171 Sbb,
169 Shl, 172 Shl,
170 Shld, 173 Shld,
171 Shr, 174 Shr,
172 Shrd, 175 Shrd,
173 Sqrtss, 176 Sqrtss,
174 Store, 177 Store,
175 StoreQ, 178 StoreQ,
176 Sub, 179 Sub,
180 Subps,
177 Subss, 181 Subss,
178 Test, 182 Test,
179 Ucomiss, 183 Ucomiss,
180 UD2, 184 UD2,
181 Xadd, 185 Xadd,
182 Xor 186 Xor
183 }; 187 };
184 static const char *getWidthString(Type Ty); 188 static const char *getWidthString(Type Ty);
185 virtual void emit(const Cfg *Func) const = 0; 189 virtual void emit(const Cfg *Func) const = 0;
186 virtual void dump(const Cfg *Func) const; 190 virtual void dump(const Cfg *Func) const;
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 addSource(Source1); 394 addSource(Source1);
391 addSource(Source2); 395 addSource(Source2);
392 } 396 }
393 InstX8632Ternop(const InstX8632Ternop &) LLVM_DELETED_FUNCTION; 397 InstX8632Ternop(const InstX8632Ternop &) LLVM_DELETED_FUNCTION;
394 InstX8632Ternop &operator=(const InstX8632Ternop &) LLVM_DELETED_FUNCTION; 398 InstX8632Ternop &operator=(const InstX8632Ternop &) LLVM_DELETED_FUNCTION;
395 virtual ~InstX8632Ternop() {} 399 virtual ~InstX8632Ternop() {}
396 static const char *Opcode; 400 static const char *Opcode;
397 }; 401 };
398 402
399 typedef InstX8632Binop<InstX8632::Add> InstX8632Add; 403 typedef InstX8632Binop<InstX8632::Add> InstX8632Add;
404 typedef InstX8632Binop<InstX8632::Addps> InstX8632Addps;
400 typedef InstX8632Binop<InstX8632::Adc> InstX8632Adc; 405 typedef InstX8632Binop<InstX8632::Adc> InstX8632Adc;
401 typedef InstX8632Binop<InstX8632::Addss> InstX8632Addss; 406 typedef InstX8632Binop<InstX8632::Addss> InstX8632Addss;
402 typedef InstX8632Binop<InstX8632::Sub> InstX8632Sub; 407 typedef InstX8632Binop<InstX8632::Sub> InstX8632Sub;
408 typedef InstX8632Binop<InstX8632::Subps> InstX8632Subps;
403 typedef InstX8632Binop<InstX8632::Subss> InstX8632Subss; 409 typedef InstX8632Binop<InstX8632::Subss> InstX8632Subss;
404 typedef InstX8632Binop<InstX8632::Sbb> InstX8632Sbb; 410 typedef InstX8632Binop<InstX8632::Sbb> InstX8632Sbb;
405 typedef InstX8632Binop<InstX8632::And> InstX8632And; 411 typedef InstX8632Binop<InstX8632::And> InstX8632And;
406 typedef InstX8632Binop<InstX8632::Or> InstX8632Or; 412 typedef InstX8632Binop<InstX8632::Or> InstX8632Or;
407 typedef InstX8632Binop<InstX8632::Xor> InstX8632Xor; 413 typedef InstX8632Binop<InstX8632::Xor> InstX8632Xor;
408 typedef InstX8632Binop<InstX8632::Pxor> InstX8632Pxor; 414 typedef InstX8632Binop<InstX8632::Pxor> InstX8632Pxor;
409 typedef InstX8632Binop<InstX8632::Imul> InstX8632Imul; 415 typedef InstX8632Binop<InstX8632::Imul> InstX8632Imul;
416 typedef InstX8632Binop<InstX8632::Mulps> InstX8632Mulps;
410 typedef InstX8632Binop<InstX8632::Mulss> InstX8632Mulss; 417 typedef InstX8632Binop<InstX8632::Mulss> InstX8632Mulss;
418 typedef InstX8632Binop<InstX8632::Divps> InstX8632Divps;
411 typedef InstX8632Binop<InstX8632::Divss> InstX8632Divss; 419 typedef InstX8632Binop<InstX8632::Divss> InstX8632Divss;
412 typedef InstX8632Binop<InstX8632::Shl, true> InstX8632Shl; 420 typedef InstX8632Binop<InstX8632::Shl, true> InstX8632Shl;
413 typedef InstX8632Binop<InstX8632::Shr, true> InstX8632Shr; 421 typedef InstX8632Binop<InstX8632::Shr, true> InstX8632Shr;
414 typedef InstX8632Binop<InstX8632::Sar, true> InstX8632Sar; 422 typedef InstX8632Binop<InstX8632::Sar, true> InstX8632Sar;
415 typedef InstX8632Ternop<InstX8632::Idiv> InstX8632Idiv; 423 typedef InstX8632Ternop<InstX8632::Idiv> InstX8632Idiv;
416 typedef InstX8632Ternop<InstX8632::Div> InstX8632Div; 424 typedef InstX8632Ternop<InstX8632::Div> InstX8632Div;
417 425
418 // Mul instruction - unsigned multiply. 426 // Mul instruction - unsigned multiply.
419 class InstX8632Mul : public InstX8632 { 427 class InstX8632Mul : public InstX8632 {
420 public: 428 public:
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 877
870 InstX8632Xadd(Cfg *Func, Operand *Dest, Variable *Source, bool Locked); 878 InstX8632Xadd(Cfg *Func, Operand *Dest, Variable *Source, bool Locked);
871 InstX8632Xadd(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; 879 InstX8632Xadd(const InstX8632Xadd &) LLVM_DELETED_FUNCTION;
872 InstX8632Xadd &operator=(const InstX8632Xadd &) LLVM_DELETED_FUNCTION; 880 InstX8632Xadd &operator=(const InstX8632Xadd &) LLVM_DELETED_FUNCTION;
873 virtual ~InstX8632Xadd() {} 881 virtual ~InstX8632Xadd() {}
874 }; 882 };
875 883
876 } // end of namespace Ice 884 } // end of namespace Ice
877 885
878 #endif // SUBZERO_SRC_ICEINSTX8632_H 886 #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