10#include <KSharedConfig>
19 return xsimd::current_arch::name();
27 virtual QString
name()
const = 0;
30template <
typename arch>
32 QString
name()
const override {
37#if XSIMD_VERSION_MAJOR < 13
40 QString
name()
const override {
47 template <
typename arch>
58 return archDetector->
name();
61#if (XSIMD_VERSION_MAJOR >= 13 && XSIMD_VERSION_MINOR >=1) \
62 || defined(XSIMD_HAS_ARCH_LIST_FIX_PR1032)
63#define XSIMD_SUPPORTS_NEW_ARCH_DETECTION
64#elif XSIMD_VERSION_MAJOR < 13
65#define XSIMD_SUPPORTS_OLD_ARCH_DETECTION
78#ifdef XSIMD_SUPPORTS_NEW_ARCH_DETECTION
79 if (xsimd::available_architectures().has(arch)) {
80 l.append(A::name()).append(
" ");
92 static const QString archs = []() {
94#ifdef XSIMD_SUPPORTS_NEW_ARCH_DETECTION
96#elif defined XSIMD_SUPPORTS_OLD_ARCH_DETECTION
98 auto available = xsimd::available_architectures();
99#define CHECK_ARCH(arch) if (available.arch) archsList << #arch
120 archs = archsList.join(
' ');
Eigen::Matrix< double, 4, 2 > S
static QString baseArchName()
static QString supportedInstructionSets()
static QString bestArchName()
virtual ~ArchToStringBase()=default
virtual QString name() const =0
static ArchToStringBase * create()
QString name() const override
QString name() const override
void operator()(A arch) const
is_supported_arch(S &log)