]> wimlib.net Git - wimlib/blobdiff - include/wimlib/cpu_features.h
Improve runtime CPU feature detection
[wimlib] / include / wimlib / cpu_features.h
diff --git a/include/wimlib/cpu_features.h b/include/wimlib/cpu_features.h
new file mode 100644 (file)
index 0000000..ee6ef48
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef _WIMLIB_CPU_FEATURES_H
+#define _WIMLIB_CPU_FEATURES_H
+
+#include "wimlib/types.h"
+
+#define X86_CPU_FEATURE_SSSE3          0x00000001
+#define X86_CPU_FEATURE_SSE4_1         0x00000002
+#define X86_CPU_FEATURE_SSE4_2         0x00000004
+#define X86_CPU_FEATURE_AVX            0x00000008
+#define X86_CPU_FEATURE_BMI2           0x00000010
+#define X86_CPU_FEATURE_SHA            0x00000020
+
+#define ARM_CPU_FEATURE_SHA1           0x00000001
+
+#if (defined(__i386__) || defined(__x86_64__)) || \
+    (defined(__aarch64__) && defined(__linux__)) || \
+    (defined(__aarch64__) && defined(__APPLE__)) || \
+    (defined(__aarch64__) && defined(_WIN32))
+
+#define CPU_FEATURES_ENABLED   1
+extern u32 cpu_features;
+
+void init_cpu_features(void);
+
+#else
+
+#define CPU_FEATURES_ENABLED   0
+#define cpu_features 0
+
+static inline void
+init_cpu_features(void)
+{
+}
+
+#endif
+
+#endif /* _WIMLIB_CPU_FEATURES_H */