7#include <botan/internal/cpuid_features.h>
9#include <botan/exceptn.h>
15 case CPUFeature::Bit::NEON:
17 case CPUFeature::Bit::SVE:
19 case CPUFeature::Bit::SHA1:
21 case CPUFeature::Bit::SHA2:
23 case CPUFeature::Bit::AES:
25 case CPUFeature::Bit::PMULL:
27 case CPUFeature::Bit::SHA3:
29 case CPUFeature::Bit::SHA2_512:
30 return "armv8sha2_512";
31 case CPUFeature::Bit::SM3:
33 case CPUFeature::Bit::SM4:
36 throw Invalid_State(
"CPUFeature invalid bit");
42 if(tok ==
"neon" || tok ==
"simd") {
43 return CPUFeature::Bit::NEON;
44 }
else if(tok ==
"sve" || tok ==
"arm_sve") {
45 return CPUFeature::Bit::SVE;
46 }
else if(tok ==
"armv8sha1" || tok ==
"arm_sha1") {
47 return CPUFeature::Bit::SHA1;
48 }
else if(tok ==
"armv8sha2" || tok ==
"arm_sha2") {
49 return CPUFeature::Bit::SHA2;
50 }
else if(tok ==
"armv8aes" || tok ==
"arm_aes") {
51 return CPUFeature::Bit::AES;
52 }
else if(tok ==
"armv8pmull" || tok ==
"arm_pmull") {
53 return CPUFeature::Bit::PMULL;
54 }
else if(tok ==
"armv8sha3" || tok ==
"arm_sha3") {
55 return CPUFeature::Bit::SHA3;
56 }
else if(tok ==
"armv8sha2_512" || tok ==
"arm_sha2_512") {
57 return CPUFeature::Bit::SHA2_512;
58 }
else if(tok ==
"armv8sm3" || tok ==
"arm_sm3") {
59 return CPUFeature::Bit::SM3;
60 }
else if(tok ==
"armv8sm4" || tok ==
"arm_sm4") {
61 return CPUFeature::Bit::SM4;
static std::optional< CPUFeature > from_string(std::string_view)
std::string to_string() const