OLD | NEW |
1 //===- subzero/src/IceIntrinsics.cpp - Functions related to intrinsics ----===// | 1 //===- subzero/src/IceIntrinsics.cpp - Functions related to intrinsics ----===// |
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 implements the Intrinsics utilities for matching and | 10 // This file implements the Intrinsics utilities for matching and |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 SqrtInit(IceType_f32, "f32"), | 172 SqrtInit(IceType_f32, "f32"), |
173 SqrtInit(IceType_f64, "f64"), | 173 SqrtInit(IceType_f64, "f64"), |
174 #undef SqrtInit | 174 #undef SqrtInit |
175 { { { Intrinsics::Stacksave, true }, { IceType_i32 }, 1 }, "stacksave" }, | 175 { { { Intrinsics::Stacksave, true }, { IceType_i32 }, 1 }, "stacksave" }, |
176 { { { Intrinsics::Stackrestore, true }, { IceType_void, IceType_i32 }, 2 }, | 176 { { { Intrinsics::Stackrestore, true }, { IceType_void, IceType_i32 }, 2 }, |
177 "stackrestore" }, | 177 "stackrestore" }, |
178 { { { Intrinsics::Trap, true }, { IceType_void }, 1 }, "trap" } | 178 { { { Intrinsics::Trap, true }, { IceType_void }, 1 }, "trap" } |
179 }; | 179 }; |
180 const size_t IceIntrinsicsTableSize = llvm::array_lengthof(IceIntrinsicsTable); | 180 const size_t IceIntrinsicsTableSize = llvm::array_lengthof(IceIntrinsicsTable); |
181 | 181 |
182 } // end of namespace | 182 } // end of anonymous namespace |
183 | 183 |
184 Intrinsics::Intrinsics() { | 184 Intrinsics::Intrinsics() { |
185 for (size_t I = 0; I < IceIntrinsicsTableSize; ++I) { | 185 for (size_t I = 0; I < IceIntrinsicsTableSize; ++I) { |
186 const struct IceIntrinsicsEntry_ &Entry = IceIntrinsicsTable[I]; | 186 const struct IceIntrinsicsEntry_ &Entry = IceIntrinsicsTable[I]; |
187 assert(Entry.Info.NumTypes <= kMaxIntrinsicParameters); | 187 assert(Entry.Info.NumTypes <= kMaxIntrinsicParameters); |
188 map.insert(std::make_pair(IceString(Entry.IntrinsicName), Entry.Info)); | 188 map.insert(std::make_pair(IceString(Entry.IntrinsicName), Entry.Info)); |
189 } | 189 } |
190 } | 190 } |
191 | 191 |
192 Intrinsics::~Intrinsics() {} | 192 Intrinsics::~Intrinsics() {} |
193 | 193 |
194 const Intrinsics::FullIntrinsicInfo * | 194 const Intrinsics::FullIntrinsicInfo * |
195 Intrinsics::find(const IceString &Name) const { | 195 Intrinsics::find(const IceString &Name) const { |
196 IntrinsicMap::const_iterator it = map.find(Name); | 196 IntrinsicMap::const_iterator it = map.find(Name); |
197 if (it == map.end()) | 197 if (it == map.end()) |
198 return NULL; | 198 return NULL; |
199 return &it->second; | 199 return &it->second; |
200 } | 200 } |
201 | 201 |
202 bool Intrinsics::VerifyMemoryOrder(uint64_t Order) { | 202 bool Intrinsics::VerifyMemoryOrder(uint64_t Order) { |
203 // There is only one memory ordering for atomics allowed right now. | 203 // There is only one memory ordering for atomics allowed right now. |
204 return Order == Intrinsics::MemoryOrderSequentiallyConsistent; | 204 return Order == Intrinsics::MemoryOrderSequentiallyConsistent; |
205 } | 205 } |
206 | 206 |
207 } // end of namespace Ice | 207 } // end of namespace Ice |
OLD | NEW |