7#include <botan/internal/cpuid.h>
9#include <botan/assert.h>
10#include <botan/internal/target_info.h>
12#if defined(BOTAN_HAS_OS_UTILS)
13 #include <botan/internal/os_utils.h>
18uint32_t CPUID::CPUID_Data::detect_cpu_features(uint32_t allowed) {
21#if defined(BOTAN_HAS_OS_UTILS)
24 enum class LoongArch64_hwcap_bit : uint64_t {
27 CRYPTO_bit = (1 << 8),
30 const auto hwcap = auxval->first;
32 feat |=
if_set(hwcap, LoongArch64_hwcap_bit::LSX_bit, CPUFeature::Bit::LSX, allowed);
33 feat |=
if_set(hwcap, LoongArch64_hwcap_bit::LASX_bit, CPUFeature::Bit::LASX, allowed);
34 feat |=
if_set(hwcap, LoongArch64_hwcap_bit::CRYPTO_bit, CPUFeature::Bit::CRYPTO, allowed);
static uint32_t if_set(uint64_t cpuid, T flag, CPUID::Feature bit, uint32_t allowed)
std::optional< std::pair< unsigned long, unsigned long > > get_auxval_hwcap()