1 sub vp9_common_forward_decls() {
7 #include "vpx/vpx_integer.h"
8 #include "vp9/common/vp9_common.h"
9 #include "vp9/common/vp9_enums.h"
13 /* Encoder forward decls */
15 struct vp9_variance_vtable;
16 struct search_site_config;
19 struct yv12_buffer_config;
22 forward_decls qw/vp9_common_forward_decls/;
24 # x86inc.asm doesn't work if pic is enabled on 32 bit platforms so no assembly.
25 if (vpx_config("CONFIG_USE_X86INC") eq "yes") {
28 $sse2_x86inc = 'sse2';
29 $ssse3_x86inc = 'ssse3';
31 $avx2_x86inc = 'avx2';
33 $mmx_x86inc = $sse_x86inc = $sse2_x86inc = $ssse3_x86inc =
34 $avx_x86inc = $avx2_x86inc = '';
37 # this variable is for functions that are 64 bit only.
38 if ($opts{arch} eq "x86_64") {
40 $sse2_x86_64 = 'sse2';
41 $ssse3_x86_64 = 'ssse3';
43 $avx2_x86_64 = 'avx2';
45 $mmx_x86_64 = $sse2_x86_64 = $ssse3_x86_64 =
46 $avx_x86_64 = $avx2_x86_64 = '';
49 # optimizations which depend on multiple features
50 if ((vpx_config("HAVE_AVX2") eq "yes") && (vpx_config("HAVE_SSSE3") eq "yes")) {
59 add_proto qw/void vp9_d207_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
60 specialize qw/vp9_d207_predictor_4x4/, "$ssse3_x86inc";
62 add_proto qw/void vp9_d45_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
63 specialize qw/vp9_d45_predictor_4x4/, "$ssse3_x86inc";
65 add_proto qw/void vp9_d63_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
66 specialize qw/vp9_d63_predictor_4x4/, "$ssse3_x86inc";
68 add_proto qw/void vp9_h_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
69 specialize qw/vp9_h_predictor_4x4 neon_asm dspr2/, "$ssse3_x86inc";
70 $vp9_h_predictor_4x4_neon_asm=vp9_h_predictor_4x4_neon;
72 add_proto qw/void vp9_d117_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
73 specialize qw/vp9_d117_predictor_4x4/;
75 add_proto qw/void vp9_d135_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
76 specialize qw/vp9_d135_predictor_4x4/;
78 add_proto qw/void vp9_d153_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
79 specialize qw/vp9_d153_predictor_4x4/, "$ssse3_x86inc";
81 add_proto qw/void vp9_v_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
82 specialize qw/vp9_v_predictor_4x4 neon_asm/, "$sse_x86inc";
83 $vp9_v_predictor_4x4_neon_asm=vp9_v_predictor_4x4_neon;
85 add_proto qw/void vp9_tm_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
86 specialize qw/vp9_tm_predictor_4x4 neon_asm dspr2/, "$sse_x86inc";
87 $vp9_tm_predictor_4x4_neon_asm=vp9_tm_predictor_4x4_neon;
89 add_proto qw/void vp9_dc_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
90 specialize qw/vp9_dc_predictor_4x4 dspr2/, "$sse_x86inc";
92 add_proto qw/void vp9_dc_top_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
93 specialize qw/vp9_dc_top_predictor_4x4/;
95 add_proto qw/void vp9_dc_left_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
96 specialize qw/vp9_dc_left_predictor_4x4/;
98 add_proto qw/void vp9_dc_128_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
99 specialize qw/vp9_dc_128_predictor_4x4/;
101 add_proto qw/void vp9_d207_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
102 specialize qw/vp9_d207_predictor_8x8/, "$ssse3_x86inc";
104 add_proto qw/void vp9_d45_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
105 specialize qw/vp9_d45_predictor_8x8/, "$ssse3_x86inc";
107 add_proto qw/void vp9_d63_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
108 specialize qw/vp9_d63_predictor_8x8/, "$ssse3_x86inc";
110 add_proto qw/void vp9_h_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
111 specialize qw/vp9_h_predictor_8x8 neon_asm dspr2/, "$ssse3_x86inc";
112 $vp9_h_predictor_8x8_neon_asm=vp9_h_predictor_8x8_neon;
114 add_proto qw/void vp9_d117_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
115 specialize qw/vp9_d117_predictor_8x8/;
117 add_proto qw/void vp9_d135_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
118 specialize qw/vp9_d135_predictor_8x8/;
120 add_proto qw/void vp9_d153_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
121 specialize qw/vp9_d153_predictor_8x8/, "$ssse3_x86inc";
123 add_proto qw/void vp9_v_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
124 specialize qw/vp9_v_predictor_8x8 neon_asm/, "$sse_x86inc";
125 $vp9_v_predictor_8x8_neon_asm=vp9_v_predictor_8x8_neon;
127 add_proto qw/void vp9_tm_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
128 specialize qw/vp9_tm_predictor_8x8 neon_asm dspr2/, "$sse2_x86inc";
129 $vp9_tm_predictor_8x8_neon_asm=vp9_tm_predictor_8x8_neon;
131 add_proto qw/void vp9_dc_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
132 specialize qw/vp9_dc_predictor_8x8 dspr2/, "$sse_x86inc";
134 add_proto qw/void vp9_dc_top_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
135 specialize qw/vp9_dc_top_predictor_8x8/;
137 add_proto qw/void vp9_dc_left_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
138 specialize qw/vp9_dc_left_predictor_8x8/;
140 add_proto qw/void vp9_dc_128_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
141 specialize qw/vp9_dc_128_predictor_8x8/;
143 add_proto qw/void vp9_d207_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
144 specialize qw/vp9_d207_predictor_16x16/, "$ssse3_x86inc";
146 add_proto qw/void vp9_d45_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
147 specialize qw/vp9_d45_predictor_16x16/, "$ssse3_x86inc";
149 add_proto qw/void vp9_d63_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
150 specialize qw/vp9_d63_predictor_16x16/, "$ssse3_x86inc";
152 add_proto qw/void vp9_h_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
153 specialize qw/vp9_h_predictor_16x16 neon_asm dspr2/, "$ssse3_x86inc";
154 $vp9_h_predictor_16x16_neon_asm=vp9_h_predictor_16x16_neon;
156 add_proto qw/void vp9_d117_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
157 specialize qw/vp9_d117_predictor_16x16/;
159 add_proto qw/void vp9_d135_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
160 specialize qw/vp9_d135_predictor_16x16/;
162 add_proto qw/void vp9_d153_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
163 specialize qw/vp9_d153_predictor_16x16/, "$ssse3_x86inc";
165 add_proto qw/void vp9_v_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
166 specialize qw/vp9_v_predictor_16x16 neon_asm/, "$sse2_x86inc";
167 $vp9_v_predictor_16x16_neon_asm=vp9_v_predictor_16x16_neon;
169 add_proto qw/void vp9_tm_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
170 specialize qw/vp9_tm_predictor_16x16 neon_asm/, "$sse2_x86inc";
171 $vp9_tm_predictor_16x16_neon_asm=vp9_tm_predictor_16x16_neon;
173 add_proto qw/void vp9_dc_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
174 specialize qw/vp9_dc_predictor_16x16 dspr2/, "$sse2_x86inc";
176 add_proto qw/void vp9_dc_top_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
177 specialize qw/vp9_dc_top_predictor_16x16/;
179 add_proto qw/void vp9_dc_left_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
180 specialize qw/vp9_dc_left_predictor_16x16/;
182 add_proto qw/void vp9_dc_128_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
183 specialize qw/vp9_dc_128_predictor_16x16/;
185 add_proto qw/void vp9_d207_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
186 specialize qw/vp9_d207_predictor_32x32/, "$ssse3_x86inc";
188 add_proto qw/void vp9_d45_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
189 specialize qw/vp9_d45_predictor_32x32/, "$ssse3_x86inc";
191 add_proto qw/void vp9_d63_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
192 specialize qw/vp9_d63_predictor_32x32/, "$ssse3_x86inc";
194 add_proto qw/void vp9_h_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
195 specialize qw/vp9_h_predictor_32x32 neon_asm/, "$ssse3_x86inc";
196 $vp9_h_predictor_32x32_neon_asm=vp9_h_predictor_32x32_neon;
198 add_proto qw/void vp9_d117_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
199 specialize qw/vp9_d117_predictor_32x32/;
201 add_proto qw/void vp9_d135_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
202 specialize qw/vp9_d135_predictor_32x32/;
204 add_proto qw/void vp9_d153_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
205 specialize qw/vp9_d153_predictor_32x32/;
207 add_proto qw/void vp9_v_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
208 specialize qw/vp9_v_predictor_32x32 neon_asm/, "$sse2_x86inc";
209 $vp9_v_predictor_32x32_neon_asm=vp9_v_predictor_32x32_neon;
211 add_proto qw/void vp9_tm_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
212 specialize qw/vp9_tm_predictor_32x32 neon_asm/, "$sse2_x86_64";
213 $vp9_tm_predictor_32x32_neon_asm=vp9_tm_predictor_32x32_neon;
215 add_proto qw/void vp9_dc_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
216 specialize qw/vp9_dc_predictor_32x32/, "$sse2_x86inc";
218 add_proto qw/void vp9_dc_top_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
219 specialize qw/vp9_dc_top_predictor_32x32/;
221 add_proto qw/void vp9_dc_left_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
222 specialize qw/vp9_dc_left_predictor_32x32/;
224 add_proto qw/void vp9_dc_128_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
225 specialize qw/vp9_dc_128_predictor_32x32/;
230 add_proto qw/void vp9_lpf_vertical_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
231 specialize qw/vp9_lpf_vertical_16 sse2 neon_asm dspr2/;
232 $vp9_lpf_vertical_16_neon_asm=vp9_lpf_vertical_16_neon;
234 add_proto qw/void vp9_lpf_vertical_16_dual/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
235 specialize qw/vp9_lpf_vertical_16_dual sse2 neon_asm dspr2/;
236 $vp9_lpf_vertical_16_dual_neon_asm=vp9_lpf_vertical_16_dual_neon;
238 add_proto qw/void vp9_lpf_vertical_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
239 specialize qw/vp9_lpf_vertical_8 sse2 neon_asm dspr2/;
240 $vp9_lpf_vertical_8_neon_asm=vp9_lpf_vertical_8_neon;
242 add_proto qw/void vp9_lpf_vertical_8_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
243 specialize qw/vp9_lpf_vertical_8_dual sse2 neon_asm dspr2/;
244 $vp9_lpf_vertical_8_dual_neon_asm=vp9_lpf_vertical_8_dual_neon;
246 add_proto qw/void vp9_lpf_vertical_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
247 specialize qw/vp9_lpf_vertical_4 mmx neon_asm dspr2/;
248 $vp9_lpf_vertical_4_neon_asm=vp9_lpf_vertical_4_neon;
250 add_proto qw/void vp9_lpf_vertical_4_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
251 specialize qw/vp9_lpf_vertical_4_dual sse2 neon_asm dspr2/;
252 $vp9_lpf_vertical_4_dual_neon_asm=vp9_lpf_vertical_4_dual_neon;
254 add_proto qw/void vp9_lpf_horizontal_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
255 specialize qw/vp9_lpf_horizontal_16 sse2 avx2 neon_asm dspr2/;
256 $vp9_lpf_horizontal_16_neon_asm=vp9_lpf_horizontal_16_neon;
258 add_proto qw/void vp9_lpf_horizontal_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
259 specialize qw/vp9_lpf_horizontal_8 sse2 neon_asm dspr2/;
260 $vp9_lpf_horizontal_8_neon_asm=vp9_lpf_horizontal_8_neon;
262 add_proto qw/void vp9_lpf_horizontal_8_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
263 specialize qw/vp9_lpf_horizontal_8_dual sse2 neon_asm dspr2/;
264 $vp9_lpf_horizontal_8_dual_neon_asm=vp9_lpf_horizontal_8_dual_neon;
266 add_proto qw/void vp9_lpf_horizontal_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
267 specialize qw/vp9_lpf_horizontal_4 mmx neon_asm dspr2/;
268 $vp9_lpf_horizontal_4_neon_asm=vp9_lpf_horizontal_4_neon;
270 add_proto qw/void vp9_lpf_horizontal_4_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
271 specialize qw/vp9_lpf_horizontal_4_dual sse2 neon_asm dspr2/;
272 $vp9_lpf_horizontal_4_dual_neon_asm=vp9_lpf_horizontal_4_dual_neon;
277 if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") {
278 add_proto qw/void vp9_mbpost_proc_down/, "uint8_t *dst, int pitch, int rows, int cols, int flimit";
279 specialize qw/vp9_mbpost_proc_down sse2/;
280 $vp9_mbpost_proc_down_sse2=vp9_mbpost_proc_down_xmm;
282 add_proto qw/void vp9_mbpost_proc_across_ip/, "uint8_t *src, int pitch, int rows, int cols, int flimit";
283 specialize qw/vp9_mbpost_proc_across_ip sse2/;
284 $vp9_mbpost_proc_across_ip_sse2=vp9_mbpost_proc_across_ip_xmm;
286 add_proto qw/void vp9_post_proc_down_and_across/, "const uint8_t *src_ptr, uint8_t *dst_ptr, int src_pixels_per_line, int dst_pixels_per_line, int rows, int cols, int flimit";
287 specialize qw/vp9_post_proc_down_and_across sse2/;
288 $vp9_post_proc_down_and_across_sse2=vp9_post_proc_down_and_across_xmm;
290 add_proto qw/void vp9_plane_add_noise/, "uint8_t *Start, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int Width, unsigned int Height, int Pitch";
291 specialize qw/vp9_plane_add_noise sse2/;
292 $vp9_plane_add_noise_sse2=vp9_plane_add_noise_wmt;
298 add_proto qw/void vp9_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
299 specialize qw/vp9_convolve_copy neon_asm dspr2/, "$sse2_x86inc";
300 $vp9_convolve_copy_neon_asm=vp9_convolve_copy_neon;
302 add_proto qw/void vp9_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
303 specialize qw/vp9_convolve_avg neon_asm dspr2/, "$sse2_x86inc";
304 $vp9_convolve_avg_neon_asm=vp9_convolve_avg_neon;
306 add_proto qw/void vp9_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
307 specialize qw/vp9_convolve8 sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
308 $vp9_convolve8_neon_asm=vp9_convolve8_neon;
310 add_proto qw/void vp9_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
311 specialize qw/vp9_convolve8_horiz sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
312 $vp9_convolve8_horiz_neon_asm=vp9_convolve8_horiz_neon;
314 add_proto qw/void vp9_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
315 specialize qw/vp9_convolve8_vert sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
316 $vp9_convolve8_vert_neon_asm=vp9_convolve8_vert_neon;
318 add_proto qw/void vp9_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
319 specialize qw/vp9_convolve8_avg sse2 ssse3 neon_asm dspr2/;
320 $vp9_convolve8_avg_neon_asm=vp9_convolve8_avg_neon;
322 add_proto qw/void vp9_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
323 specialize qw/vp9_convolve8_avg_horiz sse2 ssse3 neon_asm dspr2/;
324 $vp9_convolve8_avg_horiz_neon_asm=vp9_convolve8_avg_horiz_neon;
326 add_proto qw/void vp9_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
327 specialize qw/vp9_convolve8_avg_vert sse2 ssse3 neon_asm dspr2/;
328 $vp9_convolve8_avg_vert_neon_asm=vp9_convolve8_avg_vert_neon;
333 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
334 # Note as optimized versions of these functions are added we need to add a check to ensure
335 # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only.
336 add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
337 specialize qw/vp9_idct4x4_1_add/;
339 add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
340 specialize qw/vp9_idct4x4_16_add/;
342 add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
343 specialize qw/vp9_idct8x8_1_add/;
345 add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
346 specialize qw/vp9_idct8x8_64_add/;
348 add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
349 specialize qw/vp9_idct8x8_12_add/;
351 add_proto qw/void vp9_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
352 specialize qw/vp9_idct16x16_1_add/;
354 add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
355 specialize qw/vp9_idct16x16_256_add/;
357 add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
358 specialize qw/vp9_idct16x16_10_add/;
360 add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
361 specialize qw/vp9_idct32x32_1024_add/;
363 add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
364 specialize qw/vp9_idct32x32_34_add/;
366 add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
367 specialize qw/vp9_idct32x32_1_add/;
369 add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
370 specialize qw/vp9_iht4x4_16_add/;
372 add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
373 specialize qw/vp9_iht8x8_64_add/;
375 add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
376 specialize qw/vp9_iht16x16_256_add/;
380 add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
381 specialize qw/vp9_iwht4x4_1_add/;
383 add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
384 specialize qw/vp9_iwht4x4_16_add/;
387 # Force C versions if CONFIG_EMULATE_HARDWARE is 1
388 if (vpx_config("CONFIG_EMULATE_HARDWARE") eq "yes") {
389 add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
390 specialize qw/vp9_idct4x4_1_add/;
392 add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
393 specialize qw/vp9_idct4x4_16_add/;
395 add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
396 specialize qw/vp9_idct8x8_1_add/;
398 add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
399 specialize qw/vp9_idct8x8_64_add/;
401 add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
402 specialize qw/vp9_idct8x8_12_add/;
404 add_proto qw/void vp9_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
405 specialize qw/vp9_idct16x16_1_add/;
407 add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
408 specialize qw/vp9_idct16x16_256_add/;
410 add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
411 specialize qw/vp9_idct16x16_10_add/;
413 add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
414 specialize qw/vp9_idct32x32_1024_add/;
416 add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
417 specialize qw/vp9_idct32x32_34_add/;
419 add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
420 specialize qw/vp9_idct32x32_1_add/;
422 add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
423 specialize qw/vp9_iht4x4_16_add/;
425 add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
426 specialize qw/vp9_iht8x8_64_add/;
428 add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
429 specialize qw/vp9_iht16x16_256_add/;
433 add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
434 specialize qw/vp9_iwht4x4_1_add/;
436 add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
437 specialize qw/vp9_iwht4x4_16_add/;
439 add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
440 specialize qw/vp9_idct4x4_1_add sse2 neon_asm dspr2/;
441 $vp9_idct4x4_1_add_neon_asm=vp9_idct4x4_1_add_neon;
443 add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
444 specialize qw/vp9_idct4x4_16_add sse2 neon_asm dspr2/;
445 $vp9_idct4x4_16_add_neon_asm=vp9_idct4x4_16_add_neon;
447 add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
448 specialize qw/vp9_idct8x8_1_add sse2 neon_asm dspr2/;
449 $vp9_idct8x8_1_add_neon_asm=vp9_idct8x8_1_add_neon;
451 add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
452 specialize qw/vp9_idct8x8_64_add sse2 neon_asm dspr2/, "$ssse3_x86_64";
453 $vp9_idct8x8_64_add_neon_asm=vp9_idct8x8_64_add_neon;
455 add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
456 specialize qw/vp9_idct8x8_12_add sse2 neon_asm dspr2/, "$ssse3_x86_64";
457 $vp9_idct8x8_12_add_neon_asm=vp9_idct8x8_12_add_neon;
459 add_proto qw/void vp9_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
460 specialize qw/vp9_idct16x16_1_add sse2 neon_asm dspr2/;
461 $vp9_idct16x16_1_add_neon_asm=vp9_idct16x16_1_add_neon;
463 add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
464 specialize qw/vp9_idct16x16_256_add sse2 ssse3 neon_asm dspr2/;
465 $vp9_idct16x16_256_add_neon_asm=vp9_idct16x16_256_add_neon;
467 add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
468 specialize qw/vp9_idct16x16_10_add sse2 ssse3 neon_asm dspr2/;
469 $vp9_idct16x16_10_add_neon_asm=vp9_idct16x16_10_add_neon;
471 add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
472 specialize qw/vp9_idct32x32_1024_add sse2 neon_asm dspr2/;
473 $vp9_idct32x32_1024_add_neon_asm=vp9_idct32x32_1024_add_neon;
475 add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
476 specialize qw/vp9_idct32x32_34_add sse2 neon_asm dspr2/;
477 $vp9_idct32x32_34_add_neon_asm=vp9_idct32x32_1024_add_neon;
479 add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
480 specialize qw/vp9_idct32x32_1_add sse2 neon_asm dspr2/;
481 $vp9_idct32x32_1_add_neon_asm=vp9_idct32x32_1_add_neon;
483 add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
484 specialize qw/vp9_iht4x4_16_add sse2 neon_asm dspr2/;
485 $vp9_iht4x4_16_add_neon_asm=vp9_iht4x4_16_add_neon;
487 add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
488 specialize qw/vp9_iht8x8_64_add sse2 neon_asm dspr2/;
489 $vp9_iht8x8_64_add_neon_asm=vp9_iht8x8_64_add_neon;
491 add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
492 specialize qw/vp9_iht16x16_256_add sse2 dspr2/;
496 add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
497 specialize qw/vp9_iwht4x4_1_add/;
499 add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
500 specialize qw/vp9_iwht4x4_16_add/;
504 # High bitdepth functions
505 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
509 add_proto qw/void vp9_highbd_d207_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
510 specialize qw/vp9_highbd_d207_predictor_4x4/;
512 add_proto qw/void vp9_highbd_d45_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
513 specialize qw/vp9_highbd_d45_predictor_4x4/;
515 add_proto qw/void vp9_highbd_d63_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
516 specialize qw/vp9_highbd_d63_predictor_4x4/;
518 add_proto qw/void vp9_highbd_h_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
519 specialize qw/vp9_highbd_h_predictor_4x4/;
521 add_proto qw/void vp9_highbd_d117_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
522 specialize qw/vp9_highbd_d117_predictor_4x4/;
524 add_proto qw/void vp9_highbd_d135_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
525 specialize qw/vp9_highbd_d135_predictor_4x4/;
527 add_proto qw/void vp9_highbd_d153_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
528 specialize qw/vp9_highbd_d153_predictor_4x4/;
530 add_proto qw/void vp9_highbd_v_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
531 specialize qw/vp9_highbd_v_predictor_4x4 neon/, "$sse_x86inc";
533 add_proto qw/void vp9_highbd_tm_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
534 specialize qw/vp9_highbd_tm_predictor_4x4/, "$sse_x86inc";
536 add_proto qw/void vp9_highbd_dc_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
537 specialize qw/vp9_highbd_dc_predictor_4x4/, "$sse_x86inc";
539 add_proto qw/void vp9_highbd_dc_top_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
540 specialize qw/vp9_highbd_dc_top_predictor_4x4/;
542 add_proto qw/void vp9_highbd_dc_left_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
543 specialize qw/vp9_highbd_dc_left_predictor_4x4/;
545 add_proto qw/void vp9_highbd_dc_128_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
546 specialize qw/vp9_highbd_dc_128_predictor_4x4/;
548 add_proto qw/void vp9_highbd_d207_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
549 specialize qw/vp9_highbd_d207_predictor_8x8/;
551 add_proto qw/void vp9_highbd_d45_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
552 specialize qw/vp9_highbd_d45_predictor_8x8/;
554 add_proto qw/void vp9_highbd_d63_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
555 specialize qw/vp9_highbd_d63_predictor_8x8/;
557 add_proto qw/void vp9_highbd_h_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
558 specialize qw/vp9_highbd_h_predictor_8x8/;
560 add_proto qw/void vp9_highbd_d117_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
561 specialize qw/vp9_highbd_d117_predictor_8x8/;
563 add_proto qw/void vp9_highbd_d135_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
564 specialize qw/vp9_highbd_d135_predictor_8x8/;
566 add_proto qw/void vp9_highbd_d153_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
567 specialize qw/vp9_highbd_d153_predictor_8x8/;
569 add_proto qw/void vp9_highbd_v_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
570 specialize qw/vp9_highbd_v_predictor_8x8/, "$sse2_x86inc";
572 add_proto qw/void vp9_highbd_tm_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
573 specialize qw/vp9_highbd_tm_predictor_8x8/, "$sse2_x86inc";
575 add_proto qw/void vp9_highbd_dc_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
576 specialize qw/vp9_highbd_dc_predictor_8x8/, "$sse2_x86inc";;
578 add_proto qw/void vp9_highbd_dc_top_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
579 specialize qw/vp9_highbd_dc_top_predictor_8x8/;
581 add_proto qw/void vp9_highbd_dc_left_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
582 specialize qw/vp9_highbd_dc_left_predictor_8x8/;
584 add_proto qw/void vp9_highbd_dc_128_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
585 specialize qw/vp9_highbd_dc_128_predictor_8x8/;
587 add_proto qw/void vp9_highbd_d207_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
588 specialize qw/vp9_highbd_d207_predictor_16x16/;
590 add_proto qw/void vp9_highbd_d45_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
591 specialize qw/vp9_highbd_d45_predictor_16x16/;
593 add_proto qw/void vp9_highbd_d63_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
594 specialize qw/vp9_highbd_d63_predictor_16x16/;
596 add_proto qw/void vp9_highbd_h_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
597 specialize qw/vp9_highbd_h_predictor_16x16/;
599 add_proto qw/void vp9_highbd_d117_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
600 specialize qw/vp9_highbd_d117_predictor_16x16/;
602 add_proto qw/void vp9_highbd_d135_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
603 specialize qw/vp9_highbd_d135_predictor_16x16/;
605 add_proto qw/void vp9_highbd_d153_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
606 specialize qw/vp9_highbd_d153_predictor_16x16/;
608 add_proto qw/void vp9_highbd_v_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
609 specialize qw/vp9_highbd_v_predictor_16x16 neon/, "$sse2_x86inc";
611 add_proto qw/void vp9_highbd_tm_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
612 specialize qw/vp9_highbd_tm_predictor_16x16/, "$sse2_x86_64";
614 add_proto qw/void vp9_highbd_dc_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
615 specialize qw/vp9_highbd_dc_predictor_16x16/, "$sse2_x86inc";
617 add_proto qw/void vp9_highbd_dc_top_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
618 specialize qw/vp9_highbd_dc_top_predictor_16x16/;
620 add_proto qw/void vp9_highbd_dc_left_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
621 specialize qw/vp9_highbd_dc_left_predictor_16x16/;
623 add_proto qw/void vp9_highbd_dc_128_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
624 specialize qw/vp9_highbd_dc_128_predictor_16x16/;
626 add_proto qw/void vp9_highbd_d207_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
627 specialize qw/vp9_highbd_d207_predictor_32x32/;
629 add_proto qw/void vp9_highbd_d45_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
630 specialize qw/vp9_highbd_d45_predictor_32x32/;
632 add_proto qw/void vp9_highbd_d63_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
633 specialize qw/vp9_highbd_d63_predictor_32x32/;
635 add_proto qw/void vp9_highbd_h_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
636 specialize qw/vp9_highbd_h_predictor_32x32/;
638 add_proto qw/void vp9_highbd_d117_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
639 specialize qw/vp9_highbd_d117_predictor_32x32/;
641 add_proto qw/void vp9_highbd_d135_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
642 specialize qw/vp9_highbd_d135_predictor_32x32/;
644 add_proto qw/void vp9_highbd_d153_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
645 specialize qw/vp9_highbd_d153_predictor_32x32/;
647 add_proto qw/void vp9_highbd_v_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
648 specialize qw/vp9_highbd_v_predictor_32x32/, "$sse2_x86inc";
650 add_proto qw/void vp9_highbd_tm_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
651 specialize qw/vp9_highbd_tm_predictor_32x32/, "$sse2_x86_64";
653 add_proto qw/void vp9_highbd_dc_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
654 specialize qw/vp9_highbd_dc_predictor_32x32/, "$sse2_x86_64";
656 add_proto qw/void vp9_highbd_dc_top_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
657 specialize qw/vp9_highbd_dc_top_predictor_32x32/;
659 add_proto qw/void vp9_highbd_dc_left_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
660 specialize qw/vp9_highbd_dc_left_predictor_32x32/;
662 add_proto qw/void vp9_highbd_dc_128_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
663 specialize qw/vp9_highbd_dc_128_predictor_32x32/;
668 add_proto qw/void vp9_highbd_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
669 specialize qw/vp9_highbd_convolve_copy/;
671 add_proto qw/void vp9_highbd_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
672 specialize qw/vp9_highbd_convolve_avg/;
674 add_proto qw/void vp9_highbd_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
675 specialize qw/vp9_highbd_convolve8/, "$sse2_x86_64";
677 add_proto qw/void vp9_highbd_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
678 specialize qw/vp9_highbd_convolve8_horiz/, "$sse2_x86_64";
680 add_proto qw/void vp9_highbd_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
681 specialize qw/vp9_highbd_convolve8_vert/, "$sse2_x86_64";
683 add_proto qw/void vp9_highbd_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
684 specialize qw/vp9_highbd_convolve8_avg/, "$sse2_x86_64";
686 add_proto qw/void vp9_highbd_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
687 specialize qw/vp9_highbd_convolve8_avg_horiz/, "$sse2_x86_64";
689 add_proto qw/void vp9_highbd_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
690 specialize qw/vp9_highbd_convolve8_avg_vert/, "$sse2_x86_64";
695 add_proto qw/void vp9_highbd_lpf_vertical_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
696 specialize qw/vp9_highbd_lpf_vertical_16 sse2/;
698 add_proto qw/void vp9_highbd_lpf_vertical_16_dual/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
699 specialize qw/vp9_highbd_lpf_vertical_16_dual sse2/;
701 add_proto qw/void vp9_highbd_lpf_vertical_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
702 specialize qw/vp9_highbd_lpf_vertical_8 sse2/;
704 add_proto qw/void vp9_highbd_lpf_vertical_8_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
705 specialize qw/vp9_highbd_lpf_vertical_8_dual sse2/;
707 add_proto qw/void vp9_highbd_lpf_vertical_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
708 specialize qw/vp9_highbd_lpf_vertical_4 sse2/;
710 add_proto qw/void vp9_highbd_lpf_vertical_4_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
711 specialize qw/vp9_highbd_lpf_vertical_4_dual sse2/;
713 add_proto qw/void vp9_highbd_lpf_horizontal_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
714 specialize qw/vp9_highbd_lpf_horizontal_16 sse2/;
716 add_proto qw/void vp9_highbd_lpf_horizontal_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
717 specialize qw/vp9_highbd_lpf_horizontal_8 sse2/;
719 add_proto qw/void vp9_highbd_lpf_horizontal_8_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
720 specialize qw/vp9_highbd_lpf_horizontal_8_dual sse2/;
722 add_proto qw/void vp9_highbd_lpf_horizontal_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
723 specialize qw/vp9_highbd_lpf_horizontal_4 sse2/;
725 add_proto qw/void vp9_highbd_lpf_horizontal_4_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
726 specialize qw/vp9_highbd_lpf_horizontal_4_dual sse2/;
731 if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") {
732 add_proto qw/void vp9_highbd_mbpost_proc_down/, "uint16_t *dst, int pitch, int rows, int cols, int flimit";
733 specialize qw/vp9_highbd_mbpost_proc_down/;
735 add_proto qw/void vp9_highbd_mbpost_proc_across_ip/, "uint16_t *src, int pitch, int rows, int cols, int flimit";
736 specialize qw/vp9_highbd_mbpost_proc_across_ip/;
738 add_proto qw/void vp9_highbd_post_proc_down_and_across/, "const uint16_t *src_ptr, uint16_t *dst_ptr, int src_pixels_per_line, int dst_pixels_per_line, int rows, int cols, int flimit";
739 specialize qw/vp9_highbd_post_proc_down_and_across/;
741 add_proto qw/void vp9_highbd_plane_add_noise/, "uint8_t *Start, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int Width, unsigned int Height, int Pitch";
742 specialize qw/vp9_highbd_plane_add_noise/;
748 # Note as optimized versions of these functions are added we need to add a check to ensure
749 # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only.
750 add_proto qw/void vp9_highbd_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
751 specialize qw/vp9_highbd_idct4x4_1_add/;
753 add_proto qw/void vp9_highbd_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
754 specialize qw/vp9_highbd_idct4x4_16_add/;
756 add_proto qw/void vp9_highbd_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
757 specialize qw/vp9_highbd_idct8x8_1_add/;
759 add_proto qw/void vp9_highbd_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
760 specialize qw/vp9_highbd_idct8x8_64_add/;
762 add_proto qw/void vp9_highbd_idct8x8_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
763 specialize qw/vp9_highbd_idct8x8_10_add/;
765 add_proto qw/void vp9_highbd_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
766 specialize qw/vp9_highbd_idct16x16_1_add/;
768 add_proto qw/void vp9_highbd_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
769 specialize qw/vp9_highbd_idct16x16_256_add/;
771 add_proto qw/void vp9_highbd_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
772 specialize qw/vp9_highbd_idct16x16_10_add/;
774 add_proto qw/void vp9_highbd_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
775 specialize qw/vp9_highbd_idct32x32_1024_add/;
777 add_proto qw/void vp9_highbd_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
778 specialize qw/vp9_highbd_idct32x32_34_add/;
780 add_proto qw/void vp9_highbd_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
781 specialize qw/vp9_highbd_idct32x32_1_add/;
783 add_proto qw/void vp9_highbd_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd";
784 specialize qw/vp9_highbd_iht4x4_16_add/;
786 add_proto qw/void vp9_highbd_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd";
787 specialize qw/vp9_highbd_iht8x8_64_add/;
789 add_proto qw/void vp9_highbd_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd";
790 specialize qw/vp9_highbd_iht16x16_256_add/;
794 add_proto qw/void vp9_highbd_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
795 specialize qw/vp9_highbd_iwht4x4_1_add/;
797 add_proto qw/void vp9_highbd_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
798 specialize qw/vp9_highbd_iwht4x4_16_add/;
802 # Encoder functions below this point.
804 if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") {
808 add_proto qw/unsigned int vp9_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
809 specialize qw/vp9_variance32x16 avx2/, "$sse2_x86inc";
811 add_proto qw/unsigned int vp9_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
812 specialize qw/vp9_variance16x32/, "$sse2_x86inc";
814 add_proto qw/unsigned int vp9_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
815 specialize qw/vp9_variance64x32 avx2/, "$sse2_x86inc";
817 add_proto qw/unsigned int vp9_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
818 specialize qw/vp9_variance32x64/, "$sse2_x86inc";
820 add_proto qw/unsigned int vp9_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
821 specialize qw/vp9_variance32x32 avx2 neon/, "$sse2_x86inc";
823 add_proto qw/unsigned int vp9_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
824 specialize qw/vp9_variance64x64 avx2/, "$sse2_x86inc";
826 add_proto qw/unsigned int vp9_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
827 specialize qw/vp9_variance16x16 avx2 neon/, "$sse2_x86inc";
829 add_proto qw/unsigned int vp9_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
830 specialize qw/vp9_variance16x8/, "$sse2_x86inc";
832 add_proto qw/unsigned int vp9_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
833 specialize qw/vp9_variance8x16/, "$sse2_x86inc";
835 add_proto qw/unsigned int vp9_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
836 specialize qw/vp9_variance8x8 neon/, "$sse2_x86inc";
838 add_proto qw/void vp9_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
839 specialize qw/vp9_get8x8var neon/, "$sse2_x86inc";
841 add_proto qw/void vp9_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
842 specialize qw/vp9_get16x16var avx2 neon/, "$sse2_x86inc";
844 add_proto qw/unsigned int vp9_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
845 specialize qw/vp9_variance8x4/, "$sse2_x86inc";
847 add_proto qw/unsigned int vp9_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
848 specialize qw/vp9_variance4x8/, "$sse2_x86inc";
850 add_proto qw/unsigned int vp9_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
851 specialize qw/vp9_variance4x4/, "$sse2_x86inc";
853 add_proto qw/unsigned int vp9_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
854 specialize qw/vp9_sub_pixel_variance64x64 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
856 add_proto qw/unsigned int vp9_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
857 specialize qw/vp9_sub_pixel_avg_variance64x64 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
859 add_proto qw/unsigned int vp9_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
860 specialize qw/vp9_sub_pixel_variance32x64/, "$sse2_x86inc", "$ssse3_x86inc";
862 add_proto qw/unsigned int vp9_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
863 specialize qw/vp9_sub_pixel_avg_variance32x64/, "$sse2_x86inc", "$ssse3_x86inc";
865 add_proto qw/unsigned int vp9_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
866 specialize qw/vp9_sub_pixel_variance64x32/, "$sse2_x86inc", "$ssse3_x86inc";
868 add_proto qw/unsigned int vp9_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
869 specialize qw/vp9_sub_pixel_avg_variance64x32/, "$sse2_x86inc", "$ssse3_x86inc";
871 add_proto qw/unsigned int vp9_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
872 specialize qw/vp9_sub_pixel_variance32x16/, "$sse2_x86inc", "$ssse3_x86inc";
874 add_proto qw/unsigned int vp9_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
875 specialize qw/vp9_sub_pixel_avg_variance32x16/, "$sse2_x86inc", "$ssse3_x86inc";
877 add_proto qw/unsigned int vp9_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
878 specialize qw/vp9_sub_pixel_variance16x32/, "$sse2_x86inc", "$ssse3_x86inc";
880 add_proto qw/unsigned int vp9_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
881 specialize qw/vp9_sub_pixel_avg_variance16x32/, "$sse2_x86inc", "$ssse3_x86inc";
883 add_proto qw/unsigned int vp9_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
884 specialize qw/vp9_sub_pixel_variance32x32 avx2 neon/, "$sse2_x86inc", "$ssse3_x86inc";
886 add_proto qw/unsigned int vp9_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
887 specialize qw/vp9_sub_pixel_avg_variance32x32 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
889 add_proto qw/unsigned int vp9_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
890 specialize qw/vp9_sub_pixel_variance16x16 neon/, "$sse2_x86inc", "$ssse3_x86inc";
892 add_proto qw/unsigned int vp9_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
893 specialize qw/vp9_sub_pixel_avg_variance16x16/, "$sse2_x86inc", "$ssse3_x86inc";
895 add_proto qw/unsigned int vp9_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
896 specialize qw/vp9_sub_pixel_variance8x16/, "$sse2_x86inc", "$ssse3_x86inc";
898 add_proto qw/unsigned int vp9_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
899 specialize qw/vp9_sub_pixel_avg_variance8x16/, "$sse2_x86inc", "$ssse3_x86inc";
901 add_proto qw/unsigned int vp9_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
902 specialize qw/vp9_sub_pixel_variance16x8/, "$sse2_x86inc", "$ssse3_x86inc";
904 add_proto qw/unsigned int vp9_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
905 specialize qw/vp9_sub_pixel_avg_variance16x8/, "$sse2_x86inc", "$ssse3_x86inc";
907 add_proto qw/unsigned int vp9_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
908 specialize qw/vp9_sub_pixel_variance8x8 neon/, "$sse2_x86inc", "$ssse3_x86inc";
910 add_proto qw/unsigned int vp9_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
911 specialize qw/vp9_sub_pixel_avg_variance8x8/, "$sse2_x86inc", "$ssse3_x86inc";
913 # TODO(jingning): need to convert 8x4/4x8 functions into mmx/sse form
914 add_proto qw/unsigned int vp9_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
915 specialize qw/vp9_sub_pixel_variance8x4/, "$sse2_x86inc", "$ssse3_x86inc";
917 add_proto qw/unsigned int vp9_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
918 specialize qw/vp9_sub_pixel_avg_variance8x4/, "$sse2_x86inc", "$ssse3_x86inc";
920 add_proto qw/unsigned int vp9_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
921 specialize qw/vp9_sub_pixel_variance4x8/, "$sse_x86inc", "$ssse3_x86inc";
923 add_proto qw/unsigned int vp9_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
924 specialize qw/vp9_sub_pixel_avg_variance4x8/, "$sse_x86inc", "$ssse3_x86inc";
926 add_proto qw/unsigned int vp9_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
927 specialize qw/vp9_sub_pixel_variance4x4/, "$sse_x86inc", "$ssse3_x86inc";
928 #vp9_sub_pixel_variance4x4_sse2=vp9_sub_pixel_variance4x4_wmt
930 add_proto qw/unsigned int vp9_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
931 specialize qw/vp9_sub_pixel_avg_variance4x4/, "$sse_x86inc", "$ssse3_x86inc";
933 add_proto qw/unsigned int vp9_sad64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
934 specialize qw/vp9_sad64x64 neon avx2/, "$sse2_x86inc";
936 add_proto qw/unsigned int vp9_sad32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
937 specialize qw/vp9_sad32x64 avx2/, "$sse2_x86inc";
939 add_proto qw/unsigned int vp9_sad64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
940 specialize qw/vp9_sad64x32 avx2/, "$sse2_x86inc";
942 add_proto qw/unsigned int vp9_sad32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
943 specialize qw/vp9_sad32x16 avx2/, "$sse2_x86inc";
945 add_proto qw/unsigned int vp9_sad16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
946 specialize qw/vp9_sad16x32/, "$sse2_x86inc";
948 add_proto qw/unsigned int vp9_sad32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
949 specialize qw/vp9_sad32x32 neon avx2/, "$sse2_x86inc";
951 add_proto qw/unsigned int vp9_sad16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
952 specialize qw/vp9_sad16x16 neon/, "$sse2_x86inc";
954 add_proto qw/unsigned int vp9_sad16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
955 specialize qw/vp9_sad16x8/, "$sse2_x86inc";
957 add_proto qw/unsigned int vp9_sad8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
958 specialize qw/vp9_sad8x16/, "$sse2_x86inc";
960 add_proto qw/unsigned int vp9_sad8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
961 specialize qw/vp9_sad8x8 neon/, "$sse2_x86inc";
963 add_proto qw/unsigned int vp9_sad8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
964 specialize qw/vp9_sad8x4/, "$sse2_x86inc";
966 add_proto qw/unsigned int vp9_sad4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
967 specialize qw/vp9_sad4x8/, "$sse_x86inc";
969 add_proto qw/unsigned int vp9_sad4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
970 specialize qw/vp9_sad4x4/, "$sse_x86inc";
972 add_proto qw/unsigned int vp9_sad64x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
973 specialize qw/vp9_sad64x64_avg avx2/, "$sse2_x86inc";
975 add_proto qw/unsigned int vp9_sad32x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
976 specialize qw/vp9_sad32x64_avg avx2/, "$sse2_x86inc";
978 add_proto qw/unsigned int vp9_sad64x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
979 specialize qw/vp9_sad64x32_avg avx2/, "$sse2_x86inc";
981 add_proto qw/unsigned int vp9_sad32x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
982 specialize qw/vp9_sad32x16_avg avx2/, "$sse2_x86inc";
984 add_proto qw/unsigned int vp9_sad16x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
985 specialize qw/vp9_sad16x32_avg/, "$sse2_x86inc";
987 add_proto qw/unsigned int vp9_sad32x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
988 specialize qw/vp9_sad32x32_avg avx2/, "$sse2_x86inc";
990 add_proto qw/unsigned int vp9_sad16x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
991 specialize qw/vp9_sad16x16_avg/, "$sse2_x86inc";
993 add_proto qw/unsigned int vp9_sad16x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
994 specialize qw/vp9_sad16x8_avg/, "$sse2_x86inc";
996 add_proto qw/unsigned int vp9_sad8x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
997 specialize qw/vp9_sad8x16_avg/, "$sse2_x86inc";
999 add_proto qw/unsigned int vp9_sad8x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1000 specialize qw/vp9_sad8x8_avg/, "$sse2_x86inc";
1002 add_proto qw/unsigned int vp9_sad8x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1003 specialize qw/vp9_sad8x4_avg/, "$sse2_x86inc";
1005 add_proto qw/unsigned int vp9_sad4x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1006 specialize qw/vp9_sad4x8_avg/, "$sse_x86inc";
1008 add_proto qw/unsigned int vp9_sad4x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1009 specialize qw/vp9_sad4x4_avg/, "$sse_x86inc";
1011 add_proto qw/void vp9_sad64x64x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1012 specialize qw/vp9_sad64x64x3/;
1014 add_proto qw/void vp9_sad32x32x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1015 specialize qw/vp9_sad32x32x3/;
1017 add_proto qw/void vp9_sad16x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1018 specialize qw/vp9_sad16x16x3 sse3 ssse3/;
1020 add_proto qw/void vp9_sad16x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1021 specialize qw/vp9_sad16x8x3 sse3 ssse3/;
1023 add_proto qw/void vp9_sad8x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1024 specialize qw/vp9_sad8x16x3 sse3/;
1026 add_proto qw/void vp9_sad8x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1027 specialize qw/vp9_sad8x8x3 sse3/;
1029 add_proto qw/void vp9_sad4x4x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1030 specialize qw/vp9_sad4x4x3 sse3/;
1032 add_proto qw/void vp9_sad64x64x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1033 specialize qw/vp9_sad64x64x8/;
1035 add_proto qw/void vp9_sad32x32x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1036 specialize qw/vp9_sad32x32x8/;
1038 add_proto qw/void vp9_sad16x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1039 specialize qw/vp9_sad16x16x8 sse4/;
1041 add_proto qw/void vp9_sad16x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1042 specialize qw/vp9_sad16x8x8 sse4/;
1044 add_proto qw/void vp9_sad8x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1045 specialize qw/vp9_sad8x16x8 sse4/;
1047 add_proto qw/void vp9_sad8x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1048 specialize qw/vp9_sad8x8x8 sse4/;
1050 add_proto qw/void vp9_sad8x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1051 specialize qw/vp9_sad8x4x8/;
1053 add_proto qw/void vp9_sad4x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1054 specialize qw/vp9_sad4x8x8/;
1056 add_proto qw/void vp9_sad4x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1057 specialize qw/vp9_sad4x4x8 sse4/;
1059 add_proto qw/void vp9_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1060 specialize qw/vp9_sad64x64x4d sse2 avx2/;
1062 add_proto qw/void vp9_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1063 specialize qw/vp9_sad32x64x4d sse2/;
1065 add_proto qw/void vp9_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1066 specialize qw/vp9_sad64x32x4d sse2/;
1068 add_proto qw/void vp9_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1069 specialize qw/vp9_sad32x16x4d sse2/;
1071 add_proto qw/void vp9_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1072 specialize qw/vp9_sad16x32x4d sse2/;
1074 add_proto qw/void vp9_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1075 specialize qw/vp9_sad32x32x4d sse2 avx2/;
1077 add_proto qw/void vp9_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1078 specialize qw/vp9_sad16x16x4d sse2/;
1080 add_proto qw/void vp9_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1081 specialize qw/vp9_sad16x8x4d sse2/;
1083 add_proto qw/void vp9_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1084 specialize qw/vp9_sad8x16x4d sse2/;
1086 add_proto qw/void vp9_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1087 specialize qw/vp9_sad8x8x4d sse2/;
1089 # TODO(jingning): need to convert these 4x8/8x4 functions into sse2 form
1090 add_proto qw/void vp9_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1091 specialize qw/vp9_sad8x4x4d sse2/;
1093 add_proto qw/void vp9_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1094 specialize qw/vp9_sad4x8x4d sse/;
1096 add_proto qw/void vp9_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1097 specialize qw/vp9_sad4x4x4d sse/;
1099 add_proto qw/unsigned int vp9_mse16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1100 specialize qw/vp9_mse16x16 avx2/, "$sse2_x86inc";
1102 add_proto qw/unsigned int vp9_mse8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1103 specialize qw/vp9_mse8x16/, "$sse2_x86inc";
1105 add_proto qw/unsigned int vp9_mse16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1106 specialize qw/vp9_mse16x8/, "$sse2_x86inc";
1108 add_proto qw/unsigned int vp9_mse8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1109 specialize qw/vp9_mse8x8/, "$sse2_x86inc";
1111 add_proto qw/unsigned int vp9_get_mb_ss/, "const int16_t *";
1112 specialize qw/vp9_get_mb_ss/, "$sse2_x86inc";
1114 add_proto qw/unsigned int vp9_avg_8x8/, "const uint8_t *, int p";
1115 specialize qw/vp9_avg_8x8 sse2/;
1117 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1118 add_proto qw/unsigned int vp9_highbd_avg_8x8/, "const uint8_t *, int p";
1119 specialize qw/vp9_highbd_avg_8x8/;
1124 add_proto qw/void vp9_subtract_block/, "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride";
1125 specialize qw/vp9_subtract_block neon/, "$sse2_x86inc";
1130 if (vpx_config("CONFIG_VP9_TEMPORAL_DENOISING") eq "yes") {
1131 add_proto qw/int vp9_denoiser_filter/, "const uint8_t *sig, int sig_stride, const uint8_t *mc_avg, int mc_avg_stride, uint8_t *avg, int avg_stride, int increase_denoising, BLOCK_SIZE bs, int motion_magnitude";
1132 specialize qw/vp9_denoiser_filter sse2/;
1135 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1136 # the transform coefficients are held in 32-bit
1137 # values, so the assembler code for vp9_block_error can no longer be used.
1138 add_proto qw/int64_t vp9_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz";
1139 specialize qw/vp9_block_error/;
1141 add_proto qw/void vp9_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1142 specialize qw/vp9_quantize_fp/;
1144 add_proto qw/void vp9_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1145 specialize qw/vp9_quantize_fp_32x32/;
1147 add_proto qw/void vp9_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1148 specialize qw/vp9_quantize_b/;
1150 add_proto qw/void vp9_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1151 specialize qw/vp9_quantize_b_32x32/;
1153 add_proto qw/int64_t vp9_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz";
1154 specialize qw/vp9_block_error avx2/, "$sse2_x86inc";
1156 add_proto qw/void vp9_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1157 specialize qw/vp9_quantize_fp neon/, "$ssse3_x86_64";
1159 add_proto qw/void vp9_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1160 specialize qw/vp9_quantize_fp_32x32/, "$ssse3_x86_64";
1162 add_proto qw/void vp9_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1163 specialize qw/vp9_quantize_b sse2/, "$ssse3_x86_64";
1165 add_proto qw/void vp9_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1166 specialize qw/vp9_quantize_b_32x32/, "$ssse3_x86_64";
1170 # Structured Similarity (SSIM)
1172 if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
1173 add_proto qw/void vp9_ssim_parms_8x8/, "uint8_t *s, int sp, uint8_t *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr";
1174 specialize qw/vp9_ssim_parms_8x8/, "$sse2_x86_64";
1176 add_proto qw/void vp9_ssim_parms_16x16/, "uint8_t *s, int sp, uint8_t *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr";
1177 specialize qw/vp9_ssim_parms_16x16/, "$sse2_x86_64";
1182 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1183 add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1184 specialize qw/vp9_fht4x4/;
1186 add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1187 specialize qw/vp9_fht8x8/;
1189 add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1190 specialize qw/vp9_fht16x16/;
1192 add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1193 specialize qw/vp9_fwht4x4/;
1195 add_proto qw/void vp9_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
1196 specialize qw/vp9_fdct4x4_1/;
1198 add_proto qw/void vp9_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1199 specialize qw/vp9_fdct4x4/;
1201 add_proto qw/void vp9_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1202 specialize qw/vp9_fdct8x8_1/;
1204 add_proto qw/void vp9_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1205 specialize qw/vp9_fdct8x8/;
1207 add_proto qw/void vp9_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1208 specialize qw/vp9_fdct16x16_1/;
1210 add_proto qw/void vp9_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1211 specialize qw/vp9_fdct16x16/;
1213 add_proto qw/void vp9_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1214 specialize qw/vp9_fdct32x32_1/;
1216 add_proto qw/void vp9_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1217 specialize qw/vp9_fdct32x32/;
1219 add_proto qw/void vp9_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1220 specialize qw/vp9_fdct32x32_rd/;
1222 add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1223 specialize qw/vp9_fht4x4 sse2/;
1225 add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1226 specialize qw/vp9_fht8x8 sse2/;
1228 add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1229 specialize qw/vp9_fht16x16 sse2/;
1231 add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1232 specialize qw/vp9_fwht4x4/, "$mmx_x86inc";
1234 add_proto qw/void vp9_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
1235 specialize qw/vp9_fdct4x4_1 sse2/;
1237 add_proto qw/void vp9_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1238 specialize qw/vp9_fdct4x4 sse2/;
1240 add_proto qw/void vp9_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1241 specialize qw/vp9_fdct8x8_1 sse2 neon/;
1243 add_proto qw/void vp9_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1244 specialize qw/vp9_fdct8x8 sse2 neon/, "$ssse3_x86_64";
1246 add_proto qw/void vp9_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1247 specialize qw/vp9_fdct16x16_1 sse2/;
1249 add_proto qw/void vp9_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1250 specialize qw/vp9_fdct16x16 sse2/;
1252 add_proto qw/void vp9_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1253 specialize qw/vp9_fdct32x32_1 sse2/;
1255 add_proto qw/void vp9_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1256 specialize qw/vp9_fdct32x32 sse2 avx2/;
1258 add_proto qw/void vp9_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1259 specialize qw/vp9_fdct32x32_rd sse2 avx2/;
1265 add_proto qw/int vp9_full_search_sad/, "const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv";
1266 specialize qw/vp9_full_search_sad sse3 sse4_1/;
1267 $vp9_full_search_sad_sse3=vp9_full_search_sadx3;
1268 $vp9_full_search_sad_sse4_1=vp9_full_search_sadx8;
1270 add_proto qw/int vp9_refining_search_sad/, "const struct macroblock *x, struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv";
1271 specialize qw/vp9_refining_search_sad/;
1273 add_proto qw/int vp9_diamond_search_sad/, "const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv";
1274 specialize qw/vp9_diamond_search_sad/;
1276 add_proto qw/int vp9_full_range_search/, "const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv";
1277 specialize qw/vp9_full_range_search/;
1279 add_proto qw/void vp9_temporal_filter_apply/, "uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count";
1280 specialize qw/vp9_temporal_filter_apply sse2/;
1282 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1285 add_proto qw/unsigned int vp9_highbd_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1286 specialize qw/vp9_highbd_variance32x16/;
1288 add_proto qw/unsigned int vp9_highbd_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1289 specialize qw/vp9_highbd_variance16x32/;
1291 add_proto qw/unsigned int vp9_highbd_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1292 specialize qw/vp9_highbd_variance64x32/;
1294 add_proto qw/unsigned int vp9_highbd_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1295 specialize qw/vp9_highbd_variance32x64/;
1297 add_proto qw/unsigned int vp9_highbd_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1298 specialize qw/vp9_highbd_variance32x32/;
1300 add_proto qw/unsigned int vp9_highbd_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1301 specialize qw/vp9_highbd_variance64x64/;
1303 add_proto qw/unsigned int vp9_highbd_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1304 specialize qw/vp9_highbd_variance16x16/;
1306 add_proto qw/unsigned int vp9_highbd_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1307 specialize qw/vp9_highbd_variance16x8/;
1309 add_proto qw/unsigned int vp9_highbd_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1310 specialize qw/vp9_highbd_variance8x16/;
1312 add_proto qw/unsigned int vp9_highbd_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1313 specialize qw/vp9_highbd_variance8x8/;
1315 add_proto qw/unsigned int vp9_highbd_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1316 specialize qw/vp9_highbd_variance8x4/;
1318 add_proto qw/unsigned int vp9_highbd_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1319 specialize qw/vp9_highbd_variance4x8/;
1321 add_proto qw/unsigned int vp9_highbd_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1322 specialize qw/vp9_highbd_variance4x4/;
1324 add_proto qw/void vp9_highbd_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1325 specialize qw/vp9_highbd_get8x8var/;
1327 add_proto qw/void vp9_highbd_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1328 specialize qw/vp9_highbd_get16x16var/;
1330 add_proto qw/unsigned int vp9_highbd_10_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1331 specialize qw/vp9_highbd_10_variance32x16/;
1333 add_proto qw/unsigned int vp9_highbd_10_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1334 specialize qw/vp9_highbd_10_variance16x32/;
1336 add_proto qw/unsigned int vp9_highbd_10_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1337 specialize qw/vp9_highbd_10_variance64x32/;
1339 add_proto qw/unsigned int vp9_highbd_10_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1340 specialize qw/vp9_highbd_10_variance32x64/;
1342 add_proto qw/unsigned int vp9_highbd_10_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1343 specialize qw/vp9_highbd_10_variance32x32/;
1345 add_proto qw/unsigned int vp9_highbd_10_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1346 specialize qw/vp9_highbd_10_variance64x64/;
1348 add_proto qw/unsigned int vp9_highbd_10_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1349 specialize qw/vp9_highbd_10_variance16x16/;
1351 add_proto qw/unsigned int vp9_highbd_10_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1352 specialize qw/vp9_highbd_10_variance16x8/;
1354 add_proto qw/unsigned int vp9_highbd_10_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1355 specialize qw/vp9_highbd_10_variance8x16/;
1357 add_proto qw/unsigned int vp9_highbd_10_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1358 specialize qw/vp9_highbd_10_variance8x8/;
1360 add_proto qw/unsigned int vp9_highbd_10_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1361 specialize qw/vp9_highbd_10_variance8x4/;
1363 add_proto qw/unsigned int vp9_highbd_10_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1364 specialize qw/vp9_highbd_10_variance4x8/;
1366 add_proto qw/unsigned int vp9_highbd_10_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1367 specialize qw/vp9_highbd_10_variance4x4/;
1369 add_proto qw/void vp9_highbd_10_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1370 specialize qw/vp9_highbd_10_get8x8var/;
1372 add_proto qw/void vp9_highbd_10_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1373 specialize qw/vp9_highbd_10_get16x16var/;
1375 add_proto qw/unsigned int vp9_highbd_12_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1376 specialize qw/vp9_highbd_12_variance32x16/;
1378 add_proto qw/unsigned int vp9_highbd_12_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1379 specialize qw/vp9_highbd_12_variance16x32/;
1381 add_proto qw/unsigned int vp9_highbd_12_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1382 specialize qw/vp9_highbd_12_variance64x32/;
1384 add_proto qw/unsigned int vp9_highbd_12_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1385 specialize qw/vp9_highbd_12_variance32x64/;
1387 add_proto qw/unsigned int vp9_highbd_12_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1388 specialize qw/vp9_highbd_12_variance32x32/;
1390 add_proto qw/unsigned int vp9_highbd_12_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1391 specialize qw/vp9_highbd_12_variance64x64/;
1393 add_proto qw/unsigned int vp9_highbd_12_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1394 specialize qw/vp9_highbd_12_variance16x16/;
1396 add_proto qw/unsigned int vp9_highbd_12_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1397 specialize qw/vp9_highbd_12_variance16x8/;
1399 add_proto qw/unsigned int vp9_highbd_12_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1400 specialize qw/vp9_highbd_12_variance8x16/;
1402 add_proto qw/unsigned int vp9_highbd_12_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1403 specialize qw/vp9_highbd_12_variance8x8/;
1405 add_proto qw/unsigned int vp9_highbd_12_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1406 specialize qw/vp9_highbd_12_variance8x4/;
1408 add_proto qw/unsigned int vp9_highbd_12_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1409 specialize qw/vp9_highbd_12_variance4x8/;
1411 add_proto qw/unsigned int vp9_highbd_12_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1412 specialize qw/vp9_highbd_12_variance4x4/;
1414 add_proto qw/void vp9_highbd_12_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1415 specialize qw/vp9_highbd_12_get8x8var/;
1417 add_proto qw/void vp9_highbd_12_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1418 specialize qw/vp9_highbd_12_get16x16var/;
1420 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1421 specialize qw/vp9_highbd_sub_pixel_variance64x64/;
1423 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1424 specialize qw/vp9_highbd_sub_pixel_avg_variance64x64/;
1426 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1427 specialize qw/vp9_highbd_sub_pixel_variance32x64/;
1429 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1430 specialize qw/vp9_highbd_sub_pixel_avg_variance32x64/;
1432 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1433 specialize qw/vp9_highbd_sub_pixel_variance64x32/;
1435 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1436 specialize qw/vp9_highbd_sub_pixel_avg_variance64x32/;
1438 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1439 specialize qw/vp9_highbd_sub_pixel_variance32x16/;
1441 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1442 specialize qw/vp9_highbd_sub_pixel_avg_variance32x16/;
1444 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1445 specialize qw/vp9_highbd_sub_pixel_variance16x32/;
1447 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1448 specialize qw/vp9_highbd_sub_pixel_avg_variance16x32/;
1450 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1451 specialize qw/vp9_highbd_sub_pixel_variance32x32/;
1453 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1454 specialize qw/vp9_highbd_sub_pixel_avg_variance32x32/;
1456 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1457 specialize qw/vp9_highbd_sub_pixel_variance16x16/;
1459 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1460 specialize qw/vp9_highbd_sub_pixel_avg_variance16x16/;
1462 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1463 specialize qw/vp9_highbd_sub_pixel_variance8x16/;
1465 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1466 specialize qw/vp9_highbd_sub_pixel_avg_variance8x16/;
1468 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1469 specialize qw/vp9_highbd_sub_pixel_variance16x8/;
1471 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1472 specialize qw/vp9_highbd_sub_pixel_avg_variance16x8/;
1474 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1475 specialize qw/vp9_highbd_sub_pixel_variance8x8/;
1477 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1478 specialize qw/vp9_highbd_sub_pixel_avg_variance8x8/;
1480 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1481 specialize qw/vp9_highbd_sub_pixel_variance8x4/;
1483 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1484 specialize qw/vp9_highbd_sub_pixel_avg_variance8x4/;
1486 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1487 specialize qw/vp9_highbd_sub_pixel_variance4x8/;
1489 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1490 specialize qw/vp9_highbd_sub_pixel_avg_variance4x8/;
1492 add_proto qw/unsigned int vp9_highbd_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1493 specialize qw/vp9_highbd_sub_pixel_variance4x4/;
1495 add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1496 specialize qw/vp9_highbd_sub_pixel_avg_variance4x4/;
1498 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1499 specialize qw/vp9_highbd_10_sub_pixel_variance64x64/;
1501 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1502 specialize qw/vp9_highbd_10_sub_pixel_avg_variance64x64/;
1504 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1505 specialize qw/vp9_highbd_10_sub_pixel_variance32x64/;
1507 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1508 specialize qw/vp9_highbd_10_sub_pixel_avg_variance32x64/;
1510 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1511 specialize qw/vp9_highbd_10_sub_pixel_variance64x32/;
1513 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1514 specialize qw/vp9_highbd_10_sub_pixel_avg_variance64x32/;
1516 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1517 specialize qw/vp9_highbd_10_sub_pixel_variance32x16/;
1519 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1520 specialize qw/vp9_highbd_10_sub_pixel_avg_variance32x16/;
1522 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1523 specialize qw/vp9_highbd_10_sub_pixel_variance16x32/;
1525 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1526 specialize qw/vp9_highbd_10_sub_pixel_avg_variance16x32/;
1528 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1529 specialize qw/vp9_highbd_10_sub_pixel_variance32x32/;
1531 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1532 specialize qw/vp9_highbd_10_sub_pixel_avg_variance32x32/;
1534 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1535 specialize qw/vp9_highbd_10_sub_pixel_variance16x16/;
1537 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1538 specialize qw/vp9_highbd_10_sub_pixel_avg_variance16x16/;
1540 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1541 specialize qw/vp9_highbd_10_sub_pixel_variance8x16/;
1543 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1544 specialize qw/vp9_highbd_10_sub_pixel_avg_variance8x16/;
1546 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1547 specialize qw/vp9_highbd_10_sub_pixel_variance16x8/;
1549 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1550 specialize qw/vp9_highbd_10_sub_pixel_avg_variance16x8/;
1552 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1553 specialize qw/vp9_highbd_10_sub_pixel_variance8x8/;
1555 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1556 specialize qw/vp9_highbd_10_sub_pixel_avg_variance8x8/;
1558 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1559 specialize qw/vp9_highbd_10_sub_pixel_variance8x4/;
1561 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1562 specialize qw/vp9_highbd_10_sub_pixel_avg_variance8x4/;
1564 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1565 specialize qw/vp9_highbd_10_sub_pixel_variance4x8/;
1567 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1568 specialize qw/vp9_highbd_10_sub_pixel_avg_variance4x8/;
1570 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1571 specialize qw/vp9_highbd_10_sub_pixel_variance4x4/;
1573 add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1574 specialize qw/vp9_highbd_10_sub_pixel_avg_variance4x4/;
1576 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1577 specialize qw/vp9_highbd_12_sub_pixel_variance64x64/;
1579 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1580 specialize qw/vp9_highbd_12_sub_pixel_avg_variance64x64/;
1582 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1583 specialize qw/vp9_highbd_12_sub_pixel_variance32x64/;
1585 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1586 specialize qw/vp9_highbd_12_sub_pixel_avg_variance32x64/;
1588 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1589 specialize qw/vp9_highbd_12_sub_pixel_variance64x32/;
1591 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1592 specialize qw/vp9_highbd_12_sub_pixel_avg_variance64x32/;
1594 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1595 specialize qw/vp9_highbd_12_sub_pixel_variance32x16/;
1597 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1598 specialize qw/vp9_highbd_12_sub_pixel_avg_variance32x16/;
1600 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1601 specialize qw/vp9_highbd_12_sub_pixel_variance16x32/;
1603 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1604 specialize qw/vp9_highbd_12_sub_pixel_avg_variance16x32/;
1606 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1607 specialize qw/vp9_highbd_12_sub_pixel_variance32x32/;
1609 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1610 specialize qw/vp9_highbd_12_sub_pixel_avg_variance32x32/;
1612 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1613 specialize qw/vp9_highbd_12_sub_pixel_variance16x16/;
1615 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1616 specialize qw/vp9_highbd_12_sub_pixel_avg_variance16x16/;
1618 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1619 specialize qw/vp9_highbd_12_sub_pixel_variance8x16/;
1621 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1622 specialize qw/vp9_highbd_12_sub_pixel_avg_variance8x16/;
1624 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1625 specialize qw/vp9_highbd_12_sub_pixel_variance16x8/;
1627 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1628 specialize qw/vp9_highbd_12_sub_pixel_avg_variance16x8/;
1630 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1631 specialize qw/vp9_highbd_12_sub_pixel_variance8x8/;
1633 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1634 specialize qw/vp9_highbd_12_sub_pixel_avg_variance8x8/;
1636 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1637 specialize qw/vp9_highbd_12_sub_pixel_variance8x4/;
1639 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1640 specialize qw/vp9_highbd_12_sub_pixel_avg_variance8x4/;
1642 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1643 specialize qw/vp9_highbd_12_sub_pixel_variance4x8/;
1645 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1646 specialize qw/vp9_highbd_12_sub_pixel_avg_variance4x8/;
1648 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1649 specialize qw/vp9_highbd_12_sub_pixel_variance4x4/;
1651 add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1652 specialize qw/vp9_highbd_12_sub_pixel_avg_variance4x4/;
1654 add_proto qw/unsigned int vp9_highbd_sad64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1655 specialize qw/vp9_highbd_sad64x64/;
1657 add_proto qw/unsigned int vp9_highbd_sad32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1658 specialize qw/vp9_highbd_sad32x64/;
1660 add_proto qw/unsigned int vp9_highbd_sad64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1661 specialize qw/vp9_highbd_sad64x32/;
1663 add_proto qw/unsigned int vp9_highbd_sad32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1664 specialize qw/vp9_highbd_sad32x16/;
1666 add_proto qw/unsigned int vp9_highbd_sad16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1667 specialize qw/vp9_highbd_sad16x32/;
1669 add_proto qw/unsigned int vp9_highbd_sad32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1670 specialize qw/vp9_highbd_sad32x32/;
1672 add_proto qw/unsigned int vp9_highbd_sad16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1673 specialize qw/vp9_highbd_sad16x16/;
1675 add_proto qw/unsigned int vp9_highbd_sad16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1676 specialize qw/vp9_highbd_sad16x8/;
1678 add_proto qw/unsigned int vp9_highbd_sad8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1679 specialize qw/vp9_highbd_sad8x16/;
1681 add_proto qw/unsigned int vp9_highbd_sad8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1682 specialize qw/vp9_highbd_sad8x8/;
1684 add_proto qw/unsigned int vp9_highbd_sad8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1685 specialize qw/vp9_highbd_sad8x4/;
1687 add_proto qw/unsigned int vp9_highbd_sad4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1688 specialize qw/vp9_highbd_sad4x8/;
1690 add_proto qw/unsigned int vp9_highbd_sad4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1691 specialize qw/vp9_highbd_sad4x4/;
1693 add_proto qw/unsigned int vp9_highbd_sad64x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1694 specialize qw/vp9_highbd_sad64x64_avg/;
1696 add_proto qw/unsigned int vp9_highbd_sad32x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1697 specialize qw/vp9_highbd_sad32x64_avg/;
1699 add_proto qw/unsigned int vp9_highbd_sad64x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1700 specialize qw/vp9_highbd_sad64x32_avg/;
1702 add_proto qw/unsigned int vp9_highbd_sad32x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1703 specialize qw/vp9_highbd_sad32x16_avg/;
1705 add_proto qw/unsigned int vp9_highbd_sad16x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1706 specialize qw/vp9_highbd_sad16x32_avg/;
1708 add_proto qw/unsigned int vp9_highbd_sad32x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1709 specialize qw/vp9_highbd_sad32x32_avg/;
1711 add_proto qw/unsigned int vp9_highbd_sad16x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1712 specialize qw/vp9_highbd_sad16x16_avg/;
1714 add_proto qw/unsigned int vp9_highbd_sad16x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1715 specialize qw/vp9_highbd_sad16x8_avg/;
1717 add_proto qw/unsigned int vp9_highbd_sad8x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1718 specialize qw/vp9_highbd_sad8x16_avg/;
1720 add_proto qw/unsigned int vp9_highbd_sad8x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1721 specialize qw/vp9_highbd_sad8x8_avg/;
1723 add_proto qw/unsigned int vp9_highbd_sad8x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1724 specialize qw/vp9_highbd_sad8x4_avg/;
1726 add_proto qw/unsigned int vp9_highbd_sad4x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1727 specialize qw/vp9_highbd_sad4x8_avg/;
1729 add_proto qw/unsigned int vp9_highbd_sad4x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1730 specialize qw/vp9_highbd_sad4x4_avg/;
1732 add_proto qw/void vp9_highbd_sad64x64x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1733 specialize qw/vp9_highbd_sad64x64x3/;
1735 add_proto qw/void vp9_highbd_sad32x32x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1736 specialize qw/vp9_highbd_sad32x32x3/;
1738 add_proto qw/void vp9_highbd_sad16x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1739 specialize qw/vp9_highbd_sad16x16x3/;
1741 add_proto qw/void vp9_highbd_sad16x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1742 specialize qw/vp9_highbd_sad16x8x3/;
1744 add_proto qw/void vp9_highbd_sad8x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1745 specialize qw/vp9_highbd_sad8x16x3/;
1747 add_proto qw/void vp9_highbd_sad8x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1748 specialize qw/vp9_highbd_sad8x8x3/;
1750 add_proto qw/void vp9_highbd_sad4x4x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sad_array";
1751 specialize qw/vp9_highbd_sad4x4x3/;
1753 add_proto qw/void vp9_highbd_sad64x64x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1754 specialize qw/vp9_highbd_sad64x64x8/;
1756 add_proto qw/void vp9_highbd_sad32x32x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1757 specialize qw/vp9_highbd_sad32x32x8/;
1759 add_proto qw/void vp9_highbd_sad16x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1760 specialize qw/vp9_highbd_sad16x16x8/;
1762 add_proto qw/void vp9_highbd_sad16x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1763 specialize qw/vp9_highbd_sad16x8x8/;
1765 add_proto qw/void vp9_highbd_sad8x16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1766 specialize qw/vp9_highbd_sad8x16x8/;
1768 add_proto qw/void vp9_highbd_sad8x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1769 specialize qw/vp9_highbd_sad8x8x8/;
1771 add_proto qw/void vp9_highbd_sad8x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1772 specialize qw/vp9_highbd_sad8x4x8/;
1774 add_proto qw/void vp9_highbd_sad4x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1775 specialize qw/vp9_highbd_sad4x8x8/;
1777 add_proto qw/void vp9_highbd_sad4x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1778 specialize qw/vp9_highbd_sad4x4x8/;
1780 add_proto qw/void vp9_highbd_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1781 specialize qw/vp9_highbd_sad64x64x4d/;
1783 add_proto qw/void vp9_highbd_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1784 specialize qw/vp9_highbd_sad32x64x4d/;
1786 add_proto qw/void vp9_highbd_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1787 specialize qw/vp9_highbd_sad64x32x4d/;
1789 add_proto qw/void vp9_highbd_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1790 specialize qw/vp9_highbd_sad32x16x4d/;
1792 add_proto qw/void vp9_highbd_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1793 specialize qw/vp9_highbd_sad16x32x4d/;
1795 add_proto qw/void vp9_highbd_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1796 specialize qw/vp9_highbd_sad32x32x4d/;
1798 add_proto qw/void vp9_highbd_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1799 specialize qw/vp9_highbd_sad16x16x4d/;
1801 add_proto qw/void vp9_highbd_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1802 specialize qw/vp9_highbd_sad16x8x4d/;
1804 add_proto qw/void vp9_highbd_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1805 specialize qw/vp9_highbd_sad8x16x4d/;
1807 add_proto qw/void vp9_highbd_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1808 specialize qw/vp9_highbd_sad8x8x4d/;
1810 # TODO(jingning): need to convert these 4x8/8x4 functions into sse2 form
1811 add_proto qw/void vp9_highbd_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1812 specialize qw/vp9_highbd_sad8x4x4d/;
1814 add_proto qw/void vp9_highbd_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1815 specialize qw/vp9_highbd_sad4x8x4d/;
1817 add_proto qw/void vp9_highbd_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1818 specialize qw/vp9_highbd_sad4x4x4d/;
1820 add_proto qw/unsigned int vp9_highbd_mse16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1821 specialize qw/vp9_highbd_mse16x16/;
1823 add_proto qw/unsigned int vp9_highbd_mse8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1824 specialize qw/vp9_highbd_mse8x16/;
1826 add_proto qw/unsigned int vp9_highbd_mse16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1827 specialize qw/vp9_highbd_mse16x8/;
1829 add_proto qw/unsigned int vp9_highbd_mse8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1830 specialize qw/vp9_highbd_mse8x8/;
1832 add_proto qw/unsigned int vp9_highbd_10_mse16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1833 specialize qw/vp9_highbd_10_mse16x16/;
1835 add_proto qw/unsigned int vp9_highbd_10_mse8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1836 specialize qw/vp9_highbd_10_mse8x16/;
1838 add_proto qw/unsigned int vp9_highbd_10_mse16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1839 specialize qw/vp9_highbd_10_mse16x8/;
1841 add_proto qw/unsigned int vp9_highbd_10_mse8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1842 specialize qw/vp9_highbd_10_mse8x8/;
1844 add_proto qw/unsigned int vp9_highbd_12_mse16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1845 specialize qw/vp9_highbd_12_mse16x16/;
1847 add_proto qw/unsigned int vp9_highbd_12_mse8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1848 specialize qw/vp9_highbd_12_mse8x16/;
1850 add_proto qw/unsigned int vp9_highbd_12_mse16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1851 specialize qw/vp9_highbd_12_mse16x8/;
1853 add_proto qw/unsigned int vp9_highbd_12_mse8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse";
1854 specialize qw/vp9_highbd_12_mse8x8/;
1858 add_proto qw/int64_t vp9_highbd_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd";
1859 specialize qw/vp9_highbd_block_error/;
1861 add_proto qw/void vp9_highbd_subtract_block/, "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride, int bd";
1862 specialize qw/vp9_highbd_subtract_block/;
1864 add_proto qw/void vp9_highbd_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1865 specialize qw/vp9_highbd_quantize_fp/;
1867 add_proto qw/void vp9_highbd_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1868 specialize qw/vp9_highbd_quantize_fp_32x32/;
1870 add_proto qw/void vp9_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1871 specialize qw/vp9_highbd_quantize_b/;
1873 add_proto qw/void vp9_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1874 specialize qw/vp9_highbd_quantize_b_32x32/;
1877 # Structured Similarity (SSIM)
1879 if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
1880 add_proto qw/void vp9_highbd_ssim_parms_8x8/, "uint16_t *s, int sp, uint16_t *r, int rp, uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s, uint32_t *sum_sq_r, uint32_t *sum_sxr";
1881 specialize qw/vp9_highbd_ssim_parms_8x8/;
1885 add_proto qw/void vp9_highbd_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1886 specialize qw/vp9_highbd_fht4x4/;
1888 add_proto qw/void vp9_highbd_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1889 specialize qw/vp9_highbd_fht8x8/;
1891 add_proto qw/void vp9_highbd_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1892 specialize qw/vp9_highbd_fht16x16/;
1894 add_proto qw/void vp9_highbd_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1895 specialize qw/vp9_highbd_fwht4x4/;
1897 add_proto qw/void vp9_highbd_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1898 specialize qw/vp9_highbd_fdct4x4/;
1900 add_proto qw/void vp9_highbd_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1901 specialize qw/vp9_highbd_fdct8x8_1/;
1903 add_proto qw/void vp9_highbd_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1904 specialize qw/vp9_highbd_fdct8x8/;
1906 add_proto qw/void vp9_highbd_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1907 specialize qw/vp9_highbd_fdct16x16_1/;
1909 add_proto qw/void vp9_highbd_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1910 specialize qw/vp9_highbd_fdct16x16/;
1912 add_proto qw/void vp9_highbd_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1913 specialize qw/vp9_highbd_fdct32x32_1/;
1915 add_proto qw/void vp9_highbd_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1916 specialize qw/vp9_highbd_fdct32x32/;
1918 add_proto qw/void vp9_highbd_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1919 specialize qw/vp9_highbd_fdct32x32_rd/;
1921 add_proto qw/void vp9_highbd_temporal_filter_apply/, "uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count";
1922 specialize qw/vp9_highbd_temporal_filter_apply/;
1925 # End vp9_high encoder functions
1928 # end encoder functions