@@ -170,25 +170,20 @@ _pg_has_avx2()
170170#define SUB_CODE mm256_dst = _mm256_subs_epu8(mm256_dst, mm256_color);
171171#define MIN_CODE mm256_dst = _mm256_min_epu8(mm256_dst, mm256_color);
172172#define MAX_CODE mm256_dst = _mm256_max_epu8(mm256_dst, mm256_color);
173- #define MULT_CODE \
174- { \
175- shuff_dst = _mm256_mullo_epi16(shuff_dst, mm256_color); \
176- shuff_dst = _mm256_srli_epi16(shuff_dst, 8); \
173+ #define MULT_CODE \
174+ { \
175+ shuff_dst = _mm256_mullo_epi16(shuff_dst, mm256_color); \
176+ shuff_dst = _mm256_adds_epu16(shuff_dst, _mm256_set1_epi16(255)); \
177+ shuff_dst = _mm256_srli_epi16(shuff_dst, 8); \
177178 }
178179
179180#if defined(__AVX2__ ) && defined(HAVE_IMMINTRIN_H ) && \
180181 !defined(SDL_DISABLE_IMMINTRIN_H )
181182FILLERS (add , color &= ~amask ;, ADD_CODE )
182183FILLERS (sub , color &= ~amask ;, SUB_CODE )
183- FILLERS (min , color &= ~ amask ;, MIN_CODE )
184+ FILLERS (min , color |= amask ;, MIN_CODE )
184185FILLERS (max , color &= ~amask ;, MAX_CODE )
185- FILLERS_SHUFF (
186- mult ,
187- {
188- color &= ~amask ; /* clear the alpha channel */
189- color |= (0x01010101 & amask ); /* set the alpha channel to 1 */
190- },
191- MULT_CODE )
186+ FILLERS_SHUFF (mult , color |= amask ;, MULT_CODE )
192187#else
193188INVALID_DEFS (add )
194189INVALID_DEFS (sub )
0 commit comments