156 {
157#if defined(BOTAN_TARGET_CPU_IS_X86_FAMILY)
158 if(tok == "sse2" || tok == "simd") {
159 return {CPUID::CPUID_SSE2_BIT};
160 } else if(tok == "ssse3") {
161 return {CPUID::CPUID_SSSE3_BIT};
162 } else if(tok == "aesni" || tok == "aes_ni") {
163
164 return {CPUID::CPUID_AESNI_BIT};
165 } else if(tok == "clmul") {
166 return {CPUID::CPUID_CLMUL_BIT};
167 } else if(tok == "avx2") {
168 return {CPUID::CPUID_AVX2_BIT};
169 } else if(tok == "avx512") {
170 return {CPUID::CPUID_AVX512_BIT};
171 }
172
173 else if(tok == "sha" || tok == "intel_sha") {
174 return {CPUID::CPUID_SHA_BIT};
175 } else if(tok == "rdtsc") {
176 return {CPUID::CPUID_RDTSC_BIT};
177 } else if(tok == "bmi2") {
178 return {CPUID::CPUID_BMI_BIT};
179 } else if(tok == "adx") {
180 return {CPUID::CPUID_ADX_BIT};
181 } else if(tok == "gfni") {
182 return {CPUID::CPUID_GFNI_BIT};
183 } else if(tok == "rdrand") {
184 return {CPUID::CPUID_RDRAND_BIT};
185 } else if(tok == "rdseed") {
186 return {CPUID::CPUID_RDSEED_BIT};
187 } else if(tok == "avx512_aes") {
188 return {CPUID::CPUID_AVX512_AES_BIT};
189 } else if(tok == "avx512_clmul") {
190 return {CPUID::CPUID_AVX512_CLMUL_BIT};
191 } else if(tok == "avx2_vaes") {
192 return {CPUID::CPUID_AVX2_AES_BIT};
193 } else if(tok == "avx2_clmul") {
194 return {CPUID::CPUID_AVX2_CLMUL_BIT};
195 } else if(tok == "intel_sm3") {
196 return {CPUID::CPUID_SM3_BIT};
197 } else if(tok == "intel_sm4") {
198 return {CPUID::CPUID_SM4_BIT};
199 }
200
201#elif defined(BOTAN_TARGET_CPU_IS_PPC_FAMILY)
202 if(tok == "altivec" || tok == "simd") {
203 return {CPUID::CPUID_ALTIVEC_BIT};
204 } else if(tok == "power_crypto") {
205 return {CPUID::CPUID_POWER_CRYPTO_BIT};
206 } else if(tok == "darn_rng") {
207 return {CPUID::CPUID_DARN_BIT};
208 }
209
210#elif defined(BOTAN_TARGET_CPU_IS_ARM_FAMILY)
211 if(tok == "neon" || tok == "simd") {
212 return {CPUID::CPUID_ARM_NEON_BIT};
213 } else if(tok == "arm_sve") {
214 return {CPUID::CPUID_ARM_SVE_BIT};
215 } else if(tok == "armv8sha1" || tok == "arm_sha1") {
216 return {CPUID::CPUID_ARM_SHA1_BIT};
217 } else if(tok == "armv8sha2" || tok == "arm_sha2") {
218 return {CPUID::CPUID_ARM_SHA2_BIT};
219 } else if(tok == "armv8aes" || tok == "arm_aes") {
220 return {CPUID::CPUID_ARM_AES_BIT};
221 } else if(tok == "armv8pmull" || tok == "arm_pmull") {
222 return {CPUID::CPUID_ARM_PMULL_BIT};
223 } else if(tok == "armv8sha3" || tok == "arm_sha3") {
224 return {CPUID::CPUID_ARM_SHA3_BIT};
225 } else if(tok == "armv8sha2_512" || tok == "arm_sha2_512") {
226 return {CPUID::CPUID_ARM_SHA2_512_BIT};
227 } else if(tok == "armv8sm3" || tok == "arm_sm3") {
228 return {CPUID::CPUID_ARM_SM3_BIT};
229 } else if(tok == "armv8sm4" || tok == "arm_sm4") {
230 return {CPUID::CPUID_ARM_SM4_BIT};
231 }
232
233#else
235#endif
236
237 return {};
238}