diff --git a/libc/config/gpu/api.td b/libc/config/gpu/api.td --- a/libc/config/gpu/api.td +++ b/libc/config/gpu/api.td @@ -12,3 +12,7 @@ "__atexithandler_t", ]; } + +def FenvAPI: PublicAPI<"fenv.h"> { + let Types = ["fenv_t"]; +} diff --git a/libc/config/gpu/entrypoints.txt b/libc/config/gpu/entrypoints.txt --- a/libc/config/gpu/entrypoints.txt +++ b/libc/config/gpu/entrypoints.txt @@ -56,7 +56,17 @@ # stdlib.h entrypoints libc.src.stdlib.atoi + libc.src.stdlib.atof + libc.src.stdlib.atol + libc.src.stdlib.atoll libc.src.stdlib.atexit + libc.src.stdlib.strtod + libc.src.stdlib.strtof + libc.src.stdlib.strtol + libc.src.stdlib.strtold + libc.src.stdlib.strtoll + libc.src.stdlib.strtoul + libc.src.stdlib.strtoull # Only implemented in the test suite libc.src.stdlib.malloc diff --git a/libc/config/gpu/headers.txt b/libc/config/gpu/headers.txt --- a/libc/config/gpu/headers.txt +++ b/libc/config/gpu/headers.txt @@ -1,6 +1,7 @@ set(TARGET_PUBLIC_HEADERS libc.include.ctype libc.include.string + libc.include.fenv libc.include.errno libc.include.stdlib ) diff --git a/libc/docs/gpu/support.rst b/libc/docs/gpu/support.rst --- a/libc/docs/gpu/support.rst +++ b/libc/docs/gpu/support.rst @@ -85,4 +85,15 @@ Function Name Available RPC Required ============= ========= ============ atoi |check| +atof |check| +atol |check| +atoll |check| +atexit |check| +strtod |check| +strtof |check| +strtol |check| +strtold |check| +strtoll |check| +strtoul |check| +strtoull |check| ============= ========= ============ diff --git a/libc/include/llvm-libc-types/fenv_t.h b/libc/include/llvm-libc-types/fenv_t.h --- a/libc/include/llvm-libc-types/fenv_t.h +++ b/libc/include/llvm-libc-types/fenv_t.h @@ -25,6 +25,10 @@ } fenv_t; #elif defined(__riscv) typedef unsigned int fenv_t; +#elif defined(__AMDGPU__) || defined(__NVPTX__) +typedef struct { + unsigned int __fpc; +} fenv_t; #else #error "fenv_t not defined for your platform" #endif diff --git a/libc/src/__support/FPUtil/PlatformDefs.h b/libc/src/__support/FPUtil/PlatformDefs.h --- a/libc/src/__support/FPUtil/PlatformDefs.h +++ b/libc/src/__support/FPUtil/PlatformDefs.h @@ -17,8 +17,9 @@ // https://developer.arm.com/documentation/dui0491/i/C-and-C---Implementation-Details/Basic-data-types // https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms -#if defined(_WIN32) || defined(__arm__) || \ - (defined(__APPLE__) && defined(__aarch64__)) +// https://docs.amd.com/bundle/HIP-Programming-Guide-v5.1/page/Programming_with_HIP.html +#if defined(_WIN32) || defined(__arm__) || defined(__NVPTX__) || \ + defined(__AMDGPU__) || (defined(__APPLE__) && defined(__aarch64__)) #define LONG_DOUBLE_IS_DOUBLE #endif