-*- mode: troff; coding: utf-8 -*- Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) Standard preamble: ========================================================================..
..
..
\*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.. ds C` ""
. ds C' ""
'br\}
. ds C`
. ds C'
'br\}
Escape single quotes in literal strings from groff's Unicode transform. If the F register is >0, we'll generate index entries on stderr for titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index entries marked with X<> in POD. Of course, you'll have to process the output yourself in some meaningful fashion. Avoid warning from groff about undefined register 'F'...
.nr rF 0
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
Required to disable full justification in groff 1.23.0. ======================================================================== Title "OPENSSL_ARMCAP 3ossl" OPENSSL_ARMCAP 3ossl 2026-08-25 3.5.8 OpenSSL
For nroff, turn off justification. Always turn off hyphenation; it makes way too many mistakes in technical documents. NAME
OPENSSL_armcap - the Arm processor capabilities vector
SYNOPSIS
Header "SYNOPSIS" .Vb 1
env OPENSSL_armcap=... <application>
.Ve
DESCRIPTION
Header "DESCRIPTION" libcrypto supports a range of Arm instruction set extensions. These
extensions are represented by bits in the Arm processor capabilities vector.
When libcrypto initializes, it stores the results returned by Arm CPU
capabilities detection logic in the Arm processor capabilities vector. The
CPU capabilities detection methods are OS-dependent, using a combination of
information gathered by the kernel during boot, and probe functions that attempt
to execute instructions and trap illegal instruction signals with a signal
handler.
To override the set of extensions available to an application, set the
\fBOPENSSL_armcap environment variable before starting the application. The
environment variable is assigned a numerical value that denotes the bits in
the Arm processor capabilities vector. The arm_arch.h header file defines
the possible values, which are explained in detail below.
Multiple extensions are enabled by logically OR-ing the values that represent
the desired extensions.
\fBNotes: Attempting to executing an instruction from an extension that the
target CPU does not support will result in an illegal instruction exception
(SIGILL).
Please note that not all possible values in the Arm processor capabilities
vector are actual processor capabilities. Some values represent OpenSSL
performance preferences for some implementations which only make sense on
specific CPUs.
The following extensions are defined:
0x0001 4
Item "0x0001" Name:
ARMV7_NEON
.Sp
Meaning: Indicates support for the Armv7 Neon SIMD extensions on the processor.
.Sp
Effect: Enables various Armv7 Neon SIMD implementations.
0x00002 4
Item "0x00002" Name:
ARMV7_TICK
.Sp
Meaning: Indicates support for the Armv7 system timer on the processor.
.Sp
Effect: This is used as a seed for some random number generators.
0x00004 4
Item "0x00004" Name:
ARMV8_AES
.Sp
Meaning: Indicates support for the Armv8.0 AES hardware-acceleration extensions
on the processor.
.Sp
Effect: Enables various Armv8.0 AES hardware-accelerated implementations.
0x00008 4
Item "0x00008" Name:
ARMV8_SHA1
.Sp
Meaning: Indicates support for the Armv8.0 SHA1 hardware-acceleration extensions
on the processor.
.Sp
Effect: Enables various Armv8.0 SHA1 hardware-accelerated implementations.
0x00010 4
Item "0x00010" Name:
ARMV8_SHA256
.Sp
Meaning: Indicates support for the Armv8.0 SHA256 hardware-acceleration
extensions on the processor.
.Sp
Effect: Enables various Armv8.0 SHA256 hardware-accelerated implementations.
0x00020 4
Item "0x00020" Name:
ARMV8_PMULL
.Sp
Meaning: Indicates support for the Armv8.0 polynomial multiplication
hardware-acceleration extensions on the processor.
.Sp
Effect: Used to hardware-accelerate polynomial multiplication, for example in
AES-GCM.
0x00040 4
Item "0x00040" Name:
ARMV8_SHA512
.Sp
Meaning: Indicates support for the Armv8.2 SHA512 hardware-acceleration
extensions on the processor.
.Sp
Effect: Enables Armv8.2 SHA512 hardware-accelerated implementations.
0x00080 4
Item "0x00080" Name:
ARMV8_CPUID
.Sp
Meaning: Indicates support for the Armv8.0 hardware identification extensions on
the processor.
.Sp
Effect: Allows implementations to change their behaviour, dependant on the
processor platform in order to achieve better performance.
0x00100 4
Item "0x00100" Name:
ARMV8_RNG
.Sp
Meaning: Indicates support for the Armv8.5 hardware random number generation
extensions on the processor.
.Sp
Effect: Enables hardware random number generation on supported AArch64
processors.
0x00200 4
Item "0x00200" Name:
ARMV8_SM3
.Sp
Meaning: Indicates support for the Armv8.2 SM3 hardware-acceleration extensions
on the processor.
.Sp
Effect: Enables Armv8.2 SM3 hardware-accelerated implementations.
0x00400 4
Item "0x00400" Name:
ARMV8_SM4
.Sp
Meaning: Indicates support for the Armv8.2 SM4 hardware-acceleration extensions
on the processor.
.Sp
Effect: Enables Armv8.2 SM4 hardware-accelerated implementations.
0x00800 4
Item "0x00800" Name:
ARMV8_SHA3
.Sp
Meaning: Indicates support for the Armv8.2 SHA3 hardware-acceleration extensions
on the processor.
.Sp
Effect: Enables SHA3 hardware-accelerated implementations (see also
ARMV8_HAVE_SHA3_AND_WORTH_USING).
0x01000 4
Item "0x01000" Name:
ARMV8_UNROLL8_EOR3
.Sp
Meaning: Indicates support for the Arm EOR3 instruction, which is a part of the
Armv8.2 SHA3 extensions, and enables 8x Loop unrolling in the AES-CTR
implementation.
.Sp
Effect: Enables the 8x loop unrolling utilising EOR3 implementation of AES-CTR
on platforms that support the SHA3 extension and have enough vector bandwidth.
0x02000 4
Item "0x02000" Name:
ARMV8_SVE
.Sp
Meaning: Indicates support for the Armv8.2 SVE hardware extension on the
processor.
.Sp
Effect: Enables various Armv8.2 SVE implementations.
0x04000 4
Item "0x04000" Name:
ARMV9_SVE2
.Sp
Meaning: Indicates support for the Armv9.0 SVE2 hardware extension on the
processor.
.Sp
Effect: Enables various Armv9.0 SVE2 implementations.
0x08000 4
Item "0x08000" Name:
ARMV8_HAVE_SHA3_AND_WORTH_USING
.Sp
Meaning: Indicates support for the Armv8.2 SHA3 hardware-acceleration extensions
on the processor, and that the hardware bandwidth is sufficient for it to be
worth using.
.Sp
Effect: On certain Apple platforms, although the SHA3 extension is supported, it
is actually slower than other implementations. This flag disables the
hardware-accelerated SHA3 implementations on these platforms.
0x10000 4
Item "0x10000" Name:
ARMV8_UNROLL12_EOR3
.Sp
Meaning: Indicates support for the Arm EOR3 instruction, which is a part of the
Armv8.2 SHA3 extensions, and enables 12x loop unrolling in the AES-CTR
implementation.
.Sp
Effect: Enables the 12x loop unrolling utilising EOR3 implementation of AES-CTR
on platforms that support the extension and have enough vector bandwidth.
0x20000 4
Item "0x20000" Name:
ARMV9_SVE2_POLY1305
.Sp
Meaning: Indicates support for the Armv9.0 SVE2 hardware extension, and enables
its use in the Poly1305 implementation.
.Sp
Effect: Enables the Armv9.0 SVE2 Poly1305 implementation if SVE2 is enabled, the
vector length is greater than 128 bits, and the vector length is a power of 2.
"RETURN VALUES"
Header "RETURN VALUES" Not available.
EXAMPLES
Header "EXAMPLES" Check currently detected capabilities:
.Vb 2
$ openssl info -cpusettings
OPENSSL_armcap=0x987d
.Ve
The detected capabilities in the above example indicate that ARMV7_NEON,
ARMV8_AES, ARMV8_SHA1, ARMV8_SHA256, ARMV8_PMULL, ARMV8_SHA512, ARMV8_SHA3,
ARMV8_UNROLL8_EOR3, and ARMV8_HAVE_SHA3_AND_WORTH_USING are enabled.
Disable all instruction set extensions:
.Vb 1
export OPENSSL_armcap=0x00
.Ve
COPYRIGHT
Header "COPYRIGHT" Copyright 2026 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use
this file except in compliance with the License. You can obtain a copy
in the file LICENSE in the source distribution or at
<https://www.openssl.org/source/license.html>.