opnsense-src/lib
Robert Clausecker 3a19fcb9fd lib/libc/amd64/string: add strncmp scalar, baseline implementation
The scalar implementation is fairly straightforward and merely unrolled
four times.  The baseline implementation closely follows D41971 with
appropriate extensions and extra code paths to pay attention to string
length.

Performance is quite good.  We beat both glibc (except for very long
strings, but they likely use AVX which we don't) and Bionic (except for
medium-sized aligned strings, where we are still in the same ballpark).

Sponsored by:	The FreeBSD Foundation
Tested by:	developers@, exp-run
Approved by:	mjg
MFC after:	1 month
MFC to:		stable/14
PR:		275785
Differential Revision: https://reviews.freebsd.org/D42122

(cherry picked from commit 14289e973f5c941e4502cc2b11265e4b3072839a)
2024-01-24 20:39:25 +01:00
..
atf Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
clang Merge llvm-project release/17.x llvmorg-17.0.6-0-g6009708b4367 2024-01-07 18:46:19 +01:00
csu pkgbase: Move headers and libs out of runtime and utilities 2023-11-12 10:37:16 +00:00
flua Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
geom glabel.8: Warn against using generic labels on a shared device 2023-10-04 09:41:29 -04:00
googletest Fix GoogleTest 1.14.0 import 2023-08-18 19:33:58 -07:00
lib9p Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
lib80211 Purge more stray embedded $FreeBSD$ strings 2023-10-24 10:10:12 -07:00
libalias Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libarchive Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libauditd Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libbe Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libbearssl libsecureboot: be more verbose about validation failures 2024-01-07 14:39:17 -05:00
libbegemot Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libblacklist Track upstream project rename in contrib/blocklistd 2024-01-07 14:31:11 -05:00
libblocksruntime Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libbluetooth Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
libbsddialog Update/fix Makefile.depend for userland 2023-04-18 17:14:23 -07:00
libbsdstat Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libbsm Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libbsnmp Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libbz2 Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libc lib/libc/amd64/string: add strncmp scalar, baseline implementation 2024-01-24 20:39:25 +01:00
libc++ Add missing /usr/include/c++/v1/__mdspan/mdspan.h header 2024-01-07 18:46:19 +01:00
libc++experimental Merge llvm-project main llvmorg-17-init-19304-gd0b54bb50e51 2024-01-07 18:46:17 +01:00
libc_nonshared Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libcalendar Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libcam Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libcapsicum Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libcasper libcasper: document that most libcasper functions are not thread-safe 2024-01-19 18:51:58 -07:00
libcbor Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libclang_rt Add missing sources to libclang_rt Makefiles, clean up unneeded ones 2024-01-07 18:46:19 +01:00
libcom_err Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libcompat Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
libcompiler_rt Merge commit 4bb2416d42eb from llvm-project (by Jessica Clarke): 2023-09-11 22:46:57 +01:00
libcrypt Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libcuse Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
libcxxrt Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libdevctl Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libdevdctl Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libdevinfo Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libdevstat Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libdl Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libdpv Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libdwarf Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libedit Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libefivar Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libelf Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libelftc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libevent1 Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libexecinfo Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libexpat Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libfetch libfetch, fetch: Stop recommending the use of ca_root_nss. 2023-12-13 17:23:57 +01:00
libfido2 libfido2: update to 1.13.0 2023-09-22 07:03:36 -04:00
libfigpar Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libgcc_eh Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libgcc_s Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libgeom Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libgpio libgpio: Fix type mismatch for gpio_pin_[gs]et 2024-01-03 09:43:48 -08:00
libgssapi Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libiconv_modules Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libifconfig Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libipsec Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libipt Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libiscsiutil Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
libjail Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libkiconv Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libkvm Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
libldns Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
liblua Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
liblutok Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
liblzma lib{c,lzma,z}: remove -DSYMBOL_VERSIONING from CFLAGS 2023-12-13 22:08:13 +00:00
libmagic MFC: MFV: file 5.45. 2023-09-14 15:01:08 -07:00
libmd Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
libmemstat Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libmilter Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libmixer Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libmp Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libmt Add IBM TS1170 density codes and specs. 2023-12-14 15:55:24 -05:00
libnetbsd Remove $FreeBSD$: one-line bare tag 2023-08-16 11:55:20 -06:00
libnetgraph Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libnetmap Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libnv Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libomp Merge llvm-project main llvmorg-17-init-19304-gd0b54bb50e51 2024-01-07 18:46:17 +01:00
libopenbsd Remove $FreeBSD$: one-line bare tag 2023-08-16 11:55:20 -06:00
libopencsd Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libpam Remove $FreeBSD$: one-line bare tag 2023-08-16 11:55:20 -06:00
libpathconv Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libpcap Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libpe Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libpfctl libpfctl: handle pfctl_do_ioctl() failures better 2023-11-24 10:19:13 +01:00
libpjdlog Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libpmc pmc: better distinguish pmu-events allocation path 2023-09-11 12:19:58 -07:00
libpmcstat Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libproc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libprocstat libprocstat: improve conditional for 32-bit compat 2023-10-26 00:31:02 +01:00
libradius Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libregex Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
librpcsec_gss Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
librpcsvc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
librss Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
librt zfs: merge openzfs/zfs@32949f256 (zfs-2.2-release) into stable/14 2023-09-03 09:15:24 +02:00
librtld_db Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libsbuf Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libsdp Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
libsecureboot libsecureboot: be more verbose about validation failures 2024-01-07 14:39:17 -05:00
libsm Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libsmb Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libsmdb Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libsmutil Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libsqlite3 Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libssp Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libssp_nonshared Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libstats Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libstdbuf Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libstdthreads Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libsysdecode Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libtacplus Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libtelnet Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libthr libthr: thr_attr.c: EINVAL, not ENOTSUP, on invalid arguments 2024-01-18 22:07:53 +01:00
libthread_db Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libucl Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libufs Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libugidfw Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libulog Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libunbound Unbound: Manually update version strings 2023-11-28 07:15:25 -08:00
libusb Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libusbhid Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libutil setusercontext(): Apply personal settings only on matching effective UID 2023-10-23 20:57:11 -04:00
libveriexec Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libvgl Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
libvmmapi Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libwrap Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libxo Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
liby Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libypclnt Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
libz lib{c,lzma,z}: remove -DSYMBOL_VERSIONING from CFLAGS 2023-12-13 22:08:13 +00:00
libzstd libzstd: Explicitly define ZSTD_DISABLE_ASM 2023-08-22 21:01:03 +01:00
msun Purge more stray embedded $FreeBSD$ strings 2023-10-24 10:10:12 -07:00
ncurses ncurses: avoid hardcoded assumptions about the layout of .OBJDIR 2023-12-14 18:58:04 -06:00
nss_tacplus nss_tacplus: Provide dummy setpwent(), getpwent_r(), endpwent(). 2023-09-07 20:28:30 +00:00
ofed Trim various $FreeBSD$ 2023-10-24 11:22:23 -07:00
tests Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.inc Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00