llvm-project/libc/docs/gpu/support.rst
Joseph Huber 25bf1ae99b
[libc] Enable remaining string functions on the GPU (#68346)
Summary:
We previously had to disable these string functions because they were
not compatible with the definitions coming from the GNU / host
environment. The GPU, when exporting its declarations, has a very
difficult requirement that it be compatible with the host environment as
both sides of the compilation need to agree on definitions and what's
present.

This patch more or less gives up an just copies the definitions as
expected by `glibc` if they are provided that way, otherwise we fall
back to the accepted way. This is the alternative solution to an
existing PR which instead disable's GCC's handling.
2023-10-23 13:16:20 -04:00

181 lines
4.3 KiB
ReStructuredText

.. _libc_gpu_support:
===================
Supported Functions
===================
.. include:: ../check.rst
.. contents:: Table of Contents
:depth: 4
:local:
The following functions and headers are supported at least partially on the
device. Some functions are implemented fully on the GPU, while others require a
`remote procedure call <libc_gpu_rpc>`_.
ctype.h
-------
============= ========= ============
Function Name Available RPC Required
============= ========= ============
isalnum |check|
isalpha |check|
isascii |check|
isblank |check|
iscntrl |check|
isdigit |check|
isgraph |check|
islower |check|
isprint |check|
ispunct |check|
isspace |check|
isupper |check|
isxdigit |check|
toascii |check|
tolower |check|
toupper |check|
============= ========= ============
string.h
--------
============= ========= ============
Function Name Available RPC Required
============= ========= ============
bcmp |check|
bcopy |check|
bzero |check|
index |check|
memccpy |check|
memchr |check|
memcmp |check|
memcpy |check|
memmem |check|
memmove |check|
mempcpy |check|
memrchr |check|
memset |check|
rindex |check|
stpcpy |check|
stpncpy |check|
strcasecmp |check|
strcasestr |check|
strcat |check|
strchr |check|
strchrnul |check|
strcmp |check|
strcoll |check|
strcpy |check|
strcspn |check|
strdup |check|
strlcat |check|
strlcpy |check|
strlen |check|
strncasecmp |check|
strncat |check|
strncmp |check|
strncpy |check|
strndup |check|
strnlen |check|
strpbrk |check|
strrchr |check|
strsep |check|
strspn |check|
strstr |check|
strtok |check|
strtok_r |check|
strxfrm |check|
============= ========= ============
stdlib.h
--------
============= ========= ============
Function Name Available RPC Required
============= ========= ============
abs |check|
atoi |check|
atof |check|
atol |check|
atoll |check|
exit |check| |check|
abort |check| |check|
labs |check|
llabs |check|
div |check|
ldiv |check|
lldiv |check|
bsearch |check|
qsort |check|
qsort_r |check|
strtod |check|
strtof |check|
strtol |check|
strtold |check|
strtoll |check|
strtoul |check|
strtoull |check|
============= ========= ============
inttypes.h
----------
============= ========= ============
Function Name Available RPC Required
============= ========= ============
imaxabs |check|
imaxdiv |check|
strtoimax |check|
strtoumax |check|
============= ========= ============
stdio.h
-------
============= ========= ============
Function Name Available RPC Required
============= ========= ============
feof |check| |check|
ferror |check| |check|
clearerr |check| |check|
fseek |check| |check|
ftell |check| |check|
fflush |check| |check|
fgetc |check| |check|
fgets |check| |check|
ungetc |check| |check|
getc |check| |check|
getchar |check| |check|
puts |check| |check|
fputs |check| |check|
fputc |check| |check|
fwrite |check| |check|
putc |check| |check|
putchar |check| |check|
fclose |check| |check|
fopen |check| |check|
fread |check| |check|
============= ========= ============
time.h
------
============= ========= ============
Function Name Available RPC Required
============= ========= ============
clock |check|
nanosleep |check|
============= ========= ============
assert.h
--------
============= ========= ============
Function Name Available RPC Required
============= ========= ============
assert |check| |check|
__assert_fail |check| |check|
============= ========= ============