Botan 3.9.0
Crypto and TLS for C&
Botan::CPUFeature Class Reference

#include <cpuid.h>

Public Types

enum  Bit : uint32_t {
  NEON = (1U << 0) , SVE = (1U << 1) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SHA3 = (1U << 20) , SHA2_512 = (1U << 21) ,
  SM3 = (1U << 22) , SM4 = (1U << 23) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , NEON = (1U << 0) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , LSX = (1U << 0) , LASX = (1U << 1) , CRYPTO = (1U << 2) ,
  SIMD_4X32 = NEON , ALTIVEC = (1U << 0) , POWER_CRYPTO = (1U << 1) , DARN = (1U << 2) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL , SCALAR_AES = (1U << 0) ,
  SCALAR_SHA256 = (1U << 1) , SCALAR_SM3 = (1U << 2) , SCALAR_SM4 = (1U << 3) , VECTOR = (1 << 16) ,
  VECTOR_AES = (1U << 17) , VECTOR_SHA256 = (1U << 18) , VECTOR_SM3 = (1U << 19) , VECTOR_SM4 = (1U << 20) ,
  SSE2 = (1U << 0) , SSSE3 = (1U << 1) , AVX2 = (1U << 2) , AVX512 = (1U << 3) ,
  RDTSC = (1U << 6) , ADX = (1U << 7) , BMI = (1U << 8) , GFNI = (1U << 9) ,
  RDRAND = (1U << 10) , RDSEED = (1U << 11) , AESNI = (1U << 16) , CLMUL = (1U << 17) ,
  SHA = (1U << 20) , SHA512 = (1U << 21) , AVX2_AES = (1U << 22) , AVX512_AES = (1U << 23) ,
  AVX2_CLMUL = (1U << 24) , AVX512_CLMUL = (1U << 25) , SM3 = (1U << 22) , SM4 = (1U << 23) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL
}
enum  Bit : uint32_t {
  NEON = (1U << 0) , SVE = (1U << 1) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SHA3 = (1U << 20) , SHA2_512 = (1U << 21) ,
  SM3 = (1U << 22) , SM4 = (1U << 23) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , NEON = (1U << 0) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , LSX = (1U << 0) , LASX = (1U << 1) , CRYPTO = (1U << 2) ,
  SIMD_4X32 = NEON , ALTIVEC = (1U << 0) , POWER_CRYPTO = (1U << 1) , DARN = (1U << 2) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL , SCALAR_AES = (1U << 0) ,
  SCALAR_SHA256 = (1U << 1) , SCALAR_SM3 = (1U << 2) , SCALAR_SM4 = (1U << 3) , VECTOR = (1 << 16) ,
  VECTOR_AES = (1U << 17) , VECTOR_SHA256 = (1U << 18) , VECTOR_SM3 = (1U << 19) , VECTOR_SM4 = (1U << 20) ,
  SSE2 = (1U << 0) , SSSE3 = (1U << 1) , AVX2 = (1U << 2) , AVX512 = (1U << 3) ,
  RDTSC = (1U << 6) , ADX = (1U << 7) , BMI = (1U << 8) , GFNI = (1U << 9) ,
  RDRAND = (1U << 10) , RDSEED = (1U << 11) , AESNI = (1U << 16) , CLMUL = (1U << 17) ,
  SHA = (1U << 20) , SHA512 = (1U << 21) , AVX2_AES = (1U << 22) , AVX512_AES = (1U << 23) ,
  AVX2_CLMUL = (1U << 24) , AVX512_CLMUL = (1U << 25) , SM3 = (1U << 22) , SM4 = (1U << 23) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL
}
enum  Bit : uint32_t {
  NEON = (1U << 0) , SVE = (1U << 1) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SHA3 = (1U << 20) , SHA2_512 = (1U << 21) ,
  SM3 = (1U << 22) , SM4 = (1U << 23) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , NEON = (1U << 0) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , LSX = (1U << 0) , LASX = (1U << 1) , CRYPTO = (1U << 2) ,
  SIMD_4X32 = NEON , ALTIVEC = (1U << 0) , POWER_CRYPTO = (1U << 1) , DARN = (1U << 2) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL , SCALAR_AES = (1U << 0) ,
  SCALAR_SHA256 = (1U << 1) , SCALAR_SM3 = (1U << 2) , SCALAR_SM4 = (1U << 3) , VECTOR = (1 << 16) ,
  VECTOR_AES = (1U << 17) , VECTOR_SHA256 = (1U << 18) , VECTOR_SM3 = (1U << 19) , VECTOR_SM4 = (1U << 20) ,
  SSE2 = (1U << 0) , SSSE3 = (1U << 1) , AVX2 = (1U << 2) , AVX512 = (1U << 3) ,
  RDTSC = (1U << 6) , ADX = (1U << 7) , BMI = (1U << 8) , GFNI = (1U << 9) ,
  RDRAND = (1U << 10) , RDSEED = (1U << 11) , AESNI = (1U << 16) , CLMUL = (1U << 17) ,
  SHA = (1U << 20) , SHA512 = (1U << 21) , AVX2_AES = (1U << 22) , AVX512_AES = (1U << 23) ,
  AVX2_CLMUL = (1U << 24) , AVX512_CLMUL = (1U << 25) , SM3 = (1U << 22) , SM4 = (1U << 23) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL
}
enum  Bit : uint32_t {
  NEON = (1U << 0) , SVE = (1U << 1) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SHA3 = (1U << 20) , SHA2_512 = (1U << 21) ,
  SM3 = (1U << 22) , SM4 = (1U << 23) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , NEON = (1U << 0) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , LSX = (1U << 0) , LASX = (1U << 1) , CRYPTO = (1U << 2) ,
  SIMD_4X32 = NEON , ALTIVEC = (1U << 0) , POWER_CRYPTO = (1U << 1) , DARN = (1U << 2) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL , SCALAR_AES = (1U << 0) ,
  SCALAR_SHA256 = (1U << 1) , SCALAR_SM3 = (1U << 2) , SCALAR_SM4 = (1U << 3) , VECTOR = (1 << 16) ,
  VECTOR_AES = (1U << 17) , VECTOR_SHA256 = (1U << 18) , VECTOR_SM3 = (1U << 19) , VECTOR_SM4 = (1U << 20) ,
  SSE2 = (1U << 0) , SSSE3 = (1U << 1) , AVX2 = (1U << 2) , AVX512 = (1U << 3) ,
  RDTSC = (1U << 6) , ADX = (1U << 7) , BMI = (1U << 8) , GFNI = (1U << 9) ,
  RDRAND = (1U << 10) , RDSEED = (1U << 11) , AESNI = (1U << 16) , CLMUL = (1U << 17) ,
  SHA = (1U << 20) , SHA512 = (1U << 21) , AVX2_AES = (1U << 22) , AVX512_AES = (1U << 23) ,
  AVX2_CLMUL = (1U << 24) , AVX512_CLMUL = (1U << 25) , SM3 = (1U << 22) , SM4 = (1U << 23) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL
}
enum  Bit : uint32_t {
  NEON = (1U << 0) , SVE = (1U << 1) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SHA3 = (1U << 20) , SHA2_512 = (1U << 21) ,
  SM3 = (1U << 22) , SM4 = (1U << 23) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , NEON = (1U << 0) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , LSX = (1U << 0) , LASX = (1U << 1) , CRYPTO = (1U << 2) ,
  SIMD_4X32 = NEON , ALTIVEC = (1U << 0) , POWER_CRYPTO = (1U << 1) , DARN = (1U << 2) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL , SCALAR_AES = (1U << 0) ,
  SCALAR_SHA256 = (1U << 1) , SCALAR_SM3 = (1U << 2) , SCALAR_SM4 = (1U << 3) , VECTOR = (1 << 16) ,
  VECTOR_AES = (1U << 17) , VECTOR_SHA256 = (1U << 18) , VECTOR_SM3 = (1U << 19) , VECTOR_SM4 = (1U << 20) ,
  SSE2 = (1U << 0) , SSSE3 = (1U << 1) , AVX2 = (1U << 2) , AVX512 = (1U << 3) ,
  RDTSC = (1U << 6) , ADX = (1U << 7) , BMI = (1U << 8) , GFNI = (1U << 9) ,
  RDRAND = (1U << 10) , RDSEED = (1U << 11) , AESNI = (1U << 16) , CLMUL = (1U << 17) ,
  SHA = (1U << 20) , SHA512 = (1U << 21) , AVX2_AES = (1U << 22) , AVX512_AES = (1U << 23) ,
  AVX2_CLMUL = (1U << 24) , AVX512_CLMUL = (1U << 25) , SM3 = (1U << 22) , SM4 = (1U << 23) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL
}
enum  Bit : uint32_t {
  NEON = (1U << 0) , SVE = (1U << 1) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SHA3 = (1U << 20) , SHA2_512 = (1U << 21) ,
  SM3 = (1U << 22) , SM4 = (1U << 23) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , NEON = (1U << 0) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , LSX = (1U << 0) , LASX = (1U << 1) , CRYPTO = (1U << 2) ,
  SIMD_4X32 = NEON , ALTIVEC = (1U << 0) , POWER_CRYPTO = (1U << 1) , DARN = (1U << 2) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL , SCALAR_AES = (1U << 0) ,
  SCALAR_SHA256 = (1U << 1) , SCALAR_SM3 = (1U << 2) , SCALAR_SM4 = (1U << 3) , VECTOR = (1 << 16) ,
  VECTOR_AES = (1U << 17) , VECTOR_SHA256 = (1U << 18) , VECTOR_SM3 = (1U << 19) , VECTOR_SM4 = (1U << 20) ,
  SSE2 = (1U << 0) , SSSE3 = (1U << 1) , AVX2 = (1U << 2) , AVX512 = (1U << 3) ,
  RDTSC = (1U << 6) , ADX = (1U << 7) , BMI = (1U << 8) , GFNI = (1U << 9) ,
  RDRAND = (1U << 10) , RDSEED = (1U << 11) , AESNI = (1U << 16) , CLMUL = (1U << 17) ,
  SHA = (1U << 20) , SHA512 = (1U << 21) , AVX2_AES = (1U << 22) , AVX512_AES = (1U << 23) ,
  AVX2_CLMUL = (1U << 24) , AVX512_CLMUL = (1U << 25) , SM3 = (1U << 22) , SM4 = (1U << 23) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL
}
enum  Bit : uint32_t {
  NEON = (1U << 0) , SVE = (1U << 1) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SHA3 = (1U << 20) , SHA2_512 = (1U << 21) ,
  SM3 = (1U << 22) , SM4 = (1U << 23) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , NEON = (1U << 0) , AES = (1U << 16) , PMULL = (1U << 17) ,
  SHA1 = (1U << 18) , SHA2 = (1U << 19) , SIMD_4X32 = NEON , HW_AES = AES ,
  HW_CLMUL = PMULL , LSX = (1U << 0) , LASX = (1U << 1) , CRYPTO = (1U << 2) ,
  SIMD_4X32 = NEON , ALTIVEC = (1U << 0) , POWER_CRYPTO = (1U << 1) , DARN = (1U << 2) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL , SCALAR_AES = (1U << 0) ,
  SCALAR_SHA256 = (1U << 1) , SCALAR_SM3 = (1U << 2) , SCALAR_SM4 = (1U << 3) , VECTOR = (1 << 16) ,
  VECTOR_AES = (1U << 17) , VECTOR_SHA256 = (1U << 18) , VECTOR_SM3 = (1U << 19) , VECTOR_SM4 = (1U << 20) ,
  SSE2 = (1U << 0) , SSSE3 = (1U << 1) , AVX2 = (1U << 2) , AVX512 = (1U << 3) ,
  RDTSC = (1U << 6) , ADX = (1U << 7) , BMI = (1U << 8) , GFNI = (1U << 9) ,
  RDRAND = (1U << 10) , RDSEED = (1U << 11) , AESNI = (1U << 16) , CLMUL = (1U << 17) ,
  SHA = (1U << 20) , SHA512 = (1U << 21) , AVX2_AES = (1U << 22) , AVX512_AES = (1U << 23) ,
  AVX2_CLMUL = (1U << 24) , AVX512_CLMUL = (1U << 25) , SM3 = (1U << 22) , SM4 = (1U << 23) ,
  SIMD_4X32 = NEON , HW_AES = AES , HW_CLMUL = PMULL
}

