From 6abc4803872bfc5fbe7a14b9e7e914cdf0fea560 Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Sun, 21 Sep 2014 08:48:17 +1000 Subject: [PATCH] stream_encoder_intrin_sse[23].c : Optimize of int32 -> uint64 conversion. Optimizes int32 -> uint64 conversion by doing zero extension (int32 -> uint32 -> uint64) instead of sign extension (int32 -> int64 -> uint64). Patch-from: lvqcl --- src/libFLAC/stream_encoder_intrin_sse2.c | 2 +- src/libFLAC/stream_encoder_intrin_ssse3.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libFLAC/stream_encoder_intrin_sse2.c b/src/libFLAC/stream_encoder_intrin_sse2.c index 4e9d5dbf..3a06392c 100644 --- a/src/libFLAC/stream_encoder_intrin_sse2.c +++ b/src/libFLAC/stream_encoder_intrin_sse2.c @@ -95,7 +95,7 @@ void FLAC__precompute_partition_info_sums_intrin_sse2(const FLAC__int32 residual mm_sum = _mm_add_epi32(mm_sum, _mm_srli_si128(mm_sum, 8)); mm_sum = _mm_add_epi32(mm_sum, _mm_srli_si128(mm_sum, 4)); - abs_residual_partition_sums[partition] = _mm_cvtsi128_si32(mm_sum); + abs_residual_partition_sums[partition] = (FLAC__uint32)_mm_cvtsi128_si32(mm_sum); } } else { /* have to pessimistically use 64 bits for accumulator */ diff --git a/src/libFLAC/stream_encoder_intrin_ssse3.c b/src/libFLAC/stream_encoder_intrin_ssse3.c index 669536ac..f6a27bae 100644 --- a/src/libFLAC/stream_encoder_intrin_ssse3.c +++ b/src/libFLAC/stream_encoder_intrin_ssse3.c @@ -89,7 +89,7 @@ void FLAC__precompute_partition_info_sums_intrin_ssse3(const FLAC__int32 residua mm_sum = _mm_hadd_epi32(mm_sum, mm_sum); mm_sum = _mm_hadd_epi32(mm_sum, mm_sum); - abs_residual_partition_sums[partition] = _mm_cvtsi128_si32(mm_sum); + abs_residual_partition_sums[partition] = (FLAC__uint32)_mm_cvtsi128_si32(mm_sum); } } else { /* have to pessimistically use 64 bits for accumulator */