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

Side by Side Diff: src/IceInstX8632.h

Issue 372113005: Add support for passing and returning vectors in accordance with the x86 calling convention. (Closed) Base URL: https://gerrit.chromium.org/gerrit/p/native_client/pnacl-subzero.git@master
Patch Set: 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
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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 Store, 173 Store,
174 Storep,
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 };
183 static const char *getWidthString(Type Ty); 184 static const char *getWidthString(Type Ty);
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 virtual void dump(const Cfg *Func) const; 616 virtual void dump(const Cfg *Func) const;
616 static bool classof(const Inst *Inst) { return isClassof(Inst, Store); } 617 static bool classof(const Inst *Inst) { return isClassof(Inst, Store); }
617 618
618 private: 619 private:
619 InstX8632Store(Cfg *Func, Operand *Value, OperandX8632 *Mem); 620 InstX8632Store(Cfg *Func, Operand *Value, OperandX8632 *Mem);
620 InstX8632Store(const InstX8632Store &) LLVM_DELETED_FUNCTION; 621 InstX8632Store(const InstX8632Store &) LLVM_DELETED_FUNCTION;
621 InstX8632Store &operator=(const InstX8632Store &) LLVM_DELETED_FUNCTION; 622 InstX8632Store &operator=(const InstX8632Store &) LLVM_DELETED_FUNCTION;
622 virtual ~InstX8632Store() {} 623 virtual ~InstX8632Store() {}
623 }; 624 };
624 625
626 // Store packed - wrapper for storing vectors
627 class InstX8632Storep : public InstX8632 {
628 public:
629 static InstX8632Storep *create(Cfg *Func, Operand *Value, OperandX8632 *Mem) {
630 return new (Func->allocate<InstX8632Storep>())
631 InstX8632Storep(Func, Value, Mem);
632 }
633 virtual void emit(const Cfg *Func) const;
634 virtual void dump(const Cfg *Func) const;
635 static bool classof(const Inst *Inst) { return isClassof(Inst, Storep); }
636
637 private:
638 InstX8632Storep(Cfg *Func, Operand *Value, OperandX8632 *Mem);
639 InstX8632Storep(const InstX8632Storep &) LLVM_DELETED_FUNCTION;
640 InstX8632Storep &operator=(const InstX8632Storep &) LLVM_DELETED_FUNCTION;
641 virtual ~InstX8632Storep() {}
642 };
643
625 // Move/assignment instruction - wrapper for mov/movss/movsd. 644 // Move/assignment instruction - wrapper for mov/movss/movsd.
626 class InstX8632Mov : public InstX8632 { 645 class InstX8632Mov : public InstX8632 {
627 public: 646 public:
628 static InstX8632Mov *create(Cfg *Func, Variable *Dest, Operand *Source) { 647 static InstX8632Mov *create(Cfg *Func, Variable *Dest, Operand *Source) {
629 return new (Func->allocate<InstX8632Mov>()) 648 return new (Func->allocate<InstX8632Mov>())
630 InstX8632Mov(Func, Dest, Source); 649 InstX8632Mov(Func, Dest, Source);
631 } 650 }
632 virtual bool isRedundantAssign() const; 651 virtual bool isRedundantAssign() const;
633 virtual void emit(const Cfg *Func) const; 652 virtual void emit(const Cfg *Func) const;
634 virtual void dump(const Cfg *Func) const; 653 virtual void dump(const Cfg *Func) const;
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 | « src/IceCfg.cpp ('k') | src/IceInstX8632.cpp » ('j') | src/IceInstX8632.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698