Public Member Functions

uint32_t as_u32 () const
uint32_t as_u32 () const
uint32_t as_u32 () const
uint32_t as_u32 () const
uint32_t as_u32 () const
uint32_t as_u32 () const
uint32_t as_u32 () const
 CPUFeature (Bit b)
 CPUFeature (Bit b)
 CPUFeature (Bit b)
 CPUFeature (Bit b)
 CPUFeature (Bit b)
 CPUFeature (Bit b)
 CPUFeature (Bit)
std::string to_string () const
std::string to_string () const
std::string to_string () const
std::string to_string () const
std::string to_string () const
std::string to_string () const
std::string to_string () const

Static Public Member Functions

static std::optional< CPUFeaturefrom_string (std::string_view s)
static std::optional< CPUFeaturefrom_string (std::string_view s)
static std::optional< CPUFeaturefrom_string (std::string_view s)
static std::optional< CPUFeaturefrom_string (std::string_view s)
static std::optional< CPUFeaturefrom_string (std::string_view s)
static std::optional< CPUFeaturefrom_string (std::string_view s)
static std::optional< CPUFeaturefrom_string (std::string_view)

Detailed Description

Definition at line 24 of file cpuid.h.

Member Enumeration Documentation

◆ Bit [1/7]

enum Botan::CPUFeature::Bit : uint32_t
Enumerator
NEON 
SVE 
AES 
PMULL 
SHA1 
SHA2 
SHA3 
SHA2_512 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 
NEON 
AES 
PMULL 
SHA1 
SHA2 
SIMD_4X32 
HW_AES 
HW_CLMUL 
LSX 
LASX 
CRYPTO 
SIMD_4X32 
ALTIVEC 
POWER_CRYPTO 
DARN 
SIMD_4X32 
HW_AES 
HW_CLMUL 
SCALAR_AES 
SCALAR_SHA256 
SCALAR_SM3 
SCALAR_SM4 
VECTOR 
VECTOR_AES 
VECTOR_SHA256 
VECTOR_SM3 
VECTOR_SM4 
SSE2 
SSSE3 
AVX2 
AVX512 
RDTSC 
ADX 
BMI 
GFNI 
RDRAND 
RDSEED 
AESNI 
CLMUL 
SHA 
SHA512 
AVX2_AES 
AVX512_AES 
AVX2_CLMUL 
AVX512_CLMUL 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 

