#include "ruy/cpuinfo.h"
#include <algorithm>
#include <cstdint>
#include <limits>
#include "ruy/check_macros.h"
#include "ruy/cpu_cache_params.h"
#include "ruy/platform.h"
#ifdef RUY_HAVE_CPUINFO
#include <cpuinfo.h>
#endif
namespace ruy {
namespace {
void MakeDummyCacheParams(CpuCacheParams* result) { … }
}
#ifdef RUY_HAVE_CPUINFO
CpuInfo::~CpuInfo() { … }
bool CpuInfo::EnsureInitialized() { … }
namespace {
bool QueryCacheParams(CpuCacheParams* cache_params) { … }
}
CpuInfo::InitStatus CpuInfo::Initialize() { … }
bool CpuInfo::NeonDotprod() { … }
bool CpuInfo::Sse42() { … }
bool CpuInfo::Avx2Fma() { … }
bool CpuInfo::Avx() { … }
bool CpuInfo::Avx512() { … }
bool CpuInfo::AvxVnni() { … }
bool CpuInfo::CurrentCpuIsA55ish() { … }
bool CpuInfo::CurrentCpuIsX1() { … }
#else
CpuInfo::~CpuInfo() {}
bool CpuInfo::EnsureInitialized() {
if (init_status_ == InitStatus::kNotYetAttempted) {
MakeDummyCacheParams(&cache_params_);
init_status_ = InitStatus::kInitialized;
}
RUY_DCHECK_EQ(init_status_, InitStatus::kInitialized);
return true;
}
bool CpuInfo::NeonDotprod() { return false; }
bool CpuInfo::Sse42() { return false; }
bool CpuInfo::Avx() { return false; }
bool CpuInfo::Avx2Fma() { return false; }
bool CpuInfo::Avx512() { return false; }
bool CpuInfo::AvxVnni() { return false; }
bool CpuInfo::CurrentCpuIsA55ish() { return false; }
bool CpuInfo::CurrentCpuIsX1() { return false; }
#endif
const CpuCacheParams& CpuInfo::CacheParams() { … }
}