diff --git a/src/builtins/select.c b/src/builtins/select.c index 03d45868..5aa251a4 100644 --- a/src/builtins/select.c +++ b/src/builtins/select.c @@ -35,6 +35,13 @@ #include "../builtins.h" #if SINGELI + #include + #if __GNUC__ && !__clang__ // old gcc versions don't define _mm_loadu_si32 & _mm_storeu_si32 + static __m128i custom_loadu_si32(void* p) { return (__m128i) _mm_load_ss(p); } + static void custom_storeu_si32(void* p, __m128i x) { _mm_store_ss(p, _mm_castsi128_ps(x)); } + #define _mm_loadu_si32 custom_loadu_si32 + #define _mm_storeu_si32 custom_storeu_si32 + #endif #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-variable" #include "../singeli/gen/select.c" diff --git a/src/utils/mut.c b/src/utils/mut.c index e795f9e4..158017c4 100644 --- a/src/utils/mut.c +++ b/src/utils/mut.c @@ -220,12 +220,8 @@ DEF_G(void, copy, B, (void* a, usz ms, B x, usz xs, usz l), ms, x, x #if SINGELI #include #if __GNUC__ && !__clang__ // old gcc versions don't define _mm_loadu_si32 & _mm_storeu_si32 - __m128i custom_loadu_si32(void* p) { - return (__m128i) _mm_load_ss(p); - } - void custom_storeu_si32(void* p, __m128i x) { - _mm_store_ss(p, _mm_castsi128_ps(x)); - } + static __m128i custom_loadu_si32(void* p) { return (__m128i) _mm_load_ss(p); } + static void custom_storeu_si32(void* p, __m128i x) { _mm_store_ss(p, _mm_castsi128_ps(x)); } #define _mm_loadu_si32 custom_loadu_si32 #define _mm_storeu_si32 custom_storeu_si32 #endif