Definition at line 26 of file cpuid.h.

26: uint32_t {};

◆ Bit [2/7]

enum Botan::CPUFeature::Bit : uint32_t
Enumerator
NEON 
SVE 
AES 
PMULL 
SHA1 
SHA2 
SHA3 
SHA2_512 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 
NEON 
AES 
PMULL 
SHA1 
SHA2 
SIMD_4X32 
HW_AES 
HW_CLMUL 
LSX 
LASX 
CRYPTO 
SIMD_4X32 
ALTIVEC 
POWER_CRYPTO 
DARN 
SIMD_4X32 
HW_AES 
HW_CLMUL 
SCALAR_AES 
SCALAR_SHA256 
SCALAR_SM3 
SCALAR_SM4 
VECTOR 
VECTOR_AES 
VECTOR_SHA256 
VECTOR_SM3 
VECTOR_SM4 
SSE2 
SSSE3 
AVX2 
AVX512 
RDTSC 
ADX 
BMI 
GFNI 
RDRAND 
RDSEED 
AESNI 
CLMUL 
SHA 
SHA512 
AVX2_AES 
AVX512_AES 
AVX2_CLMUL 
AVX512_CLMUL 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 

Definition at line 20 of file cpuid_features.h.

20 : uint32_t {
21 NEON = (1U << 0),
22 SVE = (1U << 1),
23 AES = (1U << 16),
24 PMULL = (1U << 17),
25 SHA1 = (1U << 18),
26 SHA2 = (1U << 19),
27 SHA3 = (1U << 20),
28 SHA2_512 = (1U << 21),
29 SM3 = (1U << 22),
30 SM4 = (1U << 23),
31
33 HW_AES = AES,
35 };

