#ifndef AOM_AOM_DSP_X86_CONVOLVE_AVX2_H_
#define AOM_AOM_DSP_X86_CONVOLVE_AVX2_H_
#include <immintrin.h>
#include "aom_ports/mem.h"
#include "av1/common/convolve.h"
#include "av1/common/filter.h"
DECLARE_ALIGNED(32, static const uint8_t, filt_global_avx2[]) = …;
DECLARE_ALIGNED(32, static const uint8_t, filt_d4_global_avx2[]) = …;
DECLARE_ALIGNED(32, static const uint8_t, filt4_d4_global_avx2[]) = …;
DECLARE_ALIGNED(32, static const uint8_t, filt_center_global_avx2[32]) = …;
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]) = …;
#define CONVOLVE_SR_HORIZONTAL_FILTER_4TAP …
#define CONVOLVE_SR_VERTICAL_FILTER_4TAP …
#define CONVOLVE_SR_HORIZONTAL_FILTER_6TAP …
#define CONVOLVE_SR_VERTICAL_FILTER_6TAP …
#define CONVOLVE_SR_HORIZONTAL_FILTER_8TAP …
#define CONVOLVE_SR_VERTICAL_FILTER_8TAP …
#define CONVOLVE_SR_HORIZONTAL_FILTER_12TAP …
#define CONVOLVE_SR_VERTICAL_FILTER_12TAP …
#define DIST_WTD_CONVOLVE_HORIZONTAL_FILTER_8TAP …
#define DIST_WTD_CONVOLVE_VERTICAL_FILTER_8TAP …
static inline void prepare_coeffs_lowbd(
const InterpFilterParams *const filter_params, const int subpel_q4,
__m256i *const coeffs ) { … }
static inline void prepare_coeffs_6t_lowbd(
const InterpFilterParams *const filter_params, const int subpel_q4,
__m256i *const coeffs ) { … }
static inline void prepare_coeffs_6t(
const InterpFilterParams *const filter_params, const int subpel_q4,
__m256i *const coeffs ) { … }
static inline void prepare_coeffs(const InterpFilterParams *const filter_params,
const int subpel_q4,
__m256i *const coeffs ) { … }
static inline void prepare_coeffs_12taps(
const InterpFilterParams *const filter_params, const int subpel_q4,
__m256i *const coeffs ) { … }
static inline __m256i convolve_lowbd(const __m256i *const s,
const __m256i *const coeffs) { … }
static inline __m256i convolve_lowbd_6tap(const __m256i *const s,
const __m256i *const coeffs) { … }
static inline __m256i convolve_lowbd_4tap(const __m256i *const s,
const __m256i *const coeffs) { … }
static inline __m256i convolve_6tap(const __m256i *const s,
const __m256i *const coeffs) { … }
static inline __m256i convolve_12taps(const __m256i *const s,
const __m256i *const coeffs) { … }
static inline __m256i convolve(const __m256i *const s,
const __m256i *const coeffs) { … }
static inline __m256i convolve_4tap(const __m256i *const s,
const __m256i *const coeffs) { … }
static inline __m256i convolve_lowbd_x(const __m256i data,
const __m256i *const coeffs,
const __m256i *const filt) { … }
static inline __m256i convolve_lowbd_x_6tap(const __m256i data,
const __m256i *const coeffs,
const __m256i *const filt) { … }
static inline __m256i convolve_lowbd_x_4tap(const __m256i data,
const __m256i *const coeffs,
const __m256i *const filt) { … }
static inline void add_store_aligned_256(CONV_BUF_TYPE *const dst,
const __m256i *const res,
const int do_average) { … }
static inline __m256i comp_avg(const __m256i *const data_ref_0,
const __m256i *const res_unsigned,
const __m256i *const wt,
const int use_dist_wtd_comp_avg) { … }
static inline __m256i convolve_rounding(const __m256i *const res_unsigned,
const __m256i *const offset_const,
const __m256i *const round_const,
const int round_shift) { … }
static inline __m256i highbd_comp_avg(const __m256i *const data_ref_0,
const __m256i *const res_unsigned,
const __m256i *const wt0,
const __m256i *const wt1,
const int use_dist_wtd_comp_avg) { … }
static inline __m256i highbd_convolve_rounding(
const __m256i *const res_unsigned, const __m256i *const offset_const,
const __m256i *const round_const, const int round_shift) { … }
#endif