Fix undefined signed shift.

Using the fix from SSE2.

Change-Id: Ie53d0163d97322da5a722c3e49f9d5f057ee1d91
This commit is contained in:
Vincent Rabaud 2021-02-18 16:56:22 +01:00
parent a09a647241
commit e79974cd6a

View File

@ -25,8 +25,9 @@
static void TransformColorInverse_SSE41(const VP8LMultipliers* const m, static void TransformColorInverse_SSE41(const VP8LMultipliers* const m,
const uint32_t* const src, const uint32_t* const src,
int num_pixels, uint32_t* dst) { int num_pixels, uint32_t* dst) {
#define CST(X) ((int32_t)((int8_t)m->X) << 3) // sign-extended multiplying constants, pre-shifted by 5.
const __m128i mults_rb = _mm_set1_epi32(CST(green_to_red_) << 16 | #define CST(X) (((int16_t)(m->X << 8)) >> 5) // sign-extend
const __m128i mults_rb = _mm_set1_epi32((uint32_t)CST(green_to_red_) << 16 |
(CST(green_to_blue_) & 0xffff)); (CST(green_to_blue_) & 0xffff));
const __m128i mults_b2 = _mm_set1_epi32(CST(red_to_blue_)); const __m128i mults_b2 = _mm_set1_epi32(CST(red_to_blue_));
#undef CST #undef CST