◆ Bit [3/7]

enum Botan::CPUFeature::Bit : uint32_t
Enumerator
NEON 
SVE 
AES 
PMULL 
SHA1 
SHA2 
SHA3 
SHA2_512 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 
NEON 
AES 
PMULL 
SHA1 
SHA2 
SIMD_4X32 
HW_AES 
HW_CLMUL 
LSX 
LASX 
CRYPTO 
SIMD_4X32 
ALTIVEC 
POWER_CRYPTO 
DARN 
SIMD_4X32 
HW_AES 
HW_CLMUL 
SCALAR_AES 
SCALAR_SHA256 
SCALAR_SM3 
SCALAR_SM4 
VECTOR 
VECTOR_AES 
VECTOR_SHA256 
VECTOR_SM3 
VECTOR_SM4 
SSE2 
SSSE3 
AVX2 
AVX512 
RDTSC 
ADX 
BMI 
GFNI 
RDRAND 
RDSEED 
AESNI 
CLMUL 
SHA 
SHA512 
AVX2_AES 
AVX512_AES 
AVX2_CLMUL 
AVX512_CLMUL 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 

Definition at line 20 of file cpuid_features.h.

20 : uint32_t {
21 NEON = (1U << 0),
22 AES = (1U << 16),
23 PMULL = (1U << 17),
24 SHA1 = (1U << 18),
25 SHA2 = (1U << 19),
26
28 HW_AES = AES,
30 };

