#include "src/dsp/dsp.h"
#if defined(WEBP_USE_SSE2)
#include "src/dsp/common_sse2.h"
#include "src/dsp/lossless.h"
#include "src/dsp/lossless_common.h"
#include <emmintrin.h>
static WEBP_INLINE uint32_t ClampedAddSubtractFull_SSE2(uint32_t c0,
uint32_t c1,
uint32_t c2) { … }
static WEBP_INLINE uint32_t ClampedAddSubtractHalf_SSE2(uint32_t c0,
uint32_t c1,
uint32_t c2) { … }
static WEBP_INLINE uint32_t Select_SSE2(uint32_t a, uint32_t b, uint32_t c) { … }
static WEBP_INLINE void Average2_m128i(const __m128i* const a0,
const __m128i* const a1,
__m128i* const avg) { … }
static WEBP_INLINE void Average2_uint32_SSE2(const uint32_t a0,
const uint32_t a1,
__m128i* const avg) { … }
static WEBP_INLINE __m128i Average2_uint32_16_SSE2(uint32_t a0, uint32_t a1) { … }
static WEBP_INLINE uint32_t Average2_SSE2(uint32_t a0, uint32_t a1) { … }
static WEBP_INLINE uint32_t Average3_SSE2(uint32_t a0, uint32_t a1,
uint32_t a2) { … }
static WEBP_INLINE uint32_t Average4_SSE2(uint32_t a0, uint32_t a1,
uint32_t a2, uint32_t a3) { … }
static uint32_t Predictor5_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor6_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor7_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor8_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor9_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor10_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor11_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor12_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static uint32_t Predictor13_SSE2(const uint32_t* const left,
const uint32_t* const top) { … }
static void PredictorAdd0_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
static void PredictorAdd1_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
#define GENERATE_PREDICTOR_1 …
GENERATE_PREDICTOR_1
GENERATE_PREDICTOR_1
GENERATE_PREDICTOR_1
#undef GENERATE_PREDICTOR_1
GENERATE_PREDICTOR_ADD(Predictor5_SSE2, PredictorAdd5_SSE2)
GENERATE_PREDICTOR_ADD(Predictor6_SSE2, PredictorAdd6_SSE2)
GENERATE_PREDICTOR_ADD(Predictor7_SSE2, PredictorAdd7_SSE2)
#define GENERATE_PREDICTOR_2 …
GENERATE_PREDICTOR_2
GENERATE_PREDICTOR_2
#undef GENERATE_PREDICTOR_2
#define DO_PRED10 …
#define DO_PRED10_SHIFT …
static void PredictorAdd10_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
#undef DO_PRED10
#undef DO_PRED10_SHIFT
#define DO_PRED11 …
#define DO_PRED11_SHIFT …
static void PredictorAdd11_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
#undef DO_PRED11
#undef DO_PRED11_SHIFT
#define DO_PRED12 …
#define DO_PRED12_SHIFT …
static void PredictorAdd12_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
#undef DO_PRED12
#undef DO_PRED12_SHIFT
GENERATE_PREDICTOR_ADD(Predictor13_SSE2, PredictorAdd13_SSE2)
static void AddGreenToBlueAndRed_SSE2(const uint32_t* const src, int num_pixels,
uint32_t* dst) { … }
static void TransformColorInverse_SSE2(const VP8LMultipliers* const m,
const uint32_t* const src,
int num_pixels, uint32_t* dst) { … }
static void ConvertBGRAToRGB_SSE2(const uint32_t* src, int num_pixels,
uint8_t* dst) { … }
static void ConvertBGRAToRGBA_SSE2(const uint32_t* src,
int num_pixels, uint8_t* dst) { … }
static void ConvertBGRAToRGBA4444_SSE2(const uint32_t* src,
int num_pixels, uint8_t* dst) { … }
static void ConvertBGRAToRGB565_SSE2(const uint32_t* src,
int num_pixels, uint8_t* dst) { … }
static void ConvertBGRAToBGR_SSE2(const uint32_t* src,
int num_pixels, uint8_t* dst) { … }
extern void VP8LDspInitSSE2(void);
WEBP_TSAN_IGNORE_FUNCTION void VP8LDspInitSSE2(void) { … }
#else
WEBP_DSP_INIT_STUB(VP8LDspInitSSE2)
#endif