From 8a7f5d14b8ae88986bf4ba3981fb33dbbf65b1a2 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sun, 7 Apr 2024 22:31:23 -0700 Subject: [PATCH] Fixed --- src/halfvec.c | 6 ++++-- src/halfvec.h | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/halfvec.c b/src/halfvec.c index 3383ff6..e9de6a4 100644 --- a/src/halfvec.c +++ b/src/halfvec.c @@ -103,7 +103,8 @@ pq_sendhalf(StringInfo buf, half h) float HalfToFloat4(half num) { -#if defined(F16C_SUPPORT) +#if defined(F16C_SUPPORT) && !defined(_MSC_VER) + /* TODO Use instrinsics for Windows */ return _cvtsh_ss(num); #elif defined(FLT16_SUPPORT) return (float) num; @@ -190,7 +191,8 @@ HalfToFloat4(half num) half Float4ToHalfUnchecked(float num) { -#if defined(F16C_SUPPORT) +#if defined(F16C_SUPPORT) && !defined(_MSC_VER) + /* TODO Use instrinsics for Windows */ return _cvtss_sh(num, 0); #elif defined(FLT16_SUPPORT) return (_Float16) num; diff --git a/src/halfvec.h b/src/halfvec.h index f737fcf..56bdc73 100644 --- a/src/halfvec.h +++ b/src/halfvec.h @@ -8,7 +8,10 @@ #include "vector.h" /* F16C has better performance than _Float16 (on x86-64) */ -#if defined(__F16C__) || defined(__AVX2__) +#if defined(__F16C__) +#define F16C_SUPPORT +/* TODO Improve detection */ +#elif defined(_MSC_VER) && defined(__AVX2__) #define F16C_SUPPORT #elif defined(__FLT16_MAX__) #define FLT16_SUPPORT