◆ Bit [4/7]

enum Botan::CPUFeature::Bit : uint32_t
Enumerator
NEON 
SVE 
AES 
PMULL 
SHA1 
SHA2 
SHA3 
SHA2_512 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 
NEON 
AES 
PMULL 
SHA1 
SHA2 
SIMD_4X32 
HW_AES 
HW_CLMUL 
LSX 
LASX 
CRYPTO 
SIMD_4X32 
ALTIVEC 
POWER_CRYPTO 
DARN 
SIMD_4X32 
HW_AES 
HW_CLMUL 
SCALAR_AES 
SCALAR_SHA256 
SCALAR_SM3 
SCALAR_SM4 
VECTOR 
VECTOR_AES 
VECTOR_SHA256 
VECTOR_SM3 
VECTOR_SM4 
SSE2 
SSSE3 
AVX2 
AVX512 
RDTSC 
ADX 
BMI 
GFNI 
RDRAND 
RDSEED 
AESNI 
CLMUL 
SHA 
SHA512 
AVX2_AES 
AVX512_AES 
AVX2_CLMUL 
AVX512_CLMUL 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 

Definition at line 20 of file cpuid_features.h.

20 : uint32_t {
21 LSX = (1U << 0),
22 LASX = (1U << 1),
23 CRYPTO = (1U << 2),
24
25 SIMD_4X32 = LSX,
26 };

◆ Bit [5/7]

enum Botan::CPUFeature::Bit : uint32_t
Enumerator
NEON 
SVE 
AES 
PMULL 
SHA1 
SHA2 
SHA3 
SHA2_512 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 
NEON 
AES 
PMULL 
SHA1 
SHA2 
SIMD_4X32 
HW_AES 
HW_CLMUL 
LSX 
LASX 
CRYPTO 
SIMD_4X32 
ALTIVEC 
POWER_CRYPTO 
DARN 
SIMD_4X32 
HW_AES 
HW_CLMUL 
SCALAR_AES 
SCALAR_SHA256 
SCALAR_SM3 
SCALAR_SM4 
VECTOR 
VECTOR_AES 
VECTOR_SHA256 
VECTOR_SM3 
VECTOR_SM4 
SSE2 
SSSE3 
AVX2 
AVX512 
RDTSC 
ADX 
BMI 
GFNI 
RDRAND 
RDSEED 
AESNI 
CLMUL 
SHA 
SHA512 
AVX2_AES 
AVX512_AES 
AVX2_CLMUL 
AVX512_CLMUL 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 

Definition at line 20 of file cpuid_features.h.

20 : uint32_t /* NOLINT(performance-enum-size) */ {
21 ALTIVEC = (1U << 0),
22 POWER_CRYPTO = (1U << 1),
23 DARN = (1U << 2),
24
28 };

◆ Bit [6/7]

