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

Side by Side Diff: src/IceIntrinsics.h

Issue 321993002: Add a few Subzero intrinsics (not the atomic ones yet). (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: doesn't matter if eax or not Created 6 years, 6 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
(Empty)
1 //===- subzero/src/IceIntrinsics.h - List of Ice Intrinsics -----*- C++ -*-===//
2 //
3 // The Subzero Code Generator
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file declares the kinds of intrinsics supported by PNaCl.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef SUBZERO_SRC_ICEINTRINSICS_H
15 #define SUBZERO_SRC_ICEINTRINSICS_H
16
17 #include "IceDefs.h"
18
19 namespace Ice {
20
21 // Some intrinsics allow overloading by type. This enum collapses all
22 // overloads into a single ID, but the type can still be recovered by the
23 // type of the intrinsic function call's return value and parameters.
24 enum IntrinsicID {
25 UnknownIntrinsic = 0,
26 // Arbitrary (alphabetical) order.
27 AtomicCmpxchg,
28 AtomicFence,
29 AtomicFenceAll,
30 AtomicIsLockFree,
31 AtomicLoad,
32 AtomicRMW,
33 AtomicStore,
34 Bswap,
35 Ctlz,
36 Ctpop,
37 Cttz,
38 Longjmp,
39 Memcpy,
40 Memmove,
41 Memset,
42 NaClReadTP,
43 Setjmp,
44 Sqrt,
45 Stacksave,
46 Stackrestore,
47 Trap
48 };
49
50 // Basic attributes related to each intrinsic. We may want to have more
51 // attributes (e.g., Setjmp returns twice) once the lowering cares
52 // about such attributes, and the attributes representation that can be
53 // shared with general function calls.
54 struct IntrinsicInfo {
55 IntrinsicID ID : 16;
56 bool HasSideEffects : 1;
57 };
JF 2014/06/10 03:50:41 I'd make this a 31-bit field followed by a 1-bit f
jvoung (off chromium) 2014/06/16 20:51:58 Done. Though I would like to enforce that Intrins
58 bool operator==(const IntrinsicInfo &A, const IntrinsicInfo &B);
59
60 extern const IntrinsicInfo UnknownIntrinsicInfo;
61
62 // TODO(jvoung): May want to switch to something like LLVM's StringMap.
63 typedef std::map<IceString, IntrinsicInfo> IntrinsicMap;
JF 2014/06/10 03:50:41 It would be better to turn all of this into a clas
jvoung (off chromium) 2014/06/16 20:51:58 Done.
64
65 // Fills/Turns OutMap into a map from intrinsic name (e.g.,
66 // "nacl.atomic.load.i8") into the intrinsic's information. The map assumes
67 // that the "llvm." prefix has been stripped from the function name already.
68 void BuildIntrinsicMap(IntrinsicMap *OutMap);
69
70 } // end of namespace Ice
71
72 #endif // SUBZERO_SRC_ICEINTRINSICS_H
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698