#include <immintrin.h>
#include <stdio.h>
#include "./vpx_dsp_rtcd.h"
#include "vpx_dsp/x86/convolve.h"
#include "vpx_dsp/x86/convolve_avx2.h"
#include "vpx_dsp/x86/convolve_sse2.h"
#include "vpx_dsp/x86/convolve_ssse3.h"
#include "vpx_ports/mem.h"
DECLARE_ALIGNED(32, static const uint8_t,
filt1_global_avx2[32]) = …;
DECLARE_ALIGNED(32, static const uint8_t,
filt2_global_avx2[32]) = …;
DECLARE_ALIGNED(32, static const uint8_t, filt3_global_avx2[32]) = …;
DECLARE_ALIGNED(32, static const uint8_t, filt4_global_avx2[32]) = …;
DECLARE_ALIGNED(32, static const uint8_t, filt_d4_global_avx2[64]) = …;
#define CALC_CONVOLVE8_HORZ_ROW …
static INLINE void vpx_filter_block1d16_h8_x_avx2(
const uint8_t *src_ptr, ptrdiff_t src_pixels_per_line, uint8_t *output_ptr,
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter,
const int avg) { … }
static void vpx_filter_block1d16_h8_avx2(
const uint8_t *src_ptr, ptrdiff_t src_stride, uint8_t *output_ptr,
ptrdiff_t dst_stride, uint32_t output_height, const int16_t *filter) { … }
static void vpx_filter_block1d16_h8_avg_avx2(
const uint8_t *src_ptr, ptrdiff_t src_stride, uint8_t *output_ptr,
ptrdiff_t dst_stride, uint32_t output_height, const int16_t *filter) { … }
static void vpx_filter_block1d8_h8_avx2(
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter) { … }
static INLINE void vpx_filter_block1d16_v8_x_avx2(
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
ptrdiff_t out_pitch, uint32_t output_height, const int16_t *filter,
const int avg) { … }
static void vpx_filter_block1d16_v8_avx2(const uint8_t *src_ptr,
ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height,
const int16_t *filter) { … }
static void vpx_filter_block1d16_v8_avg_avx2(
const uint8_t *src_ptr, ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height, const int16_t *filter) { … }
static void vpx_filter_block1d16_h4_avx2(const uint8_t *src_ptr,
ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height,
const int16_t *kernel) { … }
static void vpx_filter_block1d16_v4_avx2(const uint8_t *src_ptr,
ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height,
const int16_t *kernel) { … }
static void vpx_filter_block1d8_h4_avx2(const uint8_t *src_ptr,
ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height,
const int16_t *kernel) { … }
static void vpx_filter_block1d8_v4_avx2(const uint8_t *src_ptr,
ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height,
const int16_t *kernel) { … }
static void vpx_filter_block1d4_h4_avx2(const uint8_t *src_ptr,
ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height,
const int16_t *kernel) { … }
static void vpx_filter_block1d4_v4_avx2(const uint8_t *src_ptr,
ptrdiff_t src_stride, uint8_t *dst_ptr,
ptrdiff_t dst_stride, uint32_t height,
const int16_t *kernel) { … }
static void vpx_filter_block1d8_v8_avx2(
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
ptrdiff_t out_pitch, uint32_t output_height, const int16_t *filter) { … }
static void vpx_filter_block1d4_h8_avx2(
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
ptrdiff_t output_pitch, uint32_t output_height, const int16_t *filter) { … }
static void vpx_filter_block1d4_v8_avx2(
const uint8_t *src_ptr, ptrdiff_t src_pitch, uint8_t *output_ptr,
ptrdiff_t out_pitch, uint32_t output_height, const int16_t *filter) { … }
#if HAVE_AVX2 && HAVE_SSSE3
#if VPX_ARCH_X86_64
filter8_1dfunction vpx_filter_block1d8_v8_intrin_ssse3;
filter8_1dfunction vpx_filter_block1d8_h8_intrin_ssse3;
filter8_1dfunction vpx_filter_block1d4_h8_intrin_ssse3;
#else
filter8_1dfunction vpx_filter_block1d8_v8_ssse3;
filter8_1dfunction vpx_filter_block1d8_h8_ssse3;
filter8_1dfunction vpx_filter_block1d4_h8_ssse3;
#endif
filter8_1dfunction vpx_filter_block1d8_v8_avg_ssse3;
filter8_1dfunction vpx_filter_block1d8_h8_avg_ssse3;
filter8_1dfunction vpx_filter_block1d4_v8_avg_ssse3;
filter8_1dfunction vpx_filter_block1d4_h8_avg_ssse3;
#define vpx_filter_block1d8_v8_avg_avx2 …
#define vpx_filter_block1d8_h8_avg_avx2 …
#define vpx_filter_block1d4_v8_avg_avx2 …
#define vpx_filter_block1d4_h8_avg_avx2 …
filter8_1dfunction vpx_filter_block1d16_v2_ssse3;
filter8_1dfunction vpx_filter_block1d16_h2_ssse3;
filter8_1dfunction vpx_filter_block1d8_v2_ssse3;
filter8_1dfunction vpx_filter_block1d8_h2_ssse3;
filter8_1dfunction vpx_filter_block1d4_v2_ssse3;
filter8_1dfunction vpx_filter_block1d4_h2_ssse3;
#define vpx_filter_block1d16_v2_avx2 …
#define vpx_filter_block1d16_h2_avx2 …
#define vpx_filter_block1d8_v2_avx2 …
#define vpx_filter_block1d8_h2_avx2 …
#define vpx_filter_block1d4_v2_avx2 …
#define vpx_filter_block1d4_h2_avx2 …
filter8_1dfunction vpx_filter_block1d16_v2_avg_ssse3;
filter8_1dfunction vpx_filter_block1d16_h2_avg_ssse3;
filter8_1dfunction vpx_filter_block1d8_v2_avg_ssse3;
filter8_1dfunction vpx_filter_block1d8_h2_avg_ssse3;
filter8_1dfunction vpx_filter_block1d4_v2_avg_ssse3;
filter8_1dfunction vpx_filter_block1d4_h2_avg_ssse3;
#define vpx_filter_block1d16_v2_avg_avx2 …
#define vpx_filter_block1d16_h2_avg_avx2 …
#define vpx_filter_block1d8_v2_avg_avx2 …
#define vpx_filter_block1d8_h2_avg_avx2 …
#define vpx_filter_block1d4_v2_avg_avx2 …
#define vpx_filter_block1d4_h2_avg_avx2 …
#define vpx_filter_block1d16_v4_avg_avx2 …
#define vpx_filter_block1d16_h4_avg_avx2 …
#define vpx_filter_block1d8_v4_avg_avx2 …
#define vpx_filter_block1d8_h4_avg_avx2 …
#define vpx_filter_block1d4_v4_avg_avx2 …
#define vpx_filter_block1d4_h4_avg_avx2 …
FUN_CONV_1D(…)
FUN_CONV_1D(…)
FUN_CONV_1D(…)
FUN_CONV_1D(…)
FUN_CONV_2D(…)
FUN_CONV_2D(…)
#endif