diff foosdk/sdk/pfc/cpuid.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foosdk/sdk/pfc/cpuid.h	Mon Jan 05 02:15:46 2026 -0500
@@ -0,0 +1,39 @@
+#pragma once
+
+// CPUID stuff supported only on MSVC for now, irrelevant for non x86
+#if defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))
+#define PFC_HAVE_CPUID 1
+namespace pfc {
+	enum {
+		CPU_HAVE_SSE		= 1 << 2,
+		CPU_HAVE_SSE2		= 1 << 3,
+		CPU_HAVE_SSE3		= 1 << 4,
+		CPU_HAVE_SSSE3		= 1 << 5,
+		CPU_HAVE_SSE41		= 1 << 6,
+		CPU_HAVE_SSE42		= 1 << 7,
+		CPU_HAVE_AVX		= 1 << 8,
+	};
+
+	bool query_cpu_feature_set(unsigned p_value);
+};
+#endif
+
+#ifndef PFC_HAVE_CPUID
+#define PFC_HAVE_CPUID 0
+#endif
+
+namespace pfc {
+	const char* cpuArch();
+}
+
+#ifdef _M_ARM64EC
+#define PFC_CPU_ARCH "ARM64EC"
+#elif defined(_M_X64) || defined(__x86_64__)
+#define PFC_CPU_ARCH "x64"
+#elif defined(_M_IX86) || defined(__i386__)
+#define PFC_CPU_ARCH "x86"
+#elif defined(_M_ARM64) || defined(__aarch64__)
+#define PFC_CPU_ARCH "ARM64"
+#elif defined(_M_ARM) || defined(__arm__)
+#define PFC_CPU_ARCH "ARM"
+#endif