- random123-1.13.2c7 Documentation
Go to the documentation of this file.
201 #if defined(__METAL_MACOS__)
202 #include "metalfeatures.h"
203 #elif defined(__OPENCL_VERSION__) && __OPENCL_VERSION__ > 0
204 #include "openclfeatures.h"
205 #elif defined(__CUDACC__)
206 #include "nvccfeatures.h"
208 #include "iccfeatures.h"
209 #elif defined(__xlC__)
210 #include "xlcfeatures.h"
211 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
212 #include "sunprofeatures.h"
213 #elif defined(__OPEN64__)
214 #include "open64features.h"
215 #elif defined(__clang__)
216 #include "clangfeatures.h"
217 #elif defined(__GNUC__)
218 #include "gccfeatures.h"
220 #include "pgccfeatures.h"
221 #elif defined(_MSC_FULL_VER)
222 #include "msvcfeatures.h"
224 #error "Can't identify compiler. You'll need to add a new xxfeatures.hpp"
228 #ifndef R123_USE_CXX11
229 #define R123_USE_CXX11 (__cplusplus >= 201103L)
232 #ifndef R123_USE_CXX11_UNRESTRICTED_UNIONS
233 #define R123_USE_CXX11_UNRESTRICTED_UNIONS R123_USE_CXX11
236 #ifndef R123_USE_CXX11_STATIC_ASSERT
237 #define R123_USE_CXX11_STATIC_ASSERT R123_USE_CXX11
240 #ifndef R123_USE_CXX11_CONSTEXPR
241 #define R123_USE_CXX11_CONSTEXPR R123_USE_CXX11
244 #ifndef R123_USE_CXX11_EXPLICIT_CONVERSIONS
245 #define R123_USE_CXX11_EXPLICIT_CONVERSIONS R123_USE_CXX11
248 #ifndef R123_USE_CXX11_RANDOM
249 #define R123_USE_CXX11_RANDOM R123_USE_CXX11
252 #ifndef R123_USE_CXX11_TYPE_TRAITS
253 #define R123_USE_CXX11_TYPE_TRAITS R123_USE_CXX11
256 #ifndef R123_USE_CXX11_LONG_LONG
257 #define R123_USE_CXX11_LONG_LONG R123_USE_CXX11
260 #ifndef R123_USE_CXX11_STD_ARRAY
261 #define R123_USE_CXX11_STD_ARRAY R123_USE_CXX11
264 #ifndef R123_USE_MULHILO64_C99
265 #define R123_USE_MULHILO64_C99 0
268 #ifndef R123_USE_MULHILO64_MULHI_INTRIN
269 #define R123_USE_MULHILO64_MULHI_INTRIN 0
272 #ifndef R123_USE_MULHILO32_MULHI_INTRIN
273 #define R123_USE_MULHILO32_MULHI_INTRIN 0
276 #ifndef R123_STATIC_ASSERT
277 #if R123_USE_CXX11_STATIC_ASSERT
278 #define R123_STATIC_ASSERT(expr, msg) static_assert(expr, msg)
281 #define R123_STATIC_ASSERT(expr, msg) typedef char static_assertion[(!!(expr))*2-1]
285 #ifndef R123_CONSTEXPR
286 #if R123_USE_CXX11_CONSTEXPR
287 #define R123_CONSTEXPR constexpr
289 #define R123_CONSTEXPR
293 #ifndef R123_USE_64BIT
294 #define R123_USE_64BIT 1
297 #ifndef R123_USE_PHILOX_64BIT
298 #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))
301 #ifndef R123_ULONG_LONG
302 #if defined(__cplusplus) && !R123_USE_CXX11_LONG_LONG
307 #define R123_ULONG_LONG uint64_t
309 #define R123_ULONG_LONG unsigned long long
316 #define R123_64BIT(x) UINT64_C(x)
320 #define R123_THROW(x) throw (x)
323 #ifndef R123_METAL_THREAD_ADDRESS_SPACE
324 #define R123_METAL_THREAD_ADDRESS_SPACE
327 #ifndef R123_METAL_CONSTANT_ADDRESS_SPACE
328 #define R123_METAL_CONSTANT_ADDRESS_SPACE
341 #define R123_NO_MACRO_SUBST