diff --git a/website/content/en/status/report-2023-07-2023-09/simd.adoc b/website/content/en/status/report-2023-07-2023-09/simd.adoc new file mode 100644 index 0000000000..33f4848790 --- /dev/null +++ b/website/content/en/status/report-2023-07-2023-09/simd.adoc @@ -0,0 +1,28 @@ +=== SIMD enhancements for amd64 + +Links: + +link:http://fuz.su/~fuz/freebsd/2023-04-05_libc-proposal.txt[Project proposal] URL: link:http://fuz.su/~fuz/freebsd/2023-04-05_libc-proposal.txt[] +link:https://man.freebsd.org/cgi/man.cgi?query=simd&manpath=FreeBSD+15.0-CURRENT[simd(7)] URL: link:https://man.freebsd.org/cgi/man.cgi?query=simd&manpath=FreeBSD+15.0-CURRENT[] + +Contact: Robert Clausecker + +SIMD instruction set extensions such as SSE, AVX, and NEON are ubiquitous on modern computers and offer performance advantages for many applications. +The goal of this project is to provide SIMD-enhanced versions of common libc functions (mostly those described in man:string[3]), speeding up most C programs. + +For each function optimised, up to four implementations will be provided: + + * a *scalar* implementation optimised for amd64, but without any SIMD usage, + * a *baseline* implementation using SSE and SSE2 or alternatively an *x86-64-v2* implementation using all SSE extensions up to SSE4.2, + * an *x86-64-v3* implementation using AVX and AVX2, and + * an *x86-64-v4* implementation using AVX-512F/BW/CD/DQ. + +Users will be able to select which level of SIMD enhancements to use by setting the `ARCHLEVEL` environment variable. + +While the current project only concerns amd64, the work may be expanded to other architectures like arm64 in the future. + +During the last few months, significant progress has been made on this project. +SIMD-enhanced versions of man:bcmp[3], man:index[3], man:memchr[3], man:memcmp[3], man:stpcpy[3], man:strchr[3], man:strchrnul[3], man:strcpy[3], man:strcspn[3], man:strlen[3], man:strnlen[3], and man:strspn[3] have landed. +Functions man:memcpy[3], man:memmove[3], man:strcmp[3], man:timingsafe_bcmp[3] (see link:https://reviews.freebsd.org/D41673[D41673]), and man:timingsafe_memcmp[3] (see link:https://reviews.freebsd.org/D41696[D41696]) are work in progress. +Unfortunately, the work has not made the cut for FreeBSD 14.0, but it is slated to be part of FreeBSD 14.1. + +Sponsor: The FreeBSD Foundation