From c5372e493ba670d60c0ce46e089f2fc702796744 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 17 Apr 2024 18:13:58 -0700 Subject: [PATCH] Improved check [skip ci] --- src/halfutils.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/halfutils.c b/src/halfutils.c index 1b1e0d1..9d2fd97 100644 --- a/src/halfutils.c +++ b/src/halfutils.c @@ -192,13 +192,13 @@ HalfvecCosineSimilarityF16cFma(int dim, half * ax, half * bx) #endif #ifdef HALFVEC_DISPATCH -#define CPU_FEATURE_FMA (1 << 12) -#define CPU_FEATURE_F16C (1 << 29) +#define CPU_FEATURE_FMA (1 << 12) +#define CPU_FEATURE_OSXSAVE (1 << 27) +#define CPU_FEATURE_F16C (1 << 29) static bool SupportsCpuFeature(unsigned int feature) { - /* TODO Fix check */ unsigned int exx[4] = {0, 0, 0, 0}; #if defined(HAVE__GET_CPUID) @@ -207,6 +207,12 @@ SupportsCpuFeature(unsigned int feature) __cpuid(exx, 1); #endif + if ((exx[2] & CPU_FEATURE_OSXSAVE) != CPU_FEATURE_OSXSAVE) + return false; + + if ((_xgetbv(0) & 6) != 6) + return false; + return (exx[2] & feature) == feature; } #endif