From a729cff987444fe8df5235c8f3364b946f5f5a36 Mon Sep 17 00:00:00 2001 From: Pascal Massimino Date: Wed, 10 Jun 2015 23:06:45 -0700 Subject: [PATCH] sse2 in-loop: simplify SignedShift8b() a bit Change-Id: Ida3e096bb41451194d03dc7a97753a222ff0135c --- src/dsp/dec_sse2.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dsp/dec_sse2.c b/src/dsp/dec_sse2.c index f4424542..ce60d5fd 100644 --- a/src/dsp/dec_sse2.c +++ b/src/dsp/dec_sse2.c @@ -301,11 +301,10 @@ static void TransformAC3(const int16_t* in, uint8_t* dst) { // Shift each byte of "x" by 3 bits while preserving by the sign bit. static WEBP_INLINE void SignedShift8b(__m128i* const x) { const __m128i zero = _mm_setzero_si128(); - const __m128i signs = _mm_cmpgt_epi8(zero, *x); - const __m128i lo_0 = _mm_unpacklo_epi8(*x, signs); // s8 -> s16 sign extend - const __m128i hi_0 = _mm_unpackhi_epi8(*x, signs); - const __m128i lo_1 = _mm_srai_epi16(lo_0, 3); - const __m128i hi_1 = _mm_srai_epi16(hi_0, 3); + const __m128i lo_0 = _mm_unpacklo_epi8(zero, *x); + const __m128i hi_0 = _mm_unpackhi_epi8(zero, *x); + const __m128i lo_1 = _mm_srai_epi16(lo_0, 3 + 8); + const __m128i hi_1 = _mm_srai_epi16(hi_0, 3 + 8); *x = _mm_packs_epi16(lo_1, hi_1); }