26 #define mc_rep_func(name, bitd, step, W, opt) \ 
   27 void ff_h2656_put_##name##W##_##bitd##_##opt(int16_t *_dst, ptrdiff_t dststride,                                \ 
   28     const uint8_t *_src, ptrdiff_t _srcstride, int height, const int8_t *hf, const int8_t *vf, int width)       \ 
   32     for (i = 0; i < W; i += step) {                                                                             \ 
   33         const uint8_t *src  = _src + (i * ((bitd + 7) / 8));                                                    \ 
   35         ff_h2656_put_##name##step##_##bitd##_##opt(dst, dststride, src, _srcstride, height, hf, vf, width);     \ 
   39 #define mc_rep_uni_func(name, bitd, step, W, opt) \ 
   40 void ff_h2656_put_uni_##name##W##_##bitd##_##opt(uint8_t *_dst, ptrdiff_t dststride,                            \ 
   41     const uint8_t *_src, ptrdiff_t _srcstride, int height, const int8_t *hf, const int8_t *vf, int width)       \ 
   45     for (i = 0; i < W; i += step) {                                                                             \ 
   46         const uint8_t *src = _src + (i * ((bitd + 7) / 8));                                                     \ 
   47         dst = _dst + (i * ((bitd + 7) / 8));                                                                    \ 
   48         ff_h2656_put_uni_##name##step##_##bitd##_##opt(dst, dststride, src, _srcstride,                         \ 
   49                                                           height, hf, vf, width);                               \ 
   53 #define mc_rep_funcs(name, bitd, step, W, opt)      \ 
   54     mc_rep_func(name, bitd, step, W, opt)           \ 
   55     mc_rep_uni_func(name, bitd, step, W, opt) 
   57 #define MC_REP_FUNCS_SSE4(fname)                 \ 
   58     mc_rep_funcs(fname,  8, 16,128, sse4)        \ 
   59     mc_rep_funcs(fname,  8, 16, 64, sse4)        \ 
   60     mc_rep_funcs(fname,  8, 16, 32, sse4)        \ 
   61     mc_rep_funcs(fname, 10,  8,128, sse4)        \ 
   62     mc_rep_funcs(fname, 10,  8, 64, sse4)        \ 
   63     mc_rep_funcs(fname, 10,  8, 32, sse4)        \ 
   64     mc_rep_funcs(fname, 10,  8, 16, sse4)        \ 
   65     mc_rep_funcs(fname, 12,  8,128, sse4)        \ 
   66     mc_rep_funcs(fname, 12,  8, 64, sse4)        \ 
   67     mc_rep_funcs(fname, 12,  8, 32, sse4)        \ 
   68     mc_rep_funcs(fname, 12,  8, 16, sse4)        \ 
   70 #if ARCH_X86_64 && HAVE_SSE4_EXTERNAL 
   81 #if HAVE_AVX2_EXTERNAL 
   83 #define MC_REP_FUNCS_AVX2_NO8(fname)           \ 
   84     mc_rep_funcs(fname,10, 16, 32, avx2)       \ 
   85     mc_rep_funcs(fname,10, 16, 64, avx2)       \ 
   86     mc_rep_funcs(fname,10, 16,128, avx2)       \ 
   87     mc_rep_funcs(fname,12, 16, 32, avx2)       \ 
   88     mc_rep_funcs(fname,12, 16, 64, avx2)       \ 
   89     mc_rep_funcs(fname,12, 16,128, avx2)       \ 
   91 #define MC_REP_FUNCS_AVX2(fname)               \ 
   92     mc_rep_funcs(fname, 8, 32, 64, avx2)       \ 
   93     mc_rep_funcs(fname, 8, 32,128, avx2)       \ 
   94     MC_REP_FUNCS_AVX2_NO8(fname) 
   96 MC_REP_FUNCS_AVX2(pixels)
 
   97 MC_REP_FUNCS_AVX2(8tap_h)
 
   98 MC_REP_FUNCS_AVX2(8tap_v)
 
   99 MC_REP_FUNCS_AVX2_NO8(8tap_hv)
 
  100 MC_REP_FUNCS_AVX2(4tap_h)
 
  101 MC_REP_FUNCS_AVX2(4tap_v)
 
  102 MC_REP_FUNCS_AVX2_NO8(4tap_hv)