Initial import
This commit is contained in:
commit
56a50eead3
820 changed files with 192077 additions and 0 deletions
19
libLSS/tools/cpu/feature_check.hpp
Normal file
19
libLSS/tools/cpu/feature_check.hpp
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*+
|
||||
ARES/HADES/BORG Package -- ./libLSS/tools/cpu/feature_check.hpp
|
||||
Copyright (C) 2014-2020 Guilhem Lavaux <guilhem.lavaux@iap.fr>
|
||||
Copyright (C) 2009-2020 Jens Jasche <jens.jasche@fysik.su.se>
|
||||
|
||||
Additional contributions from:
|
||||
Guilhem Lavaux <guilhem.lavaux@iap.fr> (2023)
|
||||
|
||||
+*/
|
||||
#ifndef __LIBLSS_TOOLS_CPUCHECK_HPP
|
||||
#define __LIBLSS_TOOLS_CPUCHECK_HPP
|
||||
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
||||
# include "feature_check_gnuc.hpp"
|
||||
#else
|
||||
# include "feature_check_other.hpp"
|
||||
#endif
|
||||
|
||||
#endif
|
90
libLSS/tools/cpu/feature_check_gnuc.hpp
Normal file
90
libLSS/tools/cpu/feature_check_gnuc.hpp
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*+
|
||||
ARES/HADES/BORG Package -- ./libLSS/tools/cpu/feature_check_gnuc.hpp
|
||||
Copyright (C) 2014-2020 Guilhem Lavaux <guilhem.lavaux@iap.fr>
|
||||
Copyright (C) 2009-2020 Jens Jasche <jens.jasche@fysik.su.se>
|
||||
|
||||
Additional contributions from:
|
||||
Guilhem Lavaux <guilhem.lavaux@iap.fr> (2023)
|
||||
|
||||
+*/
|
||||
#include <string>
|
||||
|
||||
namespace LibLSS {
|
||||
static inline bool check_compatibility(std::string &features) {
|
||||
__builtin_cpu_init();
|
||||
features = "";
|
||||
#ifdef __MMX__
|
||||
if (!__builtin_cpu_supports("mmx"))
|
||||
return false;
|
||||
features += "MMX ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("mmx"))
|
||||
features += "[!MMX] ";
|
||||
#endif
|
||||
#ifdef __AVX__
|
||||
if (!__builtin_cpu_supports("avx"))
|
||||
return false;
|
||||
features += "AVX ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("avx"))
|
||||
features += "[!AVX] ";
|
||||
#endif
|
||||
#ifdef __AVX2__
|
||||
if (!__builtin_cpu_supports("avx2"))
|
||||
return false;
|
||||
features += "AVX2 ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("avx2"))
|
||||
features += "[!AVX2] ";
|
||||
#endif
|
||||
#ifdef __AVX512F__
|
||||
if (!__builtin_cpu_supports("avx512f"))
|
||||
return false;
|
||||
features += "AVX512F ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("avx512f"))
|
||||
features += "[!AVX512F] ";
|
||||
#endif
|
||||
#ifdef __SSE__
|
||||
if (!__builtin_cpu_supports("sse"))
|
||||
return false;
|
||||
features += "SSE ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("sse"))
|
||||
features += "[!SSE] ";
|
||||
#endif
|
||||
#ifdef __SSE2__
|
||||
if (!__builtin_cpu_supports("sse2"))
|
||||
return false;
|
||||
features += "SSE2 ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("sse2"))
|
||||
features += "[!SSE2] ";
|
||||
#endif
|
||||
#ifdef __SSE3__
|
||||
if (!__builtin_cpu_supports("sse3"))
|
||||
return false;
|
||||
features += "SSE3 ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("sse3"))
|
||||
features += "[!SSE3] ";
|
||||
#endif
|
||||
#ifdef __SSE4_1__
|
||||
if (!__builtin_cpu_supports("sse4.1"))
|
||||
return false;
|
||||
features += "SSE4.1 ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("sse4.1"))
|
||||
features += "[!SSE4.1] ";
|
||||
#endif
|
||||
#ifdef __SSE4_2__
|
||||
if (!__builtin_cpu_supports("sse4.2"))
|
||||
return false;
|
||||
features += "SSE4.2 ";
|
||||
#else
|
||||
if (__builtin_cpu_supports("sse4.2"))
|
||||
features += "[!SSE4.2] ";
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
} // namespace LibLSS
|
15
libLSS/tools/cpu/feature_check_other.hpp
Normal file
15
libLSS/tools/cpu/feature_check_other.hpp
Normal file
|
@ -0,0 +1,15 @@
|
|||
/*+
|
||||
ARES/HADES/BORG Package -- ./libLSS/tools/cpu/feature_check_other.hpp
|
||||
Copyright (C) 2014-2020 Guilhem Lavaux <guilhem.lavaux@iap.fr>
|
||||
Copyright (C) 2009-2020 Jens Jasche <jens.jasche@fysik.su.se>
|
||||
|
||||
Additional contributions from:
|
||||
Guilhem Lavaux <guilhem.lavaux@iap.fr> (2023)
|
||||
|
||||
+*/
|
||||
namespace LibLSS {
|
||||
static inline bool check_compatibility(std::string &features) {
|
||||
features = "*UNKNOWN*";
|
||||
return true;
|
||||
}
|
||||
} // namespace LibLSS
|
Loading…
Add table
Add a link
Reference in a new issue