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

Side by Side Diff: src/IceInst.h

Issue 1876413002: Subzero. WASM. Additional progress. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Merging with master Created 4 years, 8 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/IceInst.h - High-level instructions ----------*- C++ -*-===// 1 //===- subzero/src/IceInst.h - High-level 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 /// \file 10 /// \file
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 Select, 61 Select,
62 Store, 62 Store,
63 Switch, 63 Switch,
64 Assign, // not part of LLVM/PNaCl bitcode 64 Assign, // not part of LLVM/PNaCl bitcode
65 BundleLock, // not part of LLVM/PNaCl bitcode 65 BundleLock, // not part of LLVM/PNaCl bitcode
66 BundleUnlock, // not part of LLVM/PNaCl bitcode 66 BundleUnlock, // not part of LLVM/PNaCl bitcode
67 FakeDef, // not part of LLVM/PNaCl bitcode 67 FakeDef, // not part of LLVM/PNaCl bitcode
68 FakeUse, // not part of LLVM/PNaCl bitcode 68 FakeUse, // not part of LLVM/PNaCl bitcode
69 FakeKill, // not part of LLVM/PNaCl bitcode 69 FakeKill, // not part of LLVM/PNaCl bitcode
70 JumpTable, // not part of LLVM/PNaCl bitcode 70 JumpTable, // not part of LLVM/PNaCl bitcode
71 Breakpoint, // not part of LLVM/PNaCl bitcode
Jim Stichnoth 2016/04/14 20:03:44 Sort this - between Assign and BundleLock
Eric Holk 2016/04/15 15:24:26 Done.
71 // Anything >= Target is an InstTarget subclass. Note that the value-spaces 72 // Anything >= Target is an InstTarget subclass. Note that the value-spaces
72 // are shared across targets. To avoid confusion over the definition of 73 // are shared across targets. To avoid confusion over the definition of
73 // shared values, an object specific to one target should never be passed 74 // shared values, an object specific to one target should never be passed
74 // to a different target. 75 // to a different target.
75 Target, 76 Target,
76 Target_Max = std::numeric_limits<uint8_t>::max(), 77 Target_Max = std::numeric_limits<uint8_t>::max(),
77 }; 78 };
78 static_assert(Target <= Target_Max, "Must not be above max."); 79 static_assert(Target <= Target_Max, "Must not be above max.");
79 InstKind getKind() const { return Kind; } 80 InstKind getKind() const { return Kind; }
80 virtual const char *getInstName() const; 81 virtual const char *getInstName() const;
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 Inst::destroy(Func); 970 Inst::destroy(Func);
970 } 971 }
971 972
972 const SizeT Id; 973 const SizeT Id;
973 const SizeT NumTargets; 974 const SizeT NumTargets;
974 CfgNode **Targets; 975 CfgNode **Targets;
975 GlobalString Name; // This JumpTable's name in the output. 976 GlobalString Name; // This JumpTable's name in the output.
976 GlobalString FuncName; 977 GlobalString FuncName;
977 }; 978 };
978 979
980 /// This instruction inserts an unconditional breakpoint.
981 ///
John 2016/04/12 20:34:27 What's the use case for this? I would think that s
Eric Holk 2016/04/12 21:30:10 I used it when I was debugging indirect calls. I h
982 /// On x86, this assembles into an INT 3 instruction.
983 ///
984 /// This instruction is primarily meant for debugging the code generator.
985 class InstBreakpoint : public InstHighLevel {
986 public:
987 InstBreakpoint() = delete;
988 InstBreakpoint(const InstBreakpoint &) = delete;
989 InstBreakpoint &operator=(const InstBreakpoint &) = delete;
990
991 InstBreakpoint(Cfg *Func);
992
993 public:
994 static InstBreakpoint *create(Cfg *Func) {
995 return new (Func->allocate<InstBreakpoint>()) InstBreakpoint(Func);
996 }
997
998 static bool classof(const Inst *Instr) {
999 return Instr->getKind() == Breakpoint;
1000 }
1001 };
1002
979 /// The Target instruction is the base class for all target-specific 1003 /// The Target instruction is the base class for all target-specific
980 /// instructions. 1004 /// instructions.
981 class InstTarget : public Inst { 1005 class InstTarget : public Inst {
982 InstTarget() = delete; 1006 InstTarget() = delete;
983 InstTarget(const InstTarget &) = delete; 1007 InstTarget(const InstTarget &) = delete;
984 InstTarget &operator=(const InstTarget &) = delete; 1008 InstTarget &operator=(const InstTarget &) = delete;
985 1009
986 public: 1010 public:
987 uint32_t getEmitInstCount() const override { return 1; } 1011 uint32_t getEmitInstCount() const override { return 1; }
988 void dump(const Cfg *Func) const override; 1012 void dump(const Cfg *Func) const override;
(...skipping 26 matching lines...) Expand all
1015 static void noteHead(Ice::Inst *, Ice::Inst *) {} 1039 static void noteHead(Ice::Inst *, Ice::Inst *) {}
1016 void deleteNode(Ice::Inst *) {} 1040 void deleteNode(Ice::Inst *) {}
1017 1041
1018 private: 1042 private:
1019 mutable ilist_half_node<Ice::Inst> Sentinel; 1043 mutable ilist_half_node<Ice::Inst> Sentinel;
1020 }; 1044 };
1021 1045
1022 } // end of namespace llvm 1046 } // end of namespace llvm
1023 1047
1024 #endif // SUBZERO_SRC_ICEINST_H 1048 #endif // SUBZERO_SRC_ICEINST_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698