OLD | NEW |
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 // This file declares the kinds of intrinsics supported by PNaCl. | 10 // This file declares the kinds of intrinsics supported by PNaCl. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 MemoryOrderConsume, | 86 MemoryOrderConsume, |
87 MemoryOrderAcquire, | 87 MemoryOrderAcquire, |
88 MemoryOrderRelease, | 88 MemoryOrderRelease, |
89 MemoryOrderAcquireRelease, | 89 MemoryOrderAcquireRelease, |
90 MemoryOrderSequentiallyConsistent, | 90 MemoryOrderSequentiallyConsistent, |
91 MemoryOrderNum // Invalid, keep last. | 91 MemoryOrderNum // Invalid, keep last. |
92 }; | 92 }; |
93 | 93 |
94 static bool VerifyMemoryOrder(uint64_t Order); | 94 static bool VerifyMemoryOrder(uint64_t Order); |
95 | 95 |
96 enum SideEffects { | 96 enum SideEffects { SideEffects_F = 0, SideEffects_T = 1 }; |
97 SideEffects_F=0, | |
98 SideEffects_T=1 | |
99 }; | |
100 | 97 |
101 enum ReturnsTwice { | 98 enum ReturnsTwice { ReturnsTwice_F = 0, ReturnsTwice_T = 1 }; |
102 ReturnsTwice_F=0, | |
103 ReturnsTwice_T=1 | |
104 }; | |
105 | 99 |
106 // Basic attributes related to each intrinsic, that are relevant to | 100 // Basic attributes related to each intrinsic, that are relevant to |
107 // code generation. Perhaps the attributes representation can be shared | 101 // code generation. Perhaps the attributes representation can be shared |
108 // with general function calls, but PNaCl currently strips all | 102 // with general function calls, but PNaCl currently strips all |
109 // attributes from functions. | 103 // attributes from functions. |
110 struct IntrinsicInfo { | 104 struct IntrinsicInfo { |
111 enum IntrinsicID ID : 30; | 105 enum IntrinsicID ID : 30; |
112 enum SideEffects HasSideEffects : 1; | 106 enum SideEffects HasSideEffects : 1; |
113 enum ReturnsTwice ReturnsTwice : 1; | 107 enum ReturnsTwice ReturnsTwice : 1; |
114 }; | 108 }; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 | 153 |
160 private: | 154 private: |
161 // TODO(jvoung): May want to switch to something like LLVM's StringMap. | 155 // TODO(jvoung): May want to switch to something like LLVM's StringMap. |
162 typedef std::map<IceString, FullIntrinsicInfo> IntrinsicMap; | 156 typedef std::map<IceString, FullIntrinsicInfo> IntrinsicMap; |
163 IntrinsicMap Map; | 157 IntrinsicMap Map; |
164 }; | 158 }; |
165 | 159 |
166 } // end of namespace Ice | 160 } // end of namespace Ice |
167 | 161 |
168 #endif // SUBZERO_SRC_ICEINTRINSICS_H | 162 #endif // SUBZERO_SRC_ICEINTRINSICS_H |
OLD | NEW |