enum Botan::CPUFeature::Bit : uint32_t
Enumerator
NEON 
SVE 
AES 
PMULL 
SHA1 
SHA2 
SHA3 
SHA2_512 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 
NEON 
AES 
PMULL 
SHA1 
SHA2 
SIMD_4X32 
HW_AES 
HW_CLMUL 
LSX 
LASX 
CRYPTO 
SIMD_4X32 
ALTIVEC 
POWER_CRYPTO 
DARN 
SIMD_4X32 
HW_AES 
HW_CLMUL 
SCALAR_AES 
SCALAR_SHA256 
SCALAR_SM3 
SCALAR_SM4 
VECTOR 
VECTOR_AES 
VECTOR_SHA256 
VECTOR_SM3 
VECTOR_SM4 
SSE2 
SSSE3 
AVX2 
AVX512 
RDTSC 
ADX 
BMI 
GFNI 
RDRAND 
RDSEED 
AESNI 
CLMUL 
SHA 
SHA512 
AVX2_AES 
AVX512_AES 
AVX2_CLMUL 
AVX512_CLMUL 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 

Definition at line 20 of file cpuid_features.h.

20 : uint32_t {
21 SCALAR_AES = (1U << 0),
22 SCALAR_SHA256 = (1U << 1),
23 SCALAR_SM3 = (1U << 2),
24 SCALAR_SM4 = (1U << 3),
25
26 VECTOR = (1 << 16),
27 VECTOR_AES = (1U << 17),
28 VECTOR_SHA256 = (1U << 18),
29 VECTOR_SM3 = (1U << 19),
30 VECTOR_SM4 = (1U << 20),
31 };

◆ Bit [7/7]

enum Botan::CPUFeature::Bit : uint32_t
Enumerator
NEON 
SVE 
AES 
PMULL 
SHA1 
SHA2 
SHA3 
SHA2_512 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 
NEON 
AES 
PMULL 
SHA1 
SHA2 
SIMD_4X32 
HW_AES 
HW_CLMUL 
LSX 
LASX 
CRYPTO 
SIMD_4X32 
ALTIVEC 
POWER_CRYPTO 
DARN 
SIMD_4X32 
HW_AES 
HW_CLMUL 
SCALAR_AES 
SCALAR_SHA256 
SCALAR_SM3 
SCALAR_SM4 
VECTOR 
VECTOR_AES 
VECTOR_SHA256 
VECTOR_SM3 
VECTOR_SM4 
SSE2 
SSSE3 
AVX2 
AVX512 
RDTSC 
ADX 
BMI 
GFNI 
RDRAND 
RDSEED 
AESNI 
CLMUL 
SHA 
SHA512 
AVX2_AES 
AVX512_AES 
AVX2_CLMUL 
AVX512_CLMUL 
SM3 
SM4 
SIMD_4X32 
HW_AES 
HW_CLMUL 

Definition at line 20 of file cpuid_features.h.

20 : uint32_t {
21 SSE2 = (1U << 0),
22 SSSE3 = (1U << 1),
23 AVX2 = (1U << 2),
24 AVX512 = (1U << 3),
25
26 RDTSC = (1U << 6),
27 ADX = (1U << 7),
28 BMI = (1U << 8),
29 GFNI = (1U << 9),
30 RDRAND = (1U << 10),
31 RDSEED = (1U << 11),
32
33 // Crypto-specific ISAs
34 AESNI = (1U << 16),
35 CLMUL = (1U << 17),
36 SHA = (1U << 20),
37 SHA512 = (1U << 21),
38 AVX2_AES = (1U << 22),
39 AVX512_AES = (1U << 23),
40 AVX2_CLMUL = (1U << 24),
41 AVX512_CLMUL = (1U << 25),
42 SM3 = (1U << 26),
43 SM4 = (1U << 27),
44
46 HW_AES = AESNI,
48 };

Constructor & Destructor Documentation

◆ CPUFeature() [1/7]

Botan::CPUFeature::CPUFeature ( Bit )
inline

Definition at line 30 of file cpuid.h.

30{}

◆ CPUFeature() [2/7]

Botan::CPUFeature::CPUFeature ( Bit b)
inline

Definition at line 37 of file cpuid_features.h.

37: m_bit(b) {} // NOLINT(*-explicit-conversions)

◆ CPUFeature() [3/7]

Botan::CPUFeature::CPUFeature ( Bit b)
inline

Definition at line 32 of file cpuid_features.h.

32: m_bit(b) {} // NOLINT(*-explicit-conversions)

◆ CPUFeature() [4/7]

Botan::CPUFeature::CPUFeature ( Bit b)
inline

Definition at line 28 of file cpuid_features.h.

28: m_bit(b) {} // NOLINT(*-explicit-conversions)

◆ CPUFeature() [5/7]

