kfr

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
Log | Files | Refs | README

commit 26a46e1634d2450cf2b93fdddbead36be873e13f
parent 506cafae9011aa169c3be78bb061fc81380d8235
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date:   Mon,  1 Apr 2019 18:04:56 +0000

MSVC2017 32-bit fixes

Diffstat:
Minclude/kfr/simd/impl/backend_generic.hpp | 17+++++++++++++++++
1 file changed, 17 insertions(+), 0 deletions(-)

diff --git a/include/kfr/simd/impl/backend_generic.hpp b/include/kfr/simd/impl/backend_generic.hpp @@ -287,6 +287,23 @@ KFR_INTRIN_BROADCAST(f64, 2, _mm_set1_pd(value)) return __VA_ARGS__; \ } +#if defined CMT_MSC_VER && defined CMT_ARCH_X32 +KFR_INTRINSIC __m128i _mm_cvtsi64_si128(int64_t u) +{ + __m128i r = _mm_setzero_si128(); + r.m128i_i64[0] = u; + return r; +} +KFR_INTRINSIC int64_t _mm_cvtsi128_si64(const __m128i& i) { return i.m128i_i64[0]; } +KFR_INTRINSIC int64_t _mm_cvttsd_si64(const __m128d& d) { return static_cast<int64_t>(d.m128d_f64[0]); } +KFR_INTRINSIC __m128d _mm_cvtsi64_sd(const __m128d& a, int64_t b) +{ + __m128d r = a; + r.m128d_f64[0] = static_cast<double>(b); + return r; +} +#endif + // extend KFR_INTRIN_SHUFFLE_LINEAR(i8, 16, 1, _mm_cvtsi32_si128(u8(x))) KFR_INTRIN_SHUFFLE_LINEAR(i16, 8, 1, _mm_cvtsi32_si128(u16(x)))