Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xiph/speex.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ridges <jridges@masque.com>2008-12-01 03:45:28 +0300
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>2008-12-01 03:45:28 +0300
commita6c4829750f0cd8535ae14a4d3919fd272fc9f74 (patch)
tree6c329cdb46cb649e1b9332e16975a4303286ca6f
parent47b5b871e95412382e35e0a36dca67d38a4b2b90 (diff)
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.
-rw-r--r--libspeex/resample_sse.h4
1 files changed, 2 insertions, 2 deletions
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;
}