diff --git a/src/blitter/32bpp_anim_sse2.cpp b/src/blitter/32bpp_anim_sse2.cpp index c57f065092..f1bc5b3d98 100644 --- a/src/blitter/32bpp_anim_sse2.cpp +++ b/src/blitter/32bpp_anim_sse2.cpp @@ -54,9 +54,11 @@ void Blitter_32bppSSE2_Anim::PaletteAnimate(const Palette &palette) __m128i colour_data = _mm_and_si128(data, colour_mask); /* test if any colour >= PALETTE_ANIM_START */ - if (unlikely(_mm_movemask_epi8(_mm_cmpgt_epi16(colour_data, anim_cmp)))) { + int colour_cmp_result = _mm_movemask_epi8(_mm_cmpgt_epi16(colour_data, anim_cmp)); + if (unlikely(colour_cmp_result)) { /* test if any brightness is unexpected */ - if (unlikely(x < 8 || _mm_movemask_epi8(_mm_cmpeq_epi16(_mm_srli_epi16(data, 8), brightness_cmp)) != 0xFFFF)) { + if (unlikely(x < 8 || colour_cmp_result != 0xFFFF || + _mm_movemask_epi8(_mm_cmpeq_epi16(_mm_srli_epi16(data, 8), brightness_cmp)) != 0xFFFF)) { /* slow path: < 8 pixels left or unexpected brightnesses */ for (int z = min(x, 8); z != 0 ; z--) { int value = _mm_extract_epi16(data, 0);