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

Side by Side Diff: src/IceIntrinsics.h

Issue 1838753002: Subzero: Remove IceString. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review changes 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
« no previous file with comments | « src/IceInstX86BaseImpl.h ('k') | src/IceIntrinsics.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/IceIntrinsics.h - List of Ice Intrinsics -----*- C++ -*-===// 1 //===- subzero/src/IceIntrinsics.h - List of Ice Intrinsics -----*- 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
11 /// \brief Declares the kinds of intrinsics supported by PNaCl. 11 /// \brief Declares the kinds of intrinsics supported by PNaCl.
12 /// 12 ///
13 //===----------------------------------------------------------------------===// 13 //===----------------------------------------------------------------------===//
14 14
15 #ifndef SUBZERO_SRC_ICEINTRINSICS_H 15 #ifndef SUBZERO_SRC_ICEINTRINSICS_H
16 #define SUBZERO_SRC_ICEINTRINSICS_H 16 #define SUBZERO_SRC_ICEINTRINSICS_H
17 17
18 #include "IceDefs.h" 18 #include "IceDefs.h"
19 #include "IceStringPool.h"
19 #include "IceTypes.h" 20 #include "IceTypes.h"
20 21
21 namespace Ice { 22 namespace Ice {
22 23
23 class InstCall; 24 class InstCall;
24 25
25 static constexpr size_t kMaxIntrinsicParameters = 6; 26 static constexpr size_t kMaxIntrinsicParameters = 6;
26 27
27 class Intrinsics { 28 class Intrinsics {
28 Intrinsics(const Intrinsics &) = delete; 29 Intrinsics(const Intrinsics &) = delete;
29 Intrinsics &operator=(const Intrinsics &) = delete; 30 Intrinsics &operator=(const Intrinsics &) = delete;
30 31
31 public: 32 public:
32 Intrinsics(); 33 explicit Intrinsics(GlobalContext *Ctx);
33 ~Intrinsics(); 34 ~Intrinsics() = default;
34 35
35 /// Some intrinsics allow overloading by type. This enum collapses all 36 /// Some intrinsics allow overloading by type. This enum collapses all
36 /// overloads into a single ID, but the type can still be recovered by the 37 /// overloads into a single ID, but the type can still be recovered by the
37 /// type of the intrinsic function call's return value and parameters. 38 /// type of the intrinsic function call's return value and parameters.
38 enum IntrinsicID { 39 enum IntrinsicID {
39 UnknownIntrinsic = 0, 40 UnknownIntrinsic = 0,
40 // Arbitrary (alphabetical) order. 41 // Arbitrary (alphabetical) order.
41 AtomicCmpxchg, 42 AtomicCmpxchg,
42 AtomicFence, 43 AtomicFence,
43 AtomicFenceAll, 44 AtomicFenceAll,
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 Type getArgType(SizeT Index) const; 154 Type getArgType(SizeT Index) const;
154 }; 155 };
155 156
156 /// Find the information about a given intrinsic, based on function name. If 157 /// Find the information about a given intrinsic, based on function name. If
157 /// the function name does not have the common "llvm." prefix, nullptr is 158 /// the function name does not have the common "llvm." prefix, nullptr is
158 /// returned and Error is set to false. Otherwise, tries to find a reference 159 /// returned and Error is set to false. Otherwise, tries to find a reference
159 /// to a FullIntrinsicInfo entry (valid for the lifetime of the map). If 160 /// to a FullIntrinsicInfo entry (valid for the lifetime of the map). If
160 /// found, sets Error to false and returns the reference. If not found, sets 161 /// found, sets Error to false and returns the reference. If not found, sets
161 /// Error to true and returns nullptr (indicating an unknown "llvm.foo" 162 /// Error to true and returns nullptr (indicating an unknown "llvm.foo"
162 /// intrinsic). 163 /// intrinsic).
163 const FullIntrinsicInfo *find(const IceString &Name, bool &Error) const; 164 const FullIntrinsicInfo *find(GlobalString Name, bool &Error) const;
164 165
165 private: 166 private:
166 // TODO(jvoung): May want to switch to something like LLVM's StringMap. 167 // TODO(jvoung): May want to switch to something like LLVM's StringMap.
167 using IntrinsicMap = std::map<IceString, FullIntrinsicInfo>; 168 using IntrinsicMap = std::unordered_map<GlobalString, FullIntrinsicInfo>;
168 IntrinsicMap Map; 169 IntrinsicMap Map;
169 }; 170 };
170 171
171 } // end of namespace Ice 172 } // end of namespace Ice
172 173
173 #endif // SUBZERO_SRC_ICEINTRINSICS_H 174 #endif // SUBZERO_SRC_ICEINTRINSICS_H
OLDNEW
« no previous file with comments | « src/IceInstX86BaseImpl.h ('k') | src/IceIntrinsics.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698