codekingpro/portable-devtools
114k
1// -*- C++ -*-2//===--------------------------- cstdlib ----------------------------------===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9 10#ifndef _LIBCUDACXX_CSTDLIB11#define _LIBCUDACXX_CSTDLIB12 13/*14 cstdlib synopsis15 16Macros:17 18 EXIT_FAILURE19 EXIT_SUCCESS20 MB_CUR_MAX21 NULL22 RAND_MAX23 24namespace std25{26 27Types:28 29 size_t30 div_t31 ldiv_t32 lldiv_t // C9933 34double atof (const char* nptr);35int atoi (const char* nptr);36long atol (const char* nptr);37long long atoll(const char* nptr); // C9938double strtod (const char* restrict nptr, char** restrict endptr);39float strtof (const char* restrict nptr, char** restrict endptr); // C9940long double strtold (const char* restrict nptr, char** restrict endptr); // C9941long strtol (const char* restrict nptr, char** restrict endptr, int base);42long long strtoll (const char* restrict nptr, char** restrict endptr, int base); // C9943unsigned long strtoul (const char* restrict nptr, char** restrict endptr, int base);44unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C9945int rand(void);46void srand(unsigned int seed);47void* calloc(size_t nmemb, size_t size);48void free(void* ptr);49void* malloc(size_t size);50void* realloc(void* ptr, size_t size);51void abort(void);52int atexit(void (*func)(void));53void exit(int status);54void _Exit(int status);55char* getenv(const char* name);56int system(const char* string);57void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,58 int (*compar)(const void *, const void *));59void qsort(void* base, size_t nmemb, size_t size,60 int (*compar)(const void *, const void *));61int abs( int j);62long abs( long j);63long long abs(long long j); // C++0X64long labs( long j);65long long llabs(long long j); // C9966div_t div( int numer, int denom);67ldiv_t div( long numer, long denom);68lldiv_t div(long long numer, long long denom); // C++0X69ldiv_t ldiv( long numer, long denom);70lldiv_t lldiv(long long numer, long long denom); // C9971int mblen(const char* s, size_t n);72int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);73int wctomb(char* s, wchar_t wchar);74size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);75size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);76int at_quick_exit(void (*func)(void)) // C++1177void quick_exit(int status); // C++1178void *aligned_alloc(size_t alignment, size_t size); // C1179 80} // std81 82*/83 84#ifndef __cuda_std__85#include <__config>86#include <stdlib.h>87#endif // __cuda_std__88 89#ifndef _LIBCUDACXX_COMPILER_NVRTC90# include <cstdlib>91#endif // _LIBCUDACXX_COMPILER_NVRTC92 93#ifndef __cuda_std__94#include <__pragma_push>95#endif // __cuda_std__96 97#if defined(_CCCL_IMPLICIT_SYSTEM_HEADER_GCC)98# pragma GCC system_header99#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_CLANG)100# pragma clang system_header101#elif defined(_CCCL_IMPLICIT_SYSTEM_HEADER_MSVC)102# pragma system_header103#endif // no system header104 105#if defined(_LIBCUDACXX_COMPILER_CLANG_CUDA)106# define _LIBCUDACXX_UNREACHABLE() __builtin_unreachable()107#elif defined(__CUDA_ARCH__)108#if defined(_LIBCUDACXX_CUDACC_BELOW_11_2)109# define _LIBCUDACXX_UNREACHABLE() __trap()110#elif defined(_LIBCUDACXX_CUDACC_BELOW_11_3)111# define _LIBCUDACXX_UNREACHABLE() __builtin_assume(false)112#else113# define _LIBCUDACXX_UNREACHABLE() __builtin_unreachable()114#endif // CUDACC above 11.4115#else // ^^^ __CUDA_ARCH__ ^^^ / vvv !__CUDA_ARCH__ vvv116#if defined(_LIBCUDACXX_COMPILER_MSVC_2017)117template<class = void>118_LIBCUDACXX_INLINE_VISIBILITY __declspec(noreturn) void __unreachable_fallback() { __assume(0); }119# define _LIBCUDACXX_UNREACHABLE() __unreachable_fallback()120#elif defined(_LIBCUDACXX_COMPILER_MSVC)121# define _LIBCUDACXX_UNREACHABLE() __assume(0)122#elif defined(_LIBCUDACXX_COMPILER_GCC) || __has_builtin(__builtin_unreachable)123# define _LIBCUDACXX_UNREACHABLE() __builtin_unreachable()124#else // Other compilers125# define _LIBCUDACXX_UNREACHABLE() ::abort()126#endif // Other compilers127#endif // !__CUDA_ARCH__128 129#ifdef _LIBCUDACXX_COMPILER_NVHPC130#define _LIBCUDACXX_UNREACHABLE_AFTER_SWITCH()131#else132#define _LIBCUDACXX_UNREACHABLE_AFTER_SWITCH() _LIBCUDACXX_UNREACHABLE()133#endif134 135_LIBCUDACXX_BEGIN_NAMESPACE_STD136 137#if !defined(_LIBCUDACXX_COMPILER_NVRTC)138using ::size_t;139using ::div_t;140using ::ldiv_t;141#ifndef _LIBCUDACXX_HAS_NO_LONG_LONG142using ::lldiv_t;143#endif // _LIBCUDACXX_HAS_NO_LONG_LONG144using ::atof;145using ::atoi;146using ::atol;147#ifndef _LIBCUDACXX_HAS_NO_LONG_LONG148using ::atoll;149#endif // _LIBCUDACXX_HAS_NO_LONG_LONG150using ::strtod;151using ::strtof;152using ::strtold;153using ::strtol;154#ifndef _LIBCUDACXX_HAS_NO_LONG_LONG155using ::strtoll;156#endif // _LIBCUDACXX_HAS_NO_LONG_LONG157using ::strtoul;158#ifndef _LIBCUDACXX_HAS_NO_LONG_LONG159using ::strtoull;160#endif // _LIBCUDACXX_HAS_NO_LONG_LONG161using ::rand;162using ::srand;163using ::calloc;164using ::free;165using ::malloc;166using ::realloc;167using ::abort;168using ::atexit;169using ::exit;170using ::_Exit;171#ifndef _LIBCUDACXX_WINDOWS_STORE_APP172using ::getenv;173using ::system;174#endif175using ::bsearch;176using ::qsort;177using ::abs;178using ::labs;179#ifndef _LIBCUDACXX_HAS_NO_LONG_LONG180using ::llabs;181#endif // _LIBCUDACXX_HAS_NO_LONG_LONG182using ::div;183using ::ldiv;184#ifndef _LIBCUDACXX_HAS_NO_LONG_LONG185using ::lldiv;186#endif // _LIBCUDACXX_HAS_NO_LONG_LONG187using ::mblen;188using ::mbtowc;189using ::wctomb;190using ::mbstowcs;191using ::wcstombs;192#if defined(_LIBCUDACXX_HAS_QUICK_EXIT)193using ::at_quick_exit;194using ::quick_exit;195#endif196#if _LIBCUDACXX_STD_VER > 14 && defined(_LIBCUDACXX_HAS_C11_FEATURES)197using ::aligned_alloc;198#endif199#endif // !defined(_LIBCUDACXX_COMPILER_NVRTC)200 201_LIBCUDACXX_END_NAMESPACE_STD202 203#ifndef __cuda_std__204#include <__pragma_pop>205#endif //__cuda_std__206 207#endif // _LIBCUDACXX_CSTDLIB208 