Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SIMD(7) 		 Miscellaneous Information Manual		 SIMD(7)

NAME
     simd -- SIMD enhancements

DESCRIPTION
     On  some  architectures, the FreeBSD libc provides enhanced implementations
     of commonly used functions, replacing the	architecture-independent  imple-
     mentations  used otherwise.  Depending on architecture and function, an en-
     hanced implementation of a function may either always be used or  the  libc
     detects  at runtime which SIMD instruction set extensions are supported and
     picks the most suitable implementation automatically.  On amd64, the  envi-
     ronment variable ARCHLEVEL can be used to override this mechanism.

     Enhanced functions are present for the following architectures:

	   FUNCTION	     AARCH64  ARM  AMD64  I386	PPC64  RISC-V
	   bcmp 	     A		   S1	  S
	   bcopy	     A	      S    S	  S	SV     S
	   bzero	     A	      S    S	  S	       S
	   div				   S	  S
	   index	     A		   S1		S
	   ldiv 			   S	  S
	   lldiv			   S
	   memchr	     A		   S1		       S
	   memcmp	     A	      S    S1	  S
	   memccpy	     A		   S1
	   memcpy	     A	      S    S	  S	SV     S
	   memmove	     A	      S    S	  S	SV
	   memrchr	     A		   S1
	   memset	     A	      S    S	  S	       S
	   rindex	     A		   S1	  S	       S
	   stpcpy	     A		   S1
	   stpncpy			   S1
	   strcat	     A		   S1	  S
	   strchr	     A		   S1	  S	       S
	   strchrnul	     A		   S1		       S
	   strcmp	     A	      S    S1	  S
	   strcpy	     A		   S1	  S	S2
	   strcspn	     S		   S2
	   strlcat	     A		   S1
	   strlcpy	     A		   S1
	   strlen	     A	      S    S1		       S
	   strncat	     A		   S1
	   strncmp	     A	      S    S1	  S
	   strncpy			   S1		S2
	   strnlen	     A		   S1		       S
	   strrchr	     A		   S1	  S	       S
	   strpbrk	     S		   S2
	   strsep	     S		   S2
	   strspn	     S		   S2
	   swab 				  S
	   timingsafe_bcmp   A		   S1
	   timingsafe_memcmp S		   S
	   wcschr				  S
	   wcscmp				  S
	   wcslen				  S
	   wmemchr				  S

     S: scalar	(non-SIMD),  1: amd64  baseline,  2: x86-64-v2	or PowerPC 2.05,
     3: x86-64-v3, 4: x86-64-v4, V: PowerPC VSX, A: Arm ASIMD (NEON).

ENVIRONMENT
     ARCHLEVEL
	     On amd64, controls the level of SIMD enhancements	used.	If  this
	     variable  is  set	to an architecture level from the list below and
	     that architecture level is supported by  the  processor,  SIMD  en-
	     hancements  up  to  ARCHLEVEL are used.  If ARCHLEVEL is unset, not
	     recognised, or not supported by the processor, the highest level of
	     SIMD enhancements supported by the processor is used.

	     A suffix beginning with `': or `+' in ARCHLEVEL is ignored and  may
	     be  used for future extensions.  The architecture level can be pre-
	     fixed with a `'!  character to force use of the requested architec-
	     ture level, even if the processor does not  advertise  that  it  is
	     supported.   This	usually  causes applications to crash and should
	     only be used for testing purposes or if architecture  level  detec-
	     tion yields incorrect results.

	     The architecture levels follow the AMD64 SysV ABI supplement:

	     scalar	scalar enhancements only (no SIMD)

	     baseline	cmov, cx8, x87 FPU, fxsr, MMX, osfxsr, SSE, SSE2

	     x86-64-v2	cx16, lahf/sahf, popcnt, SSE3, SSSE3, SSE4.1, SSE4.2

	     x86-64-v3	AVX, AVX2, BMI1, BMI2, F16C, FMA, lzcnt, movbe, osxsave

	     x86-64-v4	AVX-512F/BW/CD/DQ/VL

DIAGNOSTICS
     Illegal  Instruction    Printed by sh(1) if a command is terminated through
     delivery of a SIGILL signal, see signal(3).

     Use of an unsupported architecture level was forced by setting ARCHLEVEL to
     a string beginning with a `'!  character, causing a process to crash due to
     use of an unsupported instruction.  Unset ARCHLEVEL, remove the `'!  prefix
     or select a supported architecture level.

     Message may also appear for unrelated reasons.

SEE ALSO
     string(3), arch(7)

     H. J. Lu, Michael Matz, Milind Girkar, Jan  Hubivka,  Andreas  Jaeger,  and
     Mark Mitchell, "AMD64 Architecture Processor Supplement", System V Applica-
     tion Binary Interface, May 23, 2023, Version 1.0.

HISTORY
     Architecture-specific  enhanced  libc  functions  were  added starting with
     FreeBSD 2.0  for  i386,  FreeBSD  6.0  for  arm,  FreeBSD	6.1  for  amd64,
     FreeBSD  11.0 for aarch64, FreeBSD 12.0 for powerpc64, and FreeBSD 16.0 for
     riscv64.  SIMD-enhanced functions were first added with  FreeBSD  13.0  for
     powerpc64 and with FreeBSD 14.1 for amd64.

     A simd manual page appeared in FreeBSD 14.1.

AUTHOR
     Robert Clausecker <fuz@FreeBSD.org>

CAVEATS
     Other  parts  of FreeBSD such as cryptographic routines in the kernel or in
     OpenSSL may also use SIMD enhancements.  These enhancements are not subject
     to the ARCHLEVEL variable and may have their own configuration mechanism.

BUGS
     Use of SIMD enhancements cannot be configured on powerpc64.

FreeBSD ports 15.quarterly	October 21, 2025			 SIMD(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=simd&sektion=7&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help