From 0b938f832822702d607498caee2710a7dd4e1ebe Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Wed, 17 Apr 2024 20:22:14 -0700 Subject: [PATCH] Improved halfvec dispatching code [skip ci] --- src/halfutils.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/halfutils.c b/src/halfutils.c index 3b9ecdc..810229e 100644 --- a/src/halfutils.c +++ b/src/halfutils.c @@ -8,14 +8,14 @@ #if defined(HAVE__GET_CPUID) #include -#elif defined(HAVE__CPUID) +#else #include #endif #ifdef _MSC_VER -#define TARGET_F16C_FMA +#define TARGET_F16C #else -#define TARGET_F16C_FMA __attribute__((target("f16c,fma"))) +#define TARGET_F16C __attribute__((target("avx,f16c,fma"))) #endif #endif @@ -40,8 +40,8 @@ HalfvecL2SquaredDistanceDefault(int dim, half * ax, half * bx) } #ifdef HALFVEC_DISPATCH -TARGET_F16C_FMA static float -HalfvecL2SquaredDistanceF16cFma(int dim, half * ax, half * bx) +TARGET_F16C static float +HalfvecL2SquaredDistanceF16c(int dim, half * ax, half * bx) { float distance; int i; @@ -88,8 +88,8 @@ HalfvecInnerProductDefault(int dim, half * ax, half * bx) } #ifdef HALFVEC_DISPATCH -TARGET_F16C_FMA static float -HalfvecInnerProductF16cFma(int dim, half * ax, half * bx) +TARGET_F16C static float +HalfvecInnerProductF16c(int dim, half * ax, half * bx) { float distance; int i; @@ -141,8 +141,8 @@ HalfvecCosineSimilarityDefault(int dim, half * ax, half * bx) } #ifdef HALFVEC_DISPATCH -TARGET_F16C_FMA static double -HalfvecCosineSimilarityF16cFma(int dim, half * ax, half * bx) +TARGET_F16C static double +HalfvecCosineSimilarityF16c(int dim, half * ax, half * bx) { float similarity; float norma; @@ -210,7 +210,7 @@ SupportsCpuFeature(unsigned int feature) #if defined(HAVE__GET_CPUID) __get_cpuid(1, &exx[0], &exx[1], &exx[2], &exx[3]); -#elif defined(HAVE__CPUID) +#else __cpuid(exx, 1); #endif @@ -241,9 +241,9 @@ HalfvecInit(void) #ifdef HALFVEC_DISPATCH if (SupportsCpuFeature(CPU_FEATURE_AVX | CPU_FEATURE_F16C | CPU_FEATURE_FMA)) { - HalfvecL2SquaredDistance = HalfvecL2SquaredDistanceF16cFma; - HalfvecInnerProduct = HalfvecInnerProductF16cFma; - HalfvecCosineSimilarity = HalfvecCosineSimilarityF16cFma; + HalfvecL2SquaredDistance = HalfvecL2SquaredDistanceF16c; + HalfvecInnerProduct = HalfvecInnerProductF16c; + HalfvecCosineSimilarity = HalfvecCosineSimilarityF16c; } #endif }