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 28 matching lines...) Expand all Loading... |
39 } | 39 } |
40 AtomicCmpxchgInit(IceType_i8, "i8"), | 40 AtomicCmpxchgInit(IceType_i8, "i8"), |
41 AtomicCmpxchgInit(IceType_i16, "i16"), | 41 AtomicCmpxchgInit(IceType_i16, "i16"), |
42 AtomicCmpxchgInit(IceType_i32, "i32"), | 42 AtomicCmpxchgInit(IceType_i32, "i32"), |
43 AtomicCmpxchgInit(IceType_i64, "i64"), | 43 AtomicCmpxchgInit(IceType_i64, "i64"), |
44 #undef AtomicCmpxchgInit | 44 #undef AtomicCmpxchgInit |
45 { { { Intrinsics::AtomicFence, true }, { IceType_void, IceType_i32 }, 2 }, | 45 { { { Intrinsics::AtomicFence, true }, { IceType_void, IceType_i32 }, 2 }, |
46 "nacl.atomic.fence" }, | 46 "nacl.atomic.fence" }, |
47 { { { Intrinsics::AtomicFenceAll, true }, { IceType_void }, 1 }, | 47 { { { Intrinsics::AtomicFenceAll, true }, { IceType_void }, 1 }, |
48 "nacl.atomic.fence.all" }, | 48 "nacl.atomic.fence.all" }, |
49 { { { Intrinsics::AtomicIsLockFree, true }, | 49 { { { Intrinsics::AtomicIsLockFree, false }, |
50 { IceType_i1, IceType_i32, IceType_i32 }, 3 }, | 50 { IceType_i1, IceType_i32, IceType_i32 }, 3 }, |
51 "nacl.atomic.is.lock.free" }, | 51 "nacl.atomic.is.lock.free" }, |
52 | 52 |
53 #define AtomicLoadInit(Overload, NameSuffix) \ | 53 #define AtomicLoadInit(Overload, NameSuffix) \ |
54 { \ | 54 { \ |
55 { \ | 55 { \ |
56 { Intrinsics::AtomicLoad, true } \ | 56 { Intrinsics::AtomicLoad, true } \ |
57 , { Overload, IceType_i32, IceType_i32 }, 3 \ | 57 , { Overload, IceType_i32, IceType_i32 }, 3 \ |
58 } \ | 58 } \ |
59 , "nacl.atomic.load." NameSuffix \ | 59 , "nacl.atomic.load." NameSuffix \ |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 |