From 1c9a3088bf9e3af9b838437c9efb00b5d877eec9 Mon Sep 17 00:00:00 2001 From: Maya Warrier Date: Wed, 17 May 2023 02:35:16 -0400 Subject: [PATCH] Fix for VS 32-bit --- include/fast_float/ascii_number.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index e39fafc..ba6b0ef 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -69,7 +69,15 @@ uint64_t read8_to_u64(const UC *chars) { fastfloat_really_inline uint64_t simd_read8_to_u64(const __m128i data) { FASTFLOAT_SIMD_DISABLE_WARNINGS - return uint64_t(_mm_cvtsi128_si64x(_mm_packus_epi16(data, data))); + const __m128i packed = _mm_packus_epi16(data, data); +#ifdef FASTFLOAT_64BIT + return uint64_t(_mm_cvtsi128_si64x(packed)); +#else + uint64_t value; + // Visual Studio + older versions of GCC don't support _mm_storeu_si64 + _mm_storel_epi64(reinterpret_cast<__m128i*>(&value), packed); + return value; +#endif FASTFLOAT_SIMD_RESTORE_WARNINGS }