=== 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&sektion=7&manpath=FreeBSD+15.0-CURRENT[simd(7)] URL: link:https://man.freebsd.org/cgi/man.cgi?query=simd&sektion=7&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, * either a *baseline* implementation using SSE and SSE2, or 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