From a6c4829750f0cd8535ae14a4d3919fd272fc9f74 Mon Sep 17 00:00:00 2001 From: John Ridges Date: Sun, 30 Nov 2008 19:45:28 -0500 Subject: At least VS2005 (what I'm using) won't compile resample_sse.h with _USE_SSE2 defined because it refuses to cast __m128 to __m128d and vice versa. While there are intrinsics to do the casts, I thought it would be simpler to just use an intrinsic that accomplishes the same thing without all the casting. --- libspeex/resample_sse.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libspeex') diff --git a/libspeex/resample_sse.h b/libspeex/resample_sse.h index 4bd35a2..64be8a1 100644 --- a/libspeex/resample_sse.h +++ b/libspeex/resample_sse.h @@ -91,7 +91,7 @@ static inline double inner_product_double(const float *a, const float *b, unsign sum = _mm_add_pd(sum, _mm_cvtps_pd(t)); sum = _mm_add_pd(sum, _mm_cvtps_pd(_mm_movehl_ps(t, t))); } - sum = _mm_add_sd(sum, (__m128d) _mm_movehl_ps((__m128) sum, (__m128) sum)); + sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum)); _mm_store_sd(&ret, sum); return ret; } @@ -120,7 +120,7 @@ static inline double interpolate_product_double(const float *a, const float *b, sum1 = _mm_mul_pd(f1, sum1); sum2 = _mm_mul_pd(f2, sum2); sum = _mm_add_pd(sum1, sum2); - sum = _mm_add_sd(sum, (__m128d) _mm_movehl_ps((__m128) sum, (__m128) sum)); + sum = _mm_add_sd(sum, _mm_unpackhi_pd(sum, sum)); _mm_store_sd(&ret, sum); return ret; } -- cgit v1.2.3