Botan::CPUFeature::CPUFeature ( Bit b)
inline

Definition at line 30 of file cpuid_features.h.

30: m_bit(b) {} // NOLINT(*-explicit-conversions)

◆ CPUFeature() [6/7]

Botan::CPUFeature::CPUFeature ( Bit b)
inline

Definition at line 33 of file cpuid_features.h.

33: m_bit(b) {}

◆ CPUFeature() [7/7]

Botan::CPUFeature::CPUFeature ( Bit b)
inline

Definition at line 50 of file cpuid_features.h.

50: m_bit(b) {} // NOLINT(*-explicit-conversions)

Member Function Documentation

◆ as_u32() [1/7]

uint32_t Botan::CPUFeature::as_u32 ( ) const

Definition at line 20 of file cpuid.cpp.

20 {
21 throw Invalid_State("CPUFeature invalid bit");
22}

Referenced by Botan::CPUID::check(), Botan::CPUID::check(), Botan::CPUID::clear_cpuid_bit(), Botan::CPUID::has(), Botan::CPUID::has(), and Botan::CPUID::if_set().

◆ as_u32() [2/7]

uint32_t Botan::CPUFeature::as_u32 ( ) const
inline

Definition at line 39 of file cpuid_features.h.

39{ return static_cast<uint32_t>(m_bit); }

◆ as_u32() [3/7]

uint32_t Botan::CPUFeature::as_u32 ( ) const
inline

Definition at line 34 of file cpuid_features.h.

34{ return static_cast<uint32_t>(m_bit); }

◆ as_u32() [4/7]

uint32_t Botan::CPUFeature::as_u32 ( ) const
inline

Definition at line 30 of file cpuid_features.h.

30{ return static_cast<uint32_t>(m_bit); }

◆ as_u32() [5/7]

uint32_t Botan::CPUFeature::as_u32 ( ) const
inline

Definition at line 32 of file cpuid_features.h.

32{ return static_cast<uint32_t>(m_bit); }

◆ as_u32() [6/7]

uint32_t Botan::CPUFeature::as_u32 ( ) const
inline

Definition at line 35 of file cpuid_features.h.

35{ return static_cast<uint32_t>(m_bit); }

◆ as_u32() [7/7]

uint32_t Botan::CPUFeature::as_u32 ( ) const
inline

Definition at line 52 of file cpuid_features.h.

52{ return static_cast<uint32_t>(m_bit); }

◆ from_string() [1/7]

std::optional< CPUFeature > Botan::CPUFeature::from_string ( std::string_view s)
static

◆ from_string() [2/7]

std::optional< CPUFeature > Botan::CPUFeature::from_string ( std::string_view s)
static

◆ from_string() [3/7]

std::optional< CPUFeature > Botan::CPUFeature::from_string ( std::string_view s)
static

◆ from_string() [4/7]

std::optional< CPUFeature > Botan::CPUFeature::from_string ( std::string_view s)
static

◆ from_string() [5/7]

std::optional< CPUFeature > Botan::CPUFeature::from_string ( std::string_view s)
static

◆ from_string() [6/7]

std::optional< CPUFeature > Botan::CPUFeature::from_string ( std::string_view s)
static

◆ from_string() [7/7]

std::optional< CPUFeature > Botan::CPUFeature::from_string ( std::string_view tok)
static

Definition at line 24 of file cpuid.cpp.

24 {
25 return {};
26}

Referenced by Botan::CPUID::bit_from_string().

◆ to_string() [1/7]

std::string Botan::CPUFeature::to_string ( ) const

Definition at line 28 of file cpuid.cpp.

28 {
29 throw Invalid_State("CPUFeature invalid bit");
30}

Referenced by Botan::CPUID::check(), and Botan::CPUID::check().

◆ to_string() [2/7]

std::string Botan::CPUFeature::to_string ( ) const

◆ to_string() [3/7]

std::string Botan::CPUFeature::to_string ( ) const

◆ to_string() [4/7]

std::string Botan::CPUFeature::to_string ( ) const

◆ to_string() [5/7]

std::string Botan::CPUFeature::to_string ( ) const

◆ to_string() [6/7]

std::string Botan::CPUFeature::to_string ( ) const

◆ to_string() [7/7]

std::string Botan::CPUFeature::to_string ( ) const

The documentation for this class was generated from the following files: