#include "src/dsp/dsp.h"
#if defined(WEBP_USE_SSE2)
#include <emmintrin.h>
static int DispatchAlpha_SSE2(const uint8_t* WEBP_RESTRICT alpha,
int alpha_stride, int width, int height,
uint8_t* WEBP_RESTRICT dst, int dst_stride) { … }
static void DispatchAlphaToGreen_SSE2(const uint8_t* WEBP_RESTRICT alpha,
int alpha_stride, int width, int height,
uint32_t* WEBP_RESTRICT dst,
int dst_stride) { … }
static int ExtractAlpha_SSE2(const uint8_t* WEBP_RESTRICT argb, int argb_stride,
int width, int height,
uint8_t* WEBP_RESTRICT alpha, int alpha_stride) { … }
static void ExtractGreen_SSE2(const uint32_t* WEBP_RESTRICT argb,
uint8_t* WEBP_RESTRICT alpha, int size) { … }
#define MULTIPLIER …
#define PREMULTIPLY …
#define APPLY_ALPHA(RGBX, SHUFFLE) …
static void ApplyAlphaMultiply_SSE2(uint8_t* rgba, int alpha_first,
int w, int h, int stride) { … }
#undef MULTIPLIER
#undef PREMULTIPLY
static int HasAlpha8b_SSE2(const uint8_t* src, int length) { … }
static int HasAlpha32b_SSE2(const uint8_t* src, int length) { … }
static void AlphaReplace_SSE2(uint32_t* src, int length, uint32_t color) { … }
static void MultARGBRow_SSE2(uint32_t* const ptr, int width, int inverse) { … }
static void MultRow_SSE2(uint8_t* WEBP_RESTRICT const ptr,
const uint8_t* WEBP_RESTRICT const alpha,
int width, int inverse) { … }
extern void WebPInitAlphaProcessingSSE2(void);
WEBP_TSAN_IGNORE_FUNCTION void WebPInitAlphaProcessingSSE2(void) { … }
#else
WEBP_DSP_INIT_STUB(WebPInitAlphaProcessingSSE2)
#endif