Loading...
Searching...
No Matches
Go to the documentation of this file.
201#if defined(__METAL_MACOS__)
203#elif defined(__OPENCL_VERSION__) && __OPENCL_VERSION__ > 0
205#elif defined(__CUDACC__)
209#elif defined(__xlC__) || defined(__ibmxl__)
213#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
215#elif defined(__OPEN64__)
217#elif defined(__clang__) || defined(__bgclang__)
219#elif defined(__FCC_VERSION) || defined(__FUJITSU)
221#elif defined(__GNUC__)
223#elif defined(_MSC_FULL_VER)
226#error "Can't identify compiler. You'll need to add a new xxfeatures.hpp"
230#ifndef R123_USE_CXX11
231#define R123_USE_CXX11 (__cplusplus >= 201103L)
234#ifndef R123_USE_CXX11_UNRESTRICTED_UNIONS
235#define R123_USE_CXX11_UNRESTRICTED_UNIONS R123_USE_CXX11
238#ifndef R123_USE_CXX11_STATIC_ASSERT
239#define R123_USE_CXX11_STATIC_ASSERT R123_USE_CXX11
242#ifndef R123_USE_CXX11_CONSTEXPR
243#define R123_USE_CXX11_CONSTEXPR R123_USE_CXX11
246#ifndef R123_USE_CXX11_EXPLICIT_CONVERSIONS
247#define R123_USE_CXX11_EXPLICIT_CONVERSIONS R123_USE_CXX11
250#ifndef R123_USE_CXX11_RANDOM
251#define R123_USE_CXX11_RANDOM R123_USE_CXX11
254#ifndef R123_USE_CXX11_TYPE_TRAITS
255#define R123_USE_CXX11_TYPE_TRAITS R123_USE_CXX11
258#ifndef R123_USE_CXX11_LONG_LONG
259#define R123_USE_CXX11_LONG_LONG R123_USE_CXX11
262#ifndef R123_USE_CXX11_STD_ARRAY
263#define R123_USE_CXX11_STD_ARRAY R123_USE_CXX11
266#ifndef R123_USE_MULHILO64_C99
267#define R123_USE_MULHILO64_C99 0
270#ifndef R123_USE_MULHILO64_MULHI_INTRIN
271#define R123_USE_MULHILO64_MULHI_INTRIN 0
274#ifndef R123_USE_MULHILO32_MULHI_INTRIN
275#define R123_USE_MULHILO32_MULHI_INTRIN 0
278#ifndef R123_STATIC_ASSERT
279#if R123_USE_CXX11_STATIC_ASSERT
280#define R123_STATIC_ASSERT(expr, msg) static_assert(expr, msg)
283#define R123_STATIC_ASSERT(expr, msg) typedef char static_assertion[(!!(expr)) * 2 - 1]
287#ifndef R123_CONSTEXPR
288#if R123_USE_CXX11_CONSTEXPR
289#define R123_CONSTEXPR constexpr
291#define R123_CONSTEXPR
295#ifndef R123_USE_64BIT
296#define R123_USE_64BIT 1
299#ifndef R123_USE_PHILOX_64BIT
300#define R123_USE_PHILOX_64BIT (R123_USE_64BIT && (R123_USE_MULHILO64_ASM || R123_USE_MULHILO64_MSVC_INTRIN || R123_USE_MULHILO64_CUDA_INTRIN || R123_USE_GNU_UINT128 || R123_USE_MULHILO64_C99 || R123_USE_MULHILO64_OPENCL_INTRIN || R123_USE_MULHILO64_MULHI_INTRIN))
303#ifndef R123_ULONG_LONG
304#if defined(__cplusplus) && !R123_USE_CXX11_LONG_LONG
309#define R123_ULONG_LONG uint64_t
311#define R123_ULONG_LONG unsigned long long
318#define R123_64BIT(x) UINT64_C(x)
322#define R123_THROW(x) std::abort()
325#ifndef R123_METAL_THREAD_ADDRESS_SPACE
326#define R123_METAL_THREAD_ADDRESS_SPACE
329#ifndef R123_METAL_CONSTANT_ADDRESS_SPACE
330#define R123_METAL_CONSTANT_ADDRESS_SPACE
343#define R123_NO_MACRO_SUBST