diff --git a/libc/docs/strings.rst b/libc/docs/strings.rst --- a/libc/docs/strings.rst +++ b/libc/docs/strings.rst @@ -25,72 +25,156 @@ Implementation Status --------------------- -Primary memory functions -======================== +* To check functions enabled for Linux: -.. TODO(gchatelet): add details about the memory functions. + - `linux-x86_64 `_ + - `linux-aarch64 `_ -============= ========= -Function Name Available -============= ========= -bzero |check| -bcmp |check| -bcopy |check| -memcpy |check| -memset |check| -memcmp |check| -memmove |check| -============= ========= + - `linux-aarch32 `_ + - `linux-riscv64 `_ -Other Raw Memory Functions -========================== +* To check functions enabled for Windows: -============= ========= -Function Name Available -============= ========= -memchr |check| -memrchr |check| -memccpy |check| -mempcpy |check| -============= ========= + - `windows-x86_64 `_ -String Memory Functions -======================= + - windows-aarch64 - to be added -============= ========= -Function Name Available -============= ========= -stpcpy |check| -stpncpy |check| -strcpy |check| -strncpy |check| -strcat |check| -strncat |check| -strdup |check| -strndup |check| -============= ========= +* To check functions enabled for macOS: -String Examination Functions -============================ + - `darwin-x86_64 `_ + + - `darwin-aarch64 `_ + +* To check functions enabled for GPU: + + - `gpu-entrypoints `_ + +* To check functions enabled for embedded system: + + - `embedded-aarch32 `_ + + - embedded-riscv32 - to be added + + +Memory Functions +================ + +.. TODO(gchatelet): add details about the memory functions. + ++------------+---------------------------------------+-------------------+-------------------+-------------------+-------------------+ +| | Linux | Windows | MacOS | Embedded | GPU | +| +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| | x86_64 | aarch64 | aarch32 | riscv64 | x86_64 | aarch64 | x86_64 | aarch64 | arm32 | riscv32 | AMD | nVidia | ++============+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+ +| bcopy | |check| | |check| | |check| | |check| | |check| | | | |check| | |check| | | | | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| bcmp | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| bzero | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memccpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memchr | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memcmp | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memcpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memmem | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memmove | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| mempccpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memrchr | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| memset | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ + + +String Functions +======================= + ++---------------+---------------------------------------+-------------------+-------------------+-------------------+-------------------+ +| | Linux | Windows | MacOS | Embedded | GPU | +| +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| | x86_64 | aarch64 | aarch32 | riscv64 | x86_64 | aarch64 | x86_64 | aarch64 | arm32 | riscv32 | AMD | nVidia | ++===============+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+ +| index | |check| | |check| | |check| | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| rindex | |check| | |check| | |check| | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| stpcpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| stpncpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strcasecmp | |check| | |check| | |check| | |check| | |check| | | | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strcasestr | |check| | |check| | |check| | |check| | |check| | | | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strcat | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strchr | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strchrnul | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strcmp | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strcoll | |check| | | | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strcpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strcspn | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strdup | |check| | |check| | | |check| | |check| | | |check| | |check| | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strerror | |check| | |check| | | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strerror_r | |check| | |check| | | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strerror_s | | | | | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strerrorlen_s | | | | | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strlcat | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strlcpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strlen | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strncasecmp | |check| | |check| | |check| | |check| | |check| | | | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strncat | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strncmp | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strncpy | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strndup | |check| | |check| | | |check| | |check| | | |check| | |check| | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strnlen | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strpbrk | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strrchr | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strsep | |check| | |check| | |check| | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strsignal | |check| | |check| | | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strspn | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strstr | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtok | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtok_r | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | |check| | |check| | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strxfrm | |check| | | | |check| | | | | | | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -============= ========= -Function Name Available -============= ========= -strlen |check| -strnlen |check| -strcmp |check| -strncmp |check| -strchr |check| -strrchr |check| -strspn |check| -strcspn |check| -strpbrk |check| -strstr |check| -strtok |check| -strtok_r |check| -============= ========= String Conversion Functions ============================ @@ -111,34 +195,38 @@ 10 times each, skipping the first run since it was an outlier. -============= ========= -Function Name Available -============= ========= -atof |check| -atoi |check| -atol |check| -atoll |check| -strtol |check| -strtoll |check| -strtoul |check| -strtoull |check| -strtof |check| -strtod |check| -strtold |check| -strtoimax |check| -strtoumax |check| -============= ========= ++---------------+---------------------------------------+-------------------+-------------------+-------------------+-------------------+ +| | Linux | Windows | MacOS | Embedded | GPU | +| +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| | x86_64 | aarch64 | aarch32 | riscv64 | x86_64 | aarch64 | x86_64 | aarch64 | arm32 | riscv32 | AMD | nVidia | ++===============+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+ +| atof | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| atoi | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| atol | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| atoll | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtof | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtod | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtold | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtol | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtoll | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtoul | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtoull | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtoimax | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| strtoumax | |check| | |check| | |check| | |check| | |check| | | |check| | |check| | |check| | | | | ++---------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -String Error Functions -====================== - -============= ========= -Function Name Available -============= ========= -strerror -strerror_s -strerrorlen_s -============= ========= Localized String Functions ==========================