#include "src/dsp/dsp.h"
#if defined(WEBP_USE_SSE2)
#include <assert.h>
#include <emmintrin.h>
#include "src/dsp/lossless.h"
#include "src/dsp/common_sse2.h"
#include "src/dsp/lossless_common.h"
#define CST_5b(X) …
static void SubtractGreenFromBlueAndRed_SSE2(uint32_t* argb_data,
int num_pixels) { … }
#define MK_CST_16 …
static void TransformColor_SSE2(const VP8LMultipliers* const m,
uint32_t* argb_data, int num_pixels) { … }
#define SPAN …
static void CollectColorBlueTransforms_SSE2(const uint32_t* argb, int stride,
int tile_width, int tile_height,
int green_to_blue, int red_to_blue,
int histo[]) { … }
static void CollectColorRedTransforms_SSE2(const uint32_t* argb, int stride,
int tile_width, int tile_height,
int green_to_red, int histo[]) { … }
#undef SPAN
#undef MK_CST_16
#define LINE_SIZE …
static void AddVector_SSE2(const uint32_t* a, const uint32_t* b, uint32_t* out,
int size) { … }
static void AddVectorEq_SSE2(const uint32_t* a, uint32_t* out, int size) { … }
#undef LINE_SIZE
#if !(defined(WEBP_HAVE_SLOW_CLZ_CTZ) || defined(__i386__) || defined(_M_IX86))
static float CombinedShannonEntropy_SSE2(const int X[256], const int Y[256]) { … }
#else
#define DONT_USE_COMBINED_SHANNON_ENTROPY_SSE2_FUNC …
#endif
static int VectorMismatch_SSE2(const uint32_t* const array1,
const uint32_t* const array2, int length) { … }
static void BundleColorMap_SSE2(const uint8_t* const row, int width, int xbits,
uint32_t* dst) { … }
static WEBP_INLINE void Average2_m128i(const __m128i* const a0,
const __m128i* const a1,
__m128i* const avg) { … }
static void PredictorSub0_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
GENERATE_PREDICTOR_1
#undef GENERATE_PREDICTOR_1
static void PredictorSub5_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
#define GENERATE_PREDICTOR_2 …
GENERATE_PREDICTOR_2
GENERATE_PREDICTOR_2
GENERATE_PREDICTOR_2
GENERATE_PREDICTOR_2
#undef GENERATE_PREDICTOR_2
static void PredictorSub10_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
static void GetSumAbsDiff32_SSE2(const __m128i* const A, const __m128i* const B,
__m128i* const out) { … }
static void PredictorSub11_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
static void PredictorSub12_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
static void PredictorSub13_SSE2(const uint32_t* in, const uint32_t* upper,
int num_pixels, uint32_t* out) { … }
extern void VP8LEncDspInitSSE2(void);
WEBP_TSAN_IGNORE_FUNCTION void VP8LEncDspInitSSE2(void) { … }
#else
WEBP_DSP_INIT_STUB(VP8LEncDspInitSSE2)
#endif