1sub vp9_common_forward_decls() {
2print <<EOF
3/*
4 * VP9
5 */
6
7#include "vpx/vpx_integer.h"
8#include "vp9/common/vp9_enums.h"
9#include "vp9/common/vp9_idct.h"
10
11struct macroblockd;
12
13/* Encoder forward decls */
14struct macroblock;
15struct vp9_variance_vtable;
16struct search_site_config;
17struct mv;
18union int_mv;
19struct yv12_buffer_config;
20EOF
21}
22forward_decls qw/vp9_common_forward_decls/;
23
24# x86inc.asm doesn't work if pic is enabled on 32 bit platforms so no assembly.
25if (vpx_config("CONFIG_USE_X86INC") eq "yes") {
26  $mmx_x86inc = 'mmx';
27  $sse_x86inc = 'sse';
28  $sse2_x86inc = 'sse2';
29  $ssse3_x86inc = 'ssse3';
30  $avx_x86inc = 'avx';
31  $avx2_x86inc = 'avx2';
32} else {
33  $mmx_x86inc = $sse_x86inc = $sse2_x86inc = $ssse3_x86inc =
34  $avx_x86inc = $avx2_x86inc = '';
35}
36
37# this variable is for functions that are 64 bit only.
38if ($opts{arch} eq "x86_64") {
39  $mmx_x86_64 = 'mmx';
40  $sse2_x86_64 = 'sse2';
41  $ssse3_x86_64 = 'ssse3';
42  $avx_x86_64 = 'avx';
43  $avx2_x86_64 = 'avx2';
44} else {
45  $mmx_x86_64 = $sse2_x86_64 = $ssse3_x86_64 =
46  $avx_x86_64 = $avx2_x86_64 = '';
47}
48
49# optimizations which depend on multiple features
50if ((vpx_config("HAVE_AVX2") eq "yes") && (vpx_config("HAVE_SSSE3") eq "yes")) {
51  $avx2_ssse3 = 'avx2';
52} else {
53  $avx2_ssse3 = '';
54}
55
56#
57# RECON
58#
59add_proto qw/void vp9_d207_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
60specialize qw/vp9_d207_predictor_4x4/, "$ssse3_x86inc";
61
62add_proto qw/void vp9_d45_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
63specialize qw/vp9_d45_predictor_4x4/, "$ssse3_x86inc";
64
65add_proto qw/void vp9_d63_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
66specialize qw/vp9_d63_predictor_4x4/, "$ssse3_x86inc";
67
68add_proto qw/void vp9_h_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
69specialize qw/vp9_h_predictor_4x4 neon_asm dspr2/, "$ssse3_x86inc";
70$vp9_h_predictor_4x4_neon_asm=vp9_h_predictor_4x4_neon;
71
72add_proto qw/void vp9_d117_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
73specialize qw/vp9_d117_predictor_4x4/;
74
75add_proto qw/void vp9_d135_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
76specialize qw/vp9_d135_predictor_4x4/;
77
78add_proto qw/void vp9_d153_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
79specialize qw/vp9_d153_predictor_4x4/, "$ssse3_x86inc";
80
81add_proto qw/void vp9_v_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
82specialize qw/vp9_v_predictor_4x4 neon_asm/, "$sse_x86inc";
83$vp9_v_predictor_4x4_neon_asm=vp9_v_predictor_4x4_neon;
84
85add_proto qw/void vp9_tm_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
86specialize qw/vp9_tm_predictor_4x4 neon_asm dspr2/, "$sse_x86inc";
87$vp9_tm_predictor_4x4_neon_asm=vp9_tm_predictor_4x4_neon;
88
89add_proto qw/void vp9_dc_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
90specialize qw/vp9_dc_predictor_4x4 dspr2/, "$sse_x86inc";
91
92add_proto qw/void vp9_dc_top_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
93specialize qw/vp9_dc_top_predictor_4x4/;
94
95add_proto qw/void vp9_dc_left_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
96specialize qw/vp9_dc_left_predictor_4x4/;
97
98add_proto qw/void vp9_dc_128_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
99specialize qw/vp9_dc_128_predictor_4x4/;
100
101add_proto qw/void vp9_d207_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
102specialize qw/vp9_d207_predictor_8x8/, "$ssse3_x86inc";
103
104add_proto qw/void vp9_d45_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
105specialize qw/vp9_d45_predictor_8x8/, "$ssse3_x86inc";
106
107add_proto qw/void vp9_d63_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
108specialize qw/vp9_d63_predictor_8x8/, "$ssse3_x86inc";
109
110add_proto qw/void vp9_h_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
111specialize qw/vp9_h_predictor_8x8 neon_asm dspr2/, "$ssse3_x86inc";
112$vp9_h_predictor_8x8_neon_asm=vp9_h_predictor_8x8_neon;
113
114add_proto qw/void vp9_d117_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
115specialize qw/vp9_d117_predictor_8x8/;
116
117add_proto qw/void vp9_d135_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
118specialize qw/vp9_d135_predictor_8x8/;
119
120add_proto qw/void vp9_d153_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
121specialize qw/vp9_d153_predictor_8x8/, "$ssse3_x86inc";
122
123add_proto qw/void vp9_v_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
124specialize qw/vp9_v_predictor_8x8 neon_asm/, "$sse_x86inc";
125$vp9_v_predictor_8x8_neon_asm=vp9_v_predictor_8x8_neon;
126
127add_proto qw/void vp9_tm_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
128specialize qw/vp9_tm_predictor_8x8 neon_asm dspr2/, "$sse2_x86inc";
129$vp9_tm_predictor_8x8_neon_asm=vp9_tm_predictor_8x8_neon;
130
131add_proto qw/void vp9_dc_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
132specialize qw/vp9_dc_predictor_8x8 dspr2/, "$sse_x86inc";
133
134add_proto qw/void vp9_dc_top_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
135specialize qw/vp9_dc_top_predictor_8x8/;
136
137add_proto qw/void vp9_dc_left_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
138specialize qw/vp9_dc_left_predictor_8x8/;
139
140add_proto qw/void vp9_dc_128_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
141specialize qw/vp9_dc_128_predictor_8x8/;
142
143add_proto qw/void vp9_d207_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
144specialize qw/vp9_d207_predictor_16x16/, "$ssse3_x86inc";
145
146add_proto qw/void vp9_d45_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
147specialize qw/vp9_d45_predictor_16x16/, "$ssse3_x86inc";
148
149add_proto qw/void vp9_d63_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
150specialize qw/vp9_d63_predictor_16x16/, "$ssse3_x86inc";
151
152add_proto qw/void vp9_h_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
153specialize qw/vp9_h_predictor_16x16 neon_asm dspr2/, "$ssse3_x86inc";
154$vp9_h_predictor_16x16_neon_asm=vp9_h_predictor_16x16_neon;
155
156add_proto qw/void vp9_d117_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
157specialize qw/vp9_d117_predictor_16x16/;
158
159add_proto qw/void vp9_d135_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
160specialize qw/vp9_d135_predictor_16x16/;
161
162add_proto qw/void vp9_d153_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
163specialize qw/vp9_d153_predictor_16x16/, "$ssse3_x86inc";
164
165add_proto qw/void vp9_v_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
166specialize qw/vp9_v_predictor_16x16 neon_asm/, "$sse2_x86inc";
167$vp9_v_predictor_16x16_neon_asm=vp9_v_predictor_16x16_neon;
168
169add_proto qw/void vp9_tm_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
170specialize qw/vp9_tm_predictor_16x16 neon_asm/, "$sse2_x86inc";
171$vp9_tm_predictor_16x16_neon_asm=vp9_tm_predictor_16x16_neon;
172
173add_proto qw/void vp9_dc_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
174specialize qw/vp9_dc_predictor_16x16 dspr2/, "$sse2_x86inc";
175
176add_proto qw/void vp9_dc_top_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
177specialize qw/vp9_dc_top_predictor_16x16/;
178
179add_proto qw/void vp9_dc_left_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
180specialize qw/vp9_dc_left_predictor_16x16/;
181
182add_proto qw/void vp9_dc_128_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
183specialize qw/vp9_dc_128_predictor_16x16/;
184
185add_proto qw/void vp9_d207_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
186specialize qw/vp9_d207_predictor_32x32/, "$ssse3_x86inc";
187
188add_proto qw/void vp9_d45_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
189specialize qw/vp9_d45_predictor_32x32/, "$ssse3_x86inc";
190
191add_proto qw/void vp9_d63_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
192specialize qw/vp9_d63_predictor_32x32/, "$ssse3_x86inc";
193
194add_proto qw/void vp9_h_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
195specialize qw/vp9_h_predictor_32x32 neon_asm/, "$ssse3_x86inc";
196$vp9_h_predictor_32x32_neon_asm=vp9_h_predictor_32x32_neon;
197
198add_proto qw/void vp9_d117_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
199specialize qw/vp9_d117_predictor_32x32/;
200
201add_proto qw/void vp9_d135_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
202specialize qw/vp9_d135_predictor_32x32/;
203
204add_proto qw/void vp9_d153_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
205specialize qw/vp9_d153_predictor_32x32/;
206
207add_proto qw/void vp9_v_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
208specialize qw/vp9_v_predictor_32x32 neon_asm/, "$sse2_x86inc";
209$vp9_v_predictor_32x32_neon_asm=vp9_v_predictor_32x32_neon;
210
211add_proto qw/void vp9_tm_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
212specialize qw/vp9_tm_predictor_32x32 neon_asm/, "$sse2_x86_64";
213$vp9_tm_predictor_32x32_neon_asm=vp9_tm_predictor_32x32_neon;
214
215add_proto qw/void vp9_dc_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
216specialize qw/vp9_dc_predictor_32x32/, "$sse2_x86inc";
217
218add_proto qw/void vp9_dc_top_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
219specialize qw/vp9_dc_top_predictor_32x32/;
220
221add_proto qw/void vp9_dc_left_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
222specialize qw/vp9_dc_left_predictor_32x32/;
223
224add_proto qw/void vp9_dc_128_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
225specialize qw/vp9_dc_128_predictor_32x32/;
226
227#
228# Loopfilter
229#
230add_proto qw/void vp9_lpf_vertical_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
231specialize qw/vp9_lpf_vertical_16 sse2 neon_asm dspr2/;
232$vp9_lpf_vertical_16_neon_asm=vp9_lpf_vertical_16_neon;
233
234add_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";
235specialize qw/vp9_lpf_vertical_16_dual sse2 neon_asm dspr2/;
236$vp9_lpf_vertical_16_dual_neon_asm=vp9_lpf_vertical_16_dual_neon;
237
238add_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";
239specialize qw/vp9_lpf_vertical_8 sse2 neon_asm dspr2/;
240$vp9_lpf_vertical_8_neon_asm=vp9_lpf_vertical_8_neon;
241
242add_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";
243specialize qw/vp9_lpf_vertical_8_dual sse2 neon_asm dspr2/;
244$vp9_lpf_vertical_8_dual_neon_asm=vp9_lpf_vertical_8_dual_neon;
245
246add_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";
247specialize qw/vp9_lpf_vertical_4 mmx neon_asm dspr2/;
248$vp9_lpf_vertical_4_neon_asm=vp9_lpf_vertical_4_neon;
249
250add_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";
251specialize qw/vp9_lpf_vertical_4_dual sse2 neon_asm dspr2/;
252$vp9_lpf_vertical_4_dual_neon_asm=vp9_lpf_vertical_4_dual_neon;
253
254add_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";
255specialize qw/vp9_lpf_horizontal_16 sse2 avx2 neon_asm dspr2/;
256$vp9_lpf_horizontal_16_neon_asm=vp9_lpf_horizontal_16_neon;
257
258add_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";
259specialize qw/vp9_lpf_horizontal_8 sse2 neon_asm dspr2/;
260$vp9_lpf_horizontal_8_neon_asm=vp9_lpf_horizontal_8_neon;
261
262add_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";
263specialize qw/vp9_lpf_horizontal_8_dual sse2 neon_asm dspr2/;
264$vp9_lpf_horizontal_8_dual_neon_asm=vp9_lpf_horizontal_8_dual_neon;
265
266add_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";
267specialize qw/vp9_lpf_horizontal_4 mmx neon_asm dspr2/;
268$vp9_lpf_horizontal_4_neon_asm=vp9_lpf_horizontal_4_neon;
269
270add_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";
271specialize qw/vp9_lpf_horizontal_4_dual sse2 neon_asm dspr2/;
272$vp9_lpf_horizontal_4_dual_neon_asm=vp9_lpf_horizontal_4_dual_neon;
273
274#
275# post proc
276#
277if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") {
278add_proto qw/void vp9_mbpost_proc_down/, "uint8_t *dst, int pitch, int rows, int cols, int flimit";
279specialize qw/vp9_mbpost_proc_down sse2/;
280$vp9_mbpost_proc_down_sse2=vp9_mbpost_proc_down_xmm;
281
282add_proto qw/void vp9_mbpost_proc_across_ip/, "uint8_t *src, int pitch, int rows, int cols, int flimit";
283specialize qw/vp9_mbpost_proc_across_ip sse2/;
284$vp9_mbpost_proc_across_ip_sse2=vp9_mbpost_proc_across_ip_xmm;
285
286add_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";
287specialize qw/vp9_post_proc_down_and_across sse2/;
288$vp9_post_proc_down_and_across_sse2=vp9_post_proc_down_and_across_xmm;
289
290add_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";
291specialize qw/vp9_plane_add_noise sse2/;
292$vp9_plane_add_noise_sse2=vp9_plane_add_noise_wmt;
293}
294
295#
296# Sub Pixel Filters
297#
298add_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";
299specialize qw/vp9_convolve_copy neon_asm dspr2/, "$sse2_x86inc";
300$vp9_convolve_copy_neon_asm=vp9_convolve_copy_neon;
301
302add_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";
303specialize qw/vp9_convolve_avg neon_asm dspr2/, "$sse2_x86inc";
304$vp9_convolve_avg_neon_asm=vp9_convolve_avg_neon;
305
306add_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";
307specialize qw/vp9_convolve8 sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
308$vp9_convolve8_neon_asm=vp9_convolve8_neon;
309
310add_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";
311specialize qw/vp9_convolve8_horiz sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
312$vp9_convolve8_horiz_neon_asm=vp9_convolve8_horiz_neon;
313
314add_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";
315specialize qw/vp9_convolve8_vert sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
316$vp9_convolve8_vert_neon_asm=vp9_convolve8_vert_neon;
317
318add_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";
319specialize qw/vp9_convolve8_avg sse2 ssse3 neon_asm dspr2/;
320$vp9_convolve8_avg_neon_asm=vp9_convolve8_avg_neon;
321
322add_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";
323specialize qw/vp9_convolve8_avg_horiz sse2 ssse3 neon_asm dspr2/;
324$vp9_convolve8_avg_horiz_neon_asm=vp9_convolve8_avg_horiz_neon;
325
326add_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";
327specialize qw/vp9_convolve8_avg_vert sse2 ssse3 neon_asm dspr2/;
328$vp9_convolve8_avg_vert_neon_asm=vp9_convolve8_avg_vert_neon;
329
330#
331# dct
332#
333if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
334  add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
335  specialize qw/vp9_idct4x4_1_add/;
336
337  add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
338  specialize qw/vp9_idct4x4_16_add/;
339
340  add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
341  specialize qw/vp9_idct8x8_1_add/;
342
343  add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
344  specialize qw/vp9_idct8x8_64_add/;
345
346  add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
347  specialize qw/vp9_idct8x8_12_add/;
348
349  add_proto qw/void vp9_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
350  specialize qw/vp9_idct16x16_1_add/;
351
352  add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
353  specialize qw/vp9_idct16x16_256_add/;
354
355  add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
356  specialize qw/vp9_idct16x16_10_add/;
357
358  add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
359  specialize qw/vp9_idct32x32_1024_add/;
360
361  add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
362  specialize qw/vp9_idct32x32_34_add/;
363
364  add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
365  specialize qw/vp9_idct32x32_1_add/;
366
367  add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
368  specialize qw/vp9_iht4x4_16_add/;
369
370  add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
371  specialize qw/vp9_iht8x8_64_add/;
372
373  add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
374  specialize qw/vp9_iht16x16_256_add/;
375
376  # dct and add
377
378  add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
379  specialize qw/vp9_iwht4x4_1_add/;
380
381  add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
382  specialize qw/vp9_iwht4x4_16_add/;
383} else {
384  add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
385  specialize qw/vp9_idct4x4_1_add sse2 neon_asm dspr2/;
386  $vp9_idct4x4_1_add_neon_asm=vp9_idct4x4_1_add_neon;
387
388  add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
389  specialize qw/vp9_idct4x4_16_add sse2 neon_asm dspr2/;
390  $vp9_idct4x4_16_add_neon_asm=vp9_idct4x4_16_add_neon;
391
392  add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
393  specialize qw/vp9_idct8x8_1_add sse2 neon_asm dspr2/;
394  $vp9_idct8x8_1_add_neon_asm=vp9_idct8x8_1_add_neon;
395
396  add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
397  specialize qw/vp9_idct8x8_64_add sse2 neon_asm dspr2/, "$ssse3_x86_64";
398  $vp9_idct8x8_64_add_neon_asm=vp9_idct8x8_64_add_neon;
399
400  add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
401  specialize qw/vp9_idct8x8_12_add sse2 neon_asm dspr2/, "$ssse3_x86_64";
402  $vp9_idct8x8_12_add_neon_asm=vp9_idct8x8_12_add_neon;
403
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 sse2 neon_asm dspr2/;
406  $vp9_idct16x16_1_add_neon_asm=vp9_idct16x16_1_add_neon;
407
408  add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
409  specialize qw/vp9_idct16x16_256_add sse2 ssse3 neon_asm dspr2/;
410  $vp9_idct16x16_256_add_neon_asm=vp9_idct16x16_256_add_neon;
411
412  add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
413  specialize qw/vp9_idct16x16_10_add sse2 ssse3 neon_asm dspr2/;
414  $vp9_idct16x16_10_add_neon_asm=vp9_idct16x16_10_add_neon;
415
416  add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
417  specialize qw/vp9_idct32x32_1024_add sse2 neon_asm dspr2/;
418  $vp9_idct32x32_1024_add_neon_asm=vp9_idct32x32_1024_add_neon;
419
420  add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
421  specialize qw/vp9_idct32x32_34_add sse2 neon_asm dspr2/;
422  $vp9_idct32x32_34_add_neon_asm=vp9_idct32x32_1024_add_neon;
423
424  add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
425  specialize qw/vp9_idct32x32_1_add sse2 neon_asm dspr2/;
426  $vp9_idct32x32_1_add_neon_asm=vp9_idct32x32_1_add_neon;
427
428  add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
429  specialize qw/vp9_iht4x4_16_add sse2 neon_asm dspr2/;
430  $vp9_iht4x4_16_add_neon_asm=vp9_iht4x4_16_add_neon;
431
432  add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
433  specialize qw/vp9_iht8x8_64_add sse2 neon_asm dspr2/;
434  $vp9_iht8x8_64_add_neon_asm=vp9_iht8x8_64_add_neon;
435
436  add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
437  specialize qw/vp9_iht16x16_256_add sse2 dspr2/;
438
439  # dct and add
440
441  add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
442  specialize qw/vp9_iwht4x4_1_add/;
443
444  add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
445  specialize qw/vp9_iwht4x4_16_add/;
446}
447
448# High bitdepth functions
449if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
450  #
451  # Intra prediction
452  #
453  add_proto qw/void vp9_high_d207_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
454  specialize qw/vp9_high_d207_predictor_4x4/;
455
456  add_proto qw/void vp9_high_d45_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
457  specialize qw/vp9_high_d45_predictor_4x4/;
458
459  add_proto qw/void vp9_high_d63_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
460  specialize qw/vp9_high_d63_predictor_4x4/;
461
462  add_proto qw/void vp9_high_h_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
463  specialize qw/vp9_high_h_predictor_4x4/;
464
465  add_proto qw/void vp9_high_d117_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
466  specialize qw/vp9_high_d117_predictor_4x4/;
467
468  add_proto qw/void vp9_high_d135_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
469  specialize qw/vp9_high_d135_predictor_4x4/;
470
471  add_proto qw/void vp9_high_d153_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
472  specialize qw/vp9_high_d153_predictor_4x4/;
473
474  add_proto qw/void vp9_high_v_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
475  specialize qw/vp9_high_v_predictor_4x4 neon/, "$sse_x86inc";
476
477  add_proto qw/void vp9_high_tm_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
478  specialize qw/vp9_high_tm_predictor_4x4/, "$sse_x86inc";
479
480  add_proto qw/void vp9_high_dc_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
481  specialize qw/vp9_high_dc_predictor_4x4/, "$sse_x86inc";
482
483  add_proto qw/void vp9_high_dc_top_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
484  specialize qw/vp9_high_dc_top_predictor_4x4/;
485
486  add_proto qw/void vp9_high_dc_left_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
487  specialize qw/vp9_high_dc_left_predictor_4x4/;
488
489  add_proto qw/void vp9_high_dc_128_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
490  specialize qw/vp9_high_dc_128_predictor_4x4/;
491
492  add_proto qw/void vp9_high_d207_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
493  specialize qw/vp9_high_d207_predictor_8x8/;
494
495  add_proto qw/void vp9_high_d45_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
496  specialize qw/vp9_high_d45_predictor_8x8/;
497
498  add_proto qw/void vp9_high_d63_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
499  specialize qw/vp9_high_d63_predictor_8x8/;
500
501  add_proto qw/void vp9_high_h_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
502  specialize qw/vp9_high_h_predictor_8x8/;
503
504  add_proto qw/void vp9_high_d117_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
505  specialize qw/vp9_high_d117_predictor_8x8/;
506
507  add_proto qw/void vp9_high_d135_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
508  specialize qw/vp9_high_d135_predictor_8x8/;
509
510  add_proto qw/void vp9_high_d153_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
511  specialize qw/vp9_high_d153_predictor_8x8/;
512
513  add_proto qw/void vp9_high_v_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
514  specialize qw/vp9_high_v_predictor_8x8/, "$sse2_x86inc";
515
516  add_proto qw/void vp9_high_tm_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
517  specialize qw/vp9_high_tm_predictor_8x8/, "$sse2_x86inc";
518
519  add_proto qw/void vp9_high_dc_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
520  specialize qw/vp9_high_dc_predictor_8x8/, "$sse2_x86inc";;
521
522  add_proto qw/void vp9_high_dc_top_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
523  specialize qw/vp9_high_dc_top_predictor_8x8/;
524
525  add_proto qw/void vp9_high_dc_left_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
526  specialize qw/vp9_high_dc_left_predictor_8x8/;
527
528  add_proto qw/void vp9_high_dc_128_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
529  specialize qw/vp9_high_dc_128_predictor_8x8/;
530
531  add_proto qw/void vp9_high_d207_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
532  specialize qw/vp9_high_d207_predictor_16x16/;
533
534  add_proto qw/void vp9_high_d45_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
535  specialize qw/vp9_high_d45_predictor_16x16/;
536
537  add_proto qw/void vp9_high_d63_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
538  specialize qw/vp9_high_d63_predictor_16x16/;
539
540  add_proto qw/void vp9_high_h_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
541  specialize qw/vp9_high_h_predictor_16x16/;
542
543  add_proto qw/void vp9_high_d117_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
544  specialize qw/vp9_high_d117_predictor_16x16/;
545
546  add_proto qw/void vp9_high_d135_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
547  specialize qw/vp9_high_d135_predictor_16x16/;
548
549  add_proto qw/void vp9_high_d153_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
550  specialize qw/vp9_high_d153_predictor_16x16/;
551
552  add_proto qw/void vp9_high_v_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
553  specialize qw/vp9_high_v_predictor_16x16 neon/, "$sse2_x86inc";
554
555  add_proto qw/void vp9_high_tm_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
556  specialize qw/vp9_high_tm_predictor_16x16/, "$sse2_x86_64";
557
558  add_proto qw/void vp9_high_dc_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
559  specialize qw/vp9_high_dc_predictor_16x16/, "$sse2_x86inc";
560
561  add_proto qw/void vp9_high_dc_top_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
562  specialize qw/vp9_high_dc_top_predictor_16x16/;
563
564  add_proto qw/void vp9_high_dc_left_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
565  specialize qw/vp9_high_dc_left_predictor_16x16/;
566
567  add_proto qw/void vp9_high_dc_128_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
568  specialize qw/vp9_high_dc_128_predictor_16x16/;
569
570  add_proto qw/void vp9_high_d207_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
571  specialize qw/vp9_high_d207_predictor_32x32/;
572
573  add_proto qw/void vp9_high_d45_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
574  specialize qw/vp9_high_d45_predictor_32x32/;
575
576  add_proto qw/void vp9_high_d63_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
577  specialize qw/vp9_high_d63_predictor_32x32/;
578
579  add_proto qw/void vp9_high_h_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
580  specialize qw/vp9_high_h_predictor_32x32/;
581
582  add_proto qw/void vp9_high_d117_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
583  specialize qw/vp9_high_d117_predictor_32x32/;
584
585  add_proto qw/void vp9_high_d135_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
586  specialize qw/vp9_high_d135_predictor_32x32/;
587
588  add_proto qw/void vp9_high_d153_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
589  specialize qw/vp9_high_d153_predictor_32x32/;
590
591  add_proto qw/void vp9_high_v_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
592  specialize qw/vp9_high_v_predictor_32x32/, "$sse2_x86inc";
593
594  add_proto qw/void vp9_high_tm_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
595  specialize qw/vp9_high_tm_predictor_32x32/, "$sse2_x86_64";
596
597  add_proto qw/void vp9_high_dc_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
598  specialize qw/vp9_high_dc_predictor_32x32/, "$sse2_x86_64";
599
600  add_proto qw/void vp9_high_dc_top_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
601  specialize qw/vp9_high_dc_top_predictor_32x32/;
602
603  add_proto qw/void vp9_high_dc_left_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
604  specialize qw/vp9_high_dc_left_predictor_32x32/;
605
606  add_proto qw/void vp9_high_dc_128_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bps";
607  specialize qw/vp9_high_dc_128_predictor_32x32/;
608
609  #
610  # Sub Pixel Filters
611  #
612  add_proto qw/void vp9_high_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";
613  specialize qw/vp9_high_convolve_copy/;
614
615  add_proto qw/void vp9_high_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";
616  specialize qw/vp9_high_convolve_avg/;
617
618  add_proto qw/void vp9_high_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";
619  specialize qw/vp9_high_convolve8/, "$sse2_x86_64";
620
621  add_proto qw/void vp9_high_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";
622  specialize qw/vp9_high_convolve8_horiz/, "$sse2_x86_64";
623
624  add_proto qw/void vp9_high_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";
625  specialize qw/vp9_high_convolve8_vert/, "$sse2_x86_64";
626
627  add_proto qw/void vp9_high_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";
628  specialize qw/vp9_high_convolve8_avg/, "$sse2_x86_64";
629
630  add_proto qw/void vp9_high_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";
631  specialize qw/vp9_high_convolve8_avg_horiz/, "$sse2_x86_64";
632
633  add_proto qw/void vp9_high_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";
634  specialize qw/vp9_high_convolve8_avg_vert/, "$sse2_x86_64";
635
636  #
637  # dct
638  #
639  add_proto qw/void vp9_high_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
640  specialize qw/vp9_high_idct4x4_1_add/;
641
642  add_proto qw/void vp9_high_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
643  specialize qw/vp9_high_idct4x4_16_add/;
644
645  add_proto qw/void vp9_high_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
646  specialize qw/vp9_high_idct8x8_1_add/;
647
648  add_proto qw/void vp9_high_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
649  specialize qw/vp9_high_idct8x8_64_add/;
650
651  add_proto qw/void vp9_high_idct8x8_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
652  specialize qw/vp9_high_idct8x8_10_add/;
653
654  add_proto qw/void vp9_high_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
655  specialize qw/vp9_high_idct16x16_1_add/;
656
657  add_proto qw/void vp9_high_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
658  specialize qw/vp9_high_idct16x16_256_add/;
659
660  add_proto qw/void vp9_high_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
661  specialize qw/vp9_high_idct16x16_10_add/;
662
663  add_proto qw/void vp9_high_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
664  specialize qw/vp9_high_idct32x32_1024_add/;
665
666  add_proto qw/void vp9_high_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
667  specialize qw/vp9_high_idct32x32_34_add/;
668
669  add_proto qw/void vp9_high_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
670  specialize qw/vp9_high_idct32x32_1_add/;
671
672  add_proto qw/void vp9_high_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd";
673  specialize qw/vp9_high_iht4x4_16_add/;
674
675  add_proto qw/void vp9_high_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd";
676  specialize qw/vp9_high_iht8x8_64_add/;
677
678  add_proto qw/void vp9_high_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd";
679  specialize qw/vp9_high_iht16x16_256_add/;
680
681  # dct and add
682
683  add_proto qw/void vp9_high_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
684  specialize qw/vp9_high_iwht4x4_1_add/;
685
686  add_proto qw/void vp9_high_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
687  specialize qw/vp9_high_iwht4x4_16_add/;
688}
689
690#
691# Encoder functions below this point.
692#
693if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") {
694
695
696# variance
697add_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";
698specialize qw/vp9_variance32x16 avx2/, "$sse2_x86inc";
699
700add_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";
701specialize qw/vp9_variance16x32/, "$sse2_x86inc";
702
703add_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";
704specialize qw/vp9_variance64x32 avx2/, "$sse2_x86inc";
705
706add_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";
707specialize qw/vp9_variance32x64/, "$sse2_x86inc";
708
709add_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";
710specialize qw/vp9_variance32x32 avx2 neon/, "$sse2_x86inc";
711
712add_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";
713specialize qw/vp9_variance64x64 avx2/, "$sse2_x86inc";
714
715add_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";
716specialize qw/vp9_variance16x16 avx2 neon/, "$sse2_x86inc";
717
718add_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";
719specialize qw/vp9_variance16x8/, "$sse2_x86inc";
720
721add_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";
722specialize qw/vp9_variance8x16/, "$sse2_x86inc";
723
724add_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";
725specialize qw/vp9_variance8x8 neon/, "$sse2_x86inc";
726
727add_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";
728specialize qw/vp9_get8x8var neon/, "$sse2_x86inc";
729
730add_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";
731specialize qw/vp9_get16x16var avx2 neon/, "$sse2_x86inc";
732
733add_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";
734specialize qw/vp9_variance8x4/, "$sse2_x86inc";
735
736add_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";
737specialize qw/vp9_variance4x8/, "$sse2_x86inc";
738
739add_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";
740specialize qw/vp9_variance4x4/, "$sse2_x86inc";
741
742add_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";
743specialize qw/vp9_sub_pixel_variance64x64 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
744
745add_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";
746specialize qw/vp9_sub_pixel_avg_variance64x64 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
747
748add_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";
749specialize qw/vp9_sub_pixel_variance32x64/, "$sse2_x86inc", "$ssse3_x86inc";
750
751add_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";
752specialize qw/vp9_sub_pixel_avg_variance32x64/, "$sse2_x86inc", "$ssse3_x86inc";
753
754add_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";
755specialize qw/vp9_sub_pixel_variance64x32/, "$sse2_x86inc", "$ssse3_x86inc";
756
757add_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";
758specialize qw/vp9_sub_pixel_avg_variance64x32/, "$sse2_x86inc", "$ssse3_x86inc";
759
760add_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";
761specialize qw/vp9_sub_pixel_variance32x16/, "$sse2_x86inc", "$ssse3_x86inc";
762
763add_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";
764specialize qw/vp9_sub_pixel_avg_variance32x16/, "$sse2_x86inc", "$ssse3_x86inc";
765
766add_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";
767specialize qw/vp9_sub_pixel_variance16x32/, "$sse2_x86inc", "$ssse3_x86inc";
768
769add_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";
770specialize qw/vp9_sub_pixel_avg_variance16x32/, "$sse2_x86inc", "$ssse3_x86inc";
771
772add_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";
773specialize qw/vp9_sub_pixel_variance32x32 avx2 neon/, "$sse2_x86inc", "$ssse3_x86inc";
774
775add_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";
776specialize qw/vp9_sub_pixel_avg_variance32x32 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
777
778add_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";
779specialize qw/vp9_sub_pixel_variance16x16 neon/, "$sse2_x86inc", "$ssse3_x86inc";
780
781add_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";
782specialize qw/vp9_sub_pixel_avg_variance16x16/, "$sse2_x86inc", "$ssse3_x86inc";
783
784add_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";
785specialize qw/vp9_sub_pixel_variance8x16/, "$sse2_x86inc", "$ssse3_x86inc";
786
787add_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";
788specialize qw/vp9_sub_pixel_avg_variance8x16/, "$sse2_x86inc", "$ssse3_x86inc";
789
790add_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";
791specialize qw/vp9_sub_pixel_variance16x8/, "$sse2_x86inc", "$ssse3_x86inc";
792
793add_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";
794specialize qw/vp9_sub_pixel_avg_variance16x8/, "$sse2_x86inc", "$ssse3_x86inc";
795
796add_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";
797specialize qw/vp9_sub_pixel_variance8x8 neon/, "$sse2_x86inc", "$ssse3_x86inc";
798
799add_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";
800specialize qw/vp9_sub_pixel_avg_variance8x8/, "$sse2_x86inc", "$ssse3_x86inc";
801
802# TODO(jingning): need to convert 8x4/4x8 functions into mmx/sse form
803add_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";
804specialize qw/vp9_sub_pixel_variance8x4/, "$sse2_x86inc", "$ssse3_x86inc";
805
806add_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";
807specialize qw/vp9_sub_pixel_avg_variance8x4/, "$sse2_x86inc", "$ssse3_x86inc";
808
809add_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";
810specialize qw/vp9_sub_pixel_variance4x8/, "$sse_x86inc", "$ssse3_x86inc";
811
812add_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";
813specialize qw/vp9_sub_pixel_avg_variance4x8/, "$sse_x86inc", "$ssse3_x86inc";
814
815add_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";
816specialize qw/vp9_sub_pixel_variance4x4/, "$sse_x86inc", "$ssse3_x86inc";
817#vp9_sub_pixel_variance4x4_sse2=vp9_sub_pixel_variance4x4_wmt
818
819add_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";
820specialize qw/vp9_sub_pixel_avg_variance4x4/, "$sse_x86inc", "$ssse3_x86inc";
821
822add_proto qw/unsigned int vp9_sad64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
823specialize qw/vp9_sad64x64 neon/, "$sse2_x86inc";
824
825add_proto qw/unsigned int vp9_sad32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
826specialize qw/vp9_sad32x64/, "$sse2_x86inc";
827
828add_proto qw/unsigned int vp9_sad64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
829specialize qw/vp9_sad64x32/, "$sse2_x86inc";
830
831add_proto qw/unsigned int vp9_sad32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
832specialize qw/vp9_sad32x16/, "$sse2_x86inc";
833
834add_proto qw/unsigned int vp9_sad16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
835specialize qw/vp9_sad16x32/, "$sse2_x86inc";
836
837add_proto qw/unsigned int vp9_sad32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
838specialize qw/vp9_sad32x32 neon/, "$sse2_x86inc";
839
840add_proto qw/unsigned int vp9_sad16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
841specialize qw/vp9_sad16x16 neon/, "$sse2_x86inc";
842
843add_proto qw/unsigned int vp9_sad16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
844specialize qw/vp9_sad16x8/, "$sse2_x86inc";
845
846add_proto qw/unsigned int vp9_sad8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
847specialize qw/vp9_sad8x16/, "$sse2_x86inc";
848
849add_proto qw/unsigned int vp9_sad8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
850specialize qw/vp9_sad8x8 neon/, "$sse2_x86inc";
851
852add_proto qw/unsigned int vp9_sad8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
853specialize qw/vp9_sad8x4/, "$sse2_x86inc";
854
855add_proto qw/unsigned int vp9_sad4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
856specialize qw/vp9_sad4x8/, "$sse_x86inc";
857
858add_proto qw/unsigned int vp9_sad4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
859specialize qw/vp9_sad4x4/, "$sse_x86inc";
860
861add_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";
862specialize qw/vp9_sad64x64_avg/, "$sse2_x86inc";
863
864add_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";
865specialize qw/vp9_sad32x64_avg/, "$sse2_x86inc";
866
867add_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";
868specialize qw/vp9_sad64x32_avg/, "$sse2_x86inc";
869
870add_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";
871specialize qw/vp9_sad32x16_avg/, "$sse2_x86inc";
872
873add_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";
874specialize qw/vp9_sad16x32_avg/, "$sse2_x86inc";
875
876add_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";
877specialize qw/vp9_sad32x32_avg/, "$sse2_x86inc";
878
879add_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";
880specialize qw/vp9_sad16x16_avg/, "$sse2_x86inc";
881
882add_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";
883specialize qw/vp9_sad16x8_avg/, "$sse2_x86inc";
884
885add_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";
886specialize qw/vp9_sad8x16_avg/, "$sse2_x86inc";
887
888add_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";
889specialize qw/vp9_sad8x8_avg/, "$sse2_x86inc";
890
891add_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";
892specialize qw/vp9_sad8x4_avg/, "$sse2_x86inc";
893
894add_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";
895specialize qw/vp9_sad4x8_avg/, "$sse_x86inc";
896
897add_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";
898specialize qw/vp9_sad4x4_avg/, "$sse_x86inc";
899
900add_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";
901specialize qw/vp9_sad64x64x3/;
902
903add_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";
904specialize qw/vp9_sad32x32x3/;
905
906add_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";
907specialize qw/vp9_sad16x16x3 sse3 ssse3/;
908
909add_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";
910specialize qw/vp9_sad16x8x3 sse3 ssse3/;
911
912add_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";
913specialize qw/vp9_sad8x16x3 sse3/;
914
915add_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";
916specialize qw/vp9_sad8x8x3 sse3/;
917
918add_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";
919specialize qw/vp9_sad4x4x3 sse3/;
920
921add_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";
922specialize qw/vp9_sad64x64x8/;
923
924add_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";
925specialize qw/vp9_sad32x32x8/;
926
927add_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";
928specialize qw/vp9_sad16x16x8 sse4/;
929
930add_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";
931specialize qw/vp9_sad16x8x8 sse4/;
932
933add_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";
934specialize qw/vp9_sad8x16x8 sse4/;
935
936add_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";
937specialize qw/vp9_sad8x8x8 sse4/;
938
939add_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";
940specialize qw/vp9_sad8x4x8/;
941
942add_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";
943specialize qw/vp9_sad4x8x8/;
944
945add_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";
946specialize qw/vp9_sad4x4x8 sse4/;
947
948add_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";
949specialize qw/vp9_sad64x64x4d sse2 avx2/;
950
951add_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";
952specialize qw/vp9_sad32x64x4d sse2/;
953
954add_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";
955specialize qw/vp9_sad64x32x4d sse2/;
956
957add_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";
958specialize qw/vp9_sad32x16x4d sse2/;
959
960add_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";
961specialize qw/vp9_sad16x32x4d sse2/;
962
963add_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";
964specialize qw/vp9_sad32x32x4d sse2 avx2/;
965
966add_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";
967specialize qw/vp9_sad16x16x4d sse2/;
968
969add_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";
970specialize qw/vp9_sad16x8x4d sse2/;
971
972add_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";
973specialize qw/vp9_sad8x16x4d sse2/;
974
975add_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";
976specialize qw/vp9_sad8x8x4d sse2/;
977
978# TODO(jingning): need to convert these 4x8/8x4 functions into sse2 form
979add_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";
980specialize qw/vp9_sad8x4x4d sse2/;
981
982add_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";
983specialize qw/vp9_sad4x8x4d sse/;
984
985add_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";
986specialize qw/vp9_sad4x4x4d sse/;
987
988add_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";
989specialize qw/vp9_mse16x16 avx2/, "$sse2_x86inc";
990
991add_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";
992specialize qw/vp9_mse8x16/, "$sse2_x86inc";
993
994add_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";
995specialize qw/vp9_mse16x8/, "$sse2_x86inc";
996
997add_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";
998specialize qw/vp9_mse8x8/, "$sse2_x86inc";
999
1000add_proto qw/unsigned int vp9_get_mb_ss/, "const int16_t *";
1001specialize qw/vp9_get_mb_ss/, "$sse2_x86inc";
1002# ENCODEMB INVOKE
1003
1004add_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";
1005specialize qw/vp9_subtract_block neon/, "$sse2_x86inc";
1006
1007if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1008# the transform coefficients are held in 32-bit
1009# values, so the assembler code for  vp9_block_error can no longer be used.
1010  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";
1011  specialize qw/vp9_block_error/;
1012
1013  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";
1014  specialize qw/vp9_quantize_fp/;
1015
1016  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";
1017  specialize qw/vp9_quantize_fp_32x32/;
1018
1019  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";
1020  specialize qw/vp9_quantize_b/;
1021
1022  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";
1023  specialize qw/vp9_quantize_b_32x32/;
1024} else {
1025  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";
1026  specialize qw/vp9_block_error avx2/, "$sse2_x86inc";
1027
1028  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";
1029  specialize qw/vp9_quantize_fp neon/, "$ssse3_x86_64";
1030
1031  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";
1032  specialize qw/vp9_quantize_fp_32x32/, "$ssse3_x86_64";
1033
1034  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";
1035  specialize qw/vp9_quantize_b/, "$ssse3_x86_64";
1036
1037  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";
1038  specialize qw/vp9_quantize_b_32x32/, "$ssse3_x86_64";
1039}
1040
1041#
1042# Structured Similarity (SSIM)
1043#
1044if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
1045    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";
1046    specialize qw/vp9_ssim_parms_8x8/, "$sse2_x86_64";
1047
1048    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";
1049    specialize qw/vp9_ssim_parms_16x16/, "$sse2_x86_64";
1050}
1051
1052# fdct functions
1053
1054if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1055  add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1056  specialize qw/vp9_fht4x4/;
1057
1058  add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1059  specialize qw/vp9_fht8x8/;
1060
1061  add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1062  specialize qw/vp9_fht16x16/;
1063
1064  add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1065  specialize qw/vp9_fwht4x4/;
1066
1067  add_proto qw/void vp9_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
1068  specialize qw/vp9_fdct4x4_1/;
1069
1070  add_proto qw/void vp9_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1071  specialize qw/vp9_fdct4x4/;
1072
1073  add_proto qw/void vp9_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1074  specialize qw/vp9_fdct8x8_1/;
1075
1076  add_proto qw/void vp9_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1077  specialize qw/vp9_fdct8x8/;
1078
1079  add_proto qw/void vp9_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1080  specialize qw/vp9_fdct16x16_1/;
1081
1082  add_proto qw/void vp9_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1083  specialize qw/vp9_fdct16x16/;
1084
1085  add_proto qw/void vp9_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1086  specialize qw/vp9_fdct32x32_1/;
1087
1088  add_proto qw/void vp9_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1089  specialize qw/vp9_fdct32x32/;
1090
1091  add_proto qw/void vp9_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1092  specialize qw/vp9_fdct32x32_rd/;
1093} else {
1094  add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1095  specialize qw/vp9_fht4x4 sse2/;
1096
1097  add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1098  specialize qw/vp9_fht8x8 sse2/;
1099
1100  add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1101  specialize qw/vp9_fht16x16 sse2/;
1102
1103  add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1104  specialize qw/vp9_fwht4x4/, "$mmx_x86inc";
1105
1106  add_proto qw/void vp9_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
1107  specialize qw/vp9_fdct4x4_1 sse2/;
1108
1109  add_proto qw/void vp9_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1110  specialize qw/vp9_fdct4x4 sse2/;
1111
1112  add_proto qw/void vp9_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1113  specialize qw/vp9_fdct8x8_1 sse2 neon/;
1114
1115  add_proto qw/void vp9_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1116  specialize qw/vp9_fdct8x8 sse2 neon/, "$ssse3_x86_64";
1117
1118  add_proto qw/void vp9_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1119  specialize qw/vp9_fdct16x16_1 sse2/;
1120
1121  add_proto qw/void vp9_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1122  specialize qw/vp9_fdct16x16 sse2/;
1123
1124  add_proto qw/void vp9_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1125  specialize qw/vp9_fdct32x32_1 sse2/;
1126
1127  add_proto qw/void vp9_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1128  specialize qw/vp9_fdct32x32 sse2 avx2/;
1129
1130  add_proto qw/void vp9_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1131  specialize qw/vp9_fdct32x32_rd sse2 avx2/;
1132}
1133
1134#
1135# Motion search
1136#
1137add_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";
1138specialize qw/vp9_full_search_sad sse3 sse4_1/;
1139$vp9_full_search_sad_sse3=vp9_full_search_sadx3;
1140$vp9_full_search_sad_sse4_1=vp9_full_search_sadx8;
1141
1142add_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";
1143specialize qw/vp9_refining_search_sad/;
1144
1145add_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";
1146specialize qw/vp9_diamond_search_sad/;
1147
1148add_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";
1149specialize qw/vp9_full_range_search/;
1150
1151add_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";
1152specialize qw/vp9_temporal_filter_apply sse2/;
1153
1154if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1155
1156  # variance
1157  add_proto qw/unsigned int vp9_high_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1158  specialize qw/vp9_high_variance32x16/;
1159
1160  add_proto qw/unsigned int vp9_high_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1161  specialize qw/vp9_high_variance16x32/;
1162
1163  add_proto qw/unsigned int vp9_high_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1164  specialize qw/vp9_high_variance64x32/;
1165
1166  add_proto qw/unsigned int vp9_high_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1167  specialize qw/vp9_high_variance32x64/;
1168
1169  add_proto qw/unsigned int vp9_high_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1170  specialize qw/vp9_high_variance32x32/;
1171
1172  add_proto qw/unsigned int vp9_high_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1173  specialize qw/vp9_high_variance64x64/;
1174
1175  add_proto qw/unsigned int vp9_high_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1176  specialize qw/vp9_high_variance16x16/;
1177
1178  add_proto qw/unsigned int vp9_high_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1179  specialize qw/vp9_high_variance16x8/;
1180
1181  add_proto qw/unsigned int vp9_high_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1182  specialize qw/vp9_high_variance8x16/;
1183
1184  add_proto qw/unsigned int vp9_high_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1185  specialize qw/vp9_high_variance8x8/;
1186
1187  add_proto qw/unsigned int vp9_high_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1188  specialize qw/vp9_high_variance8x4/;
1189
1190  add_proto qw/unsigned int vp9_high_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1191  specialize qw/vp9_high_variance4x8/;
1192
1193  add_proto qw/unsigned int vp9_high_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1194  specialize qw/vp9_high_variance4x4/;
1195
1196  add_proto qw/void vp9_high_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1197  specialize qw/vp9_high_get8x8var/;
1198
1199  add_proto qw/void vp9_high_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1200  specialize qw/vp9_high_get16x16var/;
1201
1202  add_proto qw/unsigned int vp9_high_10_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1203  specialize qw/vp9_high_10_variance32x16/;
1204
1205  add_proto qw/unsigned int vp9_high_10_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1206  specialize qw/vp9_high_10_variance16x32/;
1207
1208  add_proto qw/unsigned int vp9_high_10_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1209  specialize qw/vp9_high_10_variance64x32/;
1210
1211  add_proto qw/unsigned int vp9_high_10_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1212  specialize qw/vp9_high_10_variance32x64/;
1213
1214  add_proto qw/unsigned int vp9_high_10_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1215  specialize qw/vp9_high_10_variance32x32/;
1216
1217  add_proto qw/unsigned int vp9_high_10_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1218  specialize qw/vp9_high_10_variance64x64/;
1219
1220  add_proto qw/unsigned int vp9_high_10_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1221  specialize qw/vp9_high_10_variance16x16/;
1222
1223  add_proto qw/unsigned int vp9_high_10_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1224  specialize qw/vp9_high_10_variance16x8/;
1225
1226  add_proto qw/unsigned int vp9_high_10_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1227  specialize qw/vp9_high_10_variance8x16/;
1228
1229  add_proto qw/unsigned int vp9_high_10_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1230  specialize qw/vp9_high_10_variance8x8/;
1231
1232  add_proto qw/unsigned int vp9_high_10_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1233  specialize qw/vp9_high_10_variance8x4/;
1234
1235  add_proto qw/unsigned int vp9_high_10_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1236  specialize qw/vp9_high_10_variance4x8/;
1237
1238  add_proto qw/unsigned int vp9_high_10_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1239  specialize qw/vp9_high_10_variance4x4/;
1240
1241  add_proto qw/void vp9_high_10_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1242  specialize qw/vp9_high_10_get8x8var/;
1243
1244  add_proto qw/void vp9_high_10_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1245  specialize qw/vp9_high_10_get16x16var/;
1246
1247  add_proto qw/unsigned int vp9_high_12_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1248  specialize qw/vp9_high_12_variance32x16/;
1249
1250  add_proto qw/unsigned int vp9_high_12_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1251  specialize qw/vp9_high_12_variance16x32/;
1252
1253  add_proto qw/unsigned int vp9_high_12_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1254  specialize qw/vp9_high_12_variance64x32/;
1255
1256  add_proto qw/unsigned int vp9_high_12_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1257  specialize qw/vp9_high_12_variance32x64/;
1258
1259  add_proto qw/unsigned int vp9_high_12_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1260  specialize qw/vp9_high_12_variance32x32/;
1261
1262  add_proto qw/unsigned int vp9_high_12_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1263  specialize qw/vp9_high_12_variance64x64/;
1264
1265  add_proto qw/unsigned int vp9_high_12_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1266  specialize qw/vp9_high_12_variance16x16/;
1267
1268  add_proto qw/unsigned int vp9_high_12_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1269  specialize qw/vp9_high_12_variance16x8/;
1270
1271  add_proto qw/unsigned int vp9_high_12_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1272  specialize qw/vp9_high_12_variance8x16/;
1273
1274  add_proto qw/unsigned int vp9_high_12_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1275  specialize qw/vp9_high_12_variance8x8/;
1276
1277  add_proto qw/unsigned int vp9_high_12_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1278  specialize qw/vp9_high_12_variance8x4/;
1279
1280  add_proto qw/unsigned int vp9_high_12_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1281  specialize qw/vp9_high_12_variance4x8/;
1282
1283  add_proto qw/unsigned int vp9_high_12_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1284  specialize qw/vp9_high_12_variance4x4/;
1285
1286  add_proto qw/void vp9_high_12_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1287  specialize qw/vp9_high_12_get8x8var/;
1288
1289  add_proto qw/void vp9_high_12_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1290  specialize qw/vp9_high_12_get16x16var/;
1291
1292  add_proto qw/unsigned int vp9_high_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";
1293  specialize qw/vp9_high_sub_pixel_variance64x64/;
1294
1295  add_proto qw/unsigned int vp9_high_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";
1296  specialize qw/vp9_high_sub_pixel_avg_variance64x64/;
1297
1298  add_proto qw/unsigned int vp9_high_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";
1299  specialize qw/vp9_high_sub_pixel_variance32x64/;
1300
1301  add_proto qw/unsigned int vp9_high_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";
1302  specialize qw/vp9_high_sub_pixel_avg_variance32x64/;
1303
1304  add_proto qw/unsigned int vp9_high_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";
1305  specialize qw/vp9_high_sub_pixel_variance64x32/;
1306
1307  add_proto qw/unsigned int vp9_high_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";
1308  specialize qw/vp9_high_sub_pixel_avg_variance64x32/;
1309
1310  add_proto qw/unsigned int vp9_high_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";
1311  specialize qw/vp9_high_sub_pixel_variance32x16/;
1312
1313  add_proto qw/unsigned int vp9_high_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";
1314  specialize qw/vp9_high_sub_pixel_avg_variance32x16/;
1315
1316  add_proto qw/unsigned int vp9_high_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";
1317  specialize qw/vp9_high_sub_pixel_variance16x32/;
1318
1319  add_proto qw/unsigned int vp9_high_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";
1320  specialize qw/vp9_high_sub_pixel_avg_variance16x32/;
1321
1322  add_proto qw/unsigned int vp9_high_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";
1323  specialize qw/vp9_high_sub_pixel_variance32x32/;
1324
1325  add_proto qw/unsigned int vp9_high_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";
1326  specialize qw/vp9_high_sub_pixel_avg_variance32x32/;
1327
1328  add_proto qw/unsigned int vp9_high_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";
1329  specialize qw/vp9_high_sub_pixel_variance16x16/;
1330
1331  add_proto qw/unsigned int vp9_high_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";
1332  specialize qw/vp9_high_sub_pixel_avg_variance16x16/;
1333
1334  add_proto qw/unsigned int vp9_high_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";
1335  specialize qw/vp9_high_sub_pixel_variance8x16/;
1336
1337  add_proto qw/unsigned int vp9_high_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";
1338  specialize qw/vp9_high_sub_pixel_avg_variance8x16/;
1339
1340  add_proto qw/unsigned int vp9_high_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";
1341  specialize qw/vp9_high_sub_pixel_variance16x8/;
1342
1343  add_proto qw/unsigned int vp9_high_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";
1344  specialize qw/vp9_high_sub_pixel_avg_variance16x8/;
1345
1346  add_proto qw/unsigned int vp9_high_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";
1347  specialize qw/vp9_high_sub_pixel_variance8x8/;
1348
1349  add_proto qw/unsigned int vp9_high_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";
1350  specialize qw/vp9_high_sub_pixel_avg_variance8x8/;
1351
1352  add_proto qw/unsigned int vp9_high_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";
1353  specialize qw/vp9_high_sub_pixel_variance8x4/;
1354
1355  add_proto qw/unsigned int vp9_high_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";
1356  specialize qw/vp9_high_sub_pixel_avg_variance8x4/;
1357
1358  add_proto qw/unsigned int vp9_high_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";
1359  specialize qw/vp9_high_sub_pixel_variance4x8/;
1360
1361  add_proto qw/unsigned int vp9_high_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";
1362  specialize qw/vp9_high_sub_pixel_avg_variance4x8/;
1363
1364  add_proto qw/unsigned int vp9_high_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";
1365  specialize qw/vp9_high_sub_pixel_variance4x4/;
1366
1367  add_proto qw/unsigned int vp9_high_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";
1368  specialize qw/vp9_high_sub_pixel_avg_variance4x4/;
1369
1370  add_proto qw/unsigned int vp9_high_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";
1371  specialize qw/vp9_high_10_sub_pixel_variance64x64/;
1372
1373  add_proto qw/unsigned int vp9_high_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";
1374  specialize qw/vp9_high_10_sub_pixel_avg_variance64x64/;
1375
1376  add_proto qw/unsigned int vp9_high_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";
1377  specialize qw/vp9_high_10_sub_pixel_variance32x64/;
1378
1379  add_proto qw/unsigned int vp9_high_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";
1380  specialize qw/vp9_high_10_sub_pixel_avg_variance32x64/;
1381
1382  add_proto qw/unsigned int vp9_high_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";
1383  specialize qw/vp9_high_10_sub_pixel_variance64x32/;
1384
1385  add_proto qw/unsigned int vp9_high_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";
1386  specialize qw/vp9_high_10_sub_pixel_avg_variance64x32/;
1387
1388  add_proto qw/unsigned int vp9_high_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";
1389  specialize qw/vp9_high_10_sub_pixel_variance32x16/;
1390
1391  add_proto qw/unsigned int vp9_high_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";
1392  specialize qw/vp9_high_10_sub_pixel_avg_variance32x16/;
1393
1394  add_proto qw/unsigned int vp9_high_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";
1395  specialize qw/vp9_high_10_sub_pixel_variance16x32/;
1396
1397  add_proto qw/unsigned int vp9_high_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";
1398  specialize qw/vp9_high_10_sub_pixel_avg_variance16x32/;
1399
1400  add_proto qw/unsigned int vp9_high_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";
1401  specialize qw/vp9_high_10_sub_pixel_variance32x32/;
1402
1403  add_proto qw/unsigned int vp9_high_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";
1404  specialize qw/vp9_high_10_sub_pixel_avg_variance32x32/;
1405
1406  add_proto qw/unsigned int vp9_high_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";
1407  specialize qw/vp9_high_10_sub_pixel_variance16x16/;
1408
1409  add_proto qw/unsigned int vp9_high_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";
1410  specialize qw/vp9_high_10_sub_pixel_avg_variance16x16/;
1411
1412  add_proto qw/unsigned int vp9_high_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";
1413  specialize qw/vp9_high_10_sub_pixel_variance8x16/;
1414
1415  add_proto qw/unsigned int vp9_high_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";
1416  specialize qw/vp9_high_10_sub_pixel_avg_variance8x16/;
1417
1418  add_proto qw/unsigned int vp9_high_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";
1419  specialize qw/vp9_high_10_sub_pixel_variance16x8/;
1420
1421  add_proto qw/unsigned int vp9_high_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";
1422  specialize qw/vp9_high_10_sub_pixel_avg_variance16x8/;
1423
1424  add_proto qw/unsigned int vp9_high_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";
1425  specialize qw/vp9_high_10_sub_pixel_variance8x8/;
1426
1427  add_proto qw/unsigned int vp9_high_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";
1428  specialize qw/vp9_high_10_sub_pixel_avg_variance8x8/;
1429
1430  add_proto qw/unsigned int vp9_high_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";
1431  specialize qw/vp9_high_10_sub_pixel_variance8x4/;
1432
1433  add_proto qw/unsigned int vp9_high_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";
1434  specialize qw/vp9_high_10_sub_pixel_avg_variance8x4/;
1435
1436  add_proto qw/unsigned int vp9_high_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";
1437  specialize qw/vp9_high_10_sub_pixel_variance4x8/;
1438
1439  add_proto qw/unsigned int vp9_high_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";
1440  specialize qw/vp9_high_10_sub_pixel_avg_variance4x8/;
1441
1442  add_proto qw/unsigned int vp9_high_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";
1443  specialize qw/vp9_high_10_sub_pixel_variance4x4/;
1444
1445  add_proto qw/unsigned int vp9_high_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";
1446  specialize qw/vp9_high_10_sub_pixel_avg_variance4x4/;
1447
1448  add_proto qw/unsigned int vp9_high_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";
1449  specialize qw/vp9_high_12_sub_pixel_variance64x64/;
1450
1451  add_proto qw/unsigned int vp9_high_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";
1452  specialize qw/vp9_high_12_sub_pixel_avg_variance64x64/;
1453
1454  add_proto qw/unsigned int vp9_high_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";
1455  specialize qw/vp9_high_12_sub_pixel_variance32x64/;
1456
1457  add_proto qw/unsigned int vp9_high_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";
1458  specialize qw/vp9_high_12_sub_pixel_avg_variance32x64/;
1459
1460  add_proto qw/unsigned int vp9_high_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";
1461  specialize qw/vp9_high_12_sub_pixel_variance64x32/;
1462
1463  add_proto qw/unsigned int vp9_high_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";
1464  specialize qw/vp9_high_12_sub_pixel_avg_variance64x32/;
1465
1466  add_proto qw/unsigned int vp9_high_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";
1467  specialize qw/vp9_high_12_sub_pixel_variance32x16/;
1468
1469  add_proto qw/unsigned int vp9_high_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";
1470  specialize qw/vp9_high_12_sub_pixel_avg_variance32x16/;
1471
1472  add_proto qw/unsigned int vp9_high_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";
1473  specialize qw/vp9_high_12_sub_pixel_variance16x32/;
1474
1475  add_proto qw/unsigned int vp9_high_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";
1476  specialize qw/vp9_high_12_sub_pixel_avg_variance16x32/;
1477
1478  add_proto qw/unsigned int vp9_high_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";
1479  specialize qw/vp9_high_12_sub_pixel_variance32x32/;
1480
1481  add_proto qw/unsigned int vp9_high_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";
1482  specialize qw/vp9_high_12_sub_pixel_avg_variance32x32/;
1483
1484  add_proto qw/unsigned int vp9_high_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";
1485  specialize qw/vp9_high_12_sub_pixel_variance16x16/;
1486
1487  add_proto qw/unsigned int vp9_high_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";
1488  specialize qw/vp9_high_12_sub_pixel_avg_variance16x16/;
1489
1490  add_proto qw/unsigned int vp9_high_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";
1491  specialize qw/vp9_high_12_sub_pixel_variance8x16/;
1492
1493  add_proto qw/unsigned int vp9_high_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";
1494  specialize qw/vp9_high_12_sub_pixel_avg_variance8x16/;
1495
1496  add_proto qw/unsigned int vp9_high_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";
1497  specialize qw/vp9_high_12_sub_pixel_variance16x8/;
1498
1499  add_proto qw/unsigned int vp9_high_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";
1500  specialize qw/vp9_high_12_sub_pixel_avg_variance16x8/;
1501
1502  add_proto qw/unsigned int vp9_high_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";
1503  specialize qw/vp9_high_12_sub_pixel_variance8x8/;
1504
1505  add_proto qw/unsigned int vp9_high_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";
1506  specialize qw/vp9_high_12_sub_pixel_avg_variance8x8/;
1507
1508  add_proto qw/unsigned int vp9_high_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";
1509  specialize qw/vp9_high_12_sub_pixel_variance8x4/;
1510
1511  add_proto qw/unsigned int vp9_high_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";
1512  specialize qw/vp9_high_12_sub_pixel_avg_variance8x4/;
1513
1514  add_proto qw/unsigned int vp9_high_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";
1515  specialize qw/vp9_high_12_sub_pixel_variance4x8/;
1516
1517  add_proto qw/unsigned int vp9_high_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";
1518  specialize qw/vp9_high_12_sub_pixel_avg_variance4x8/;
1519
1520  add_proto qw/unsigned int vp9_high_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";
1521  specialize qw/vp9_high_12_sub_pixel_variance4x4/;
1522
1523  add_proto qw/unsigned int vp9_high_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";
1524  specialize qw/vp9_high_12_sub_pixel_avg_variance4x4/;
1525
1526  add_proto qw/unsigned int vp9_high_sad64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1527  specialize qw/vp9_high_sad64x64/;
1528
1529  add_proto qw/unsigned int vp9_high_sad32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1530  specialize qw/vp9_high_sad32x64/;
1531
1532  add_proto qw/unsigned int vp9_high_sad64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1533  specialize qw/vp9_high_sad64x32/;
1534
1535  add_proto qw/unsigned int vp9_high_sad32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1536  specialize qw/vp9_high_sad32x16/;
1537
1538  add_proto qw/unsigned int vp9_high_sad16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1539  specialize qw/vp9_high_sad16x32/;
1540
1541  add_proto qw/unsigned int vp9_high_sad32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1542  specialize qw/vp9_high_sad32x32/;
1543
1544  add_proto qw/unsigned int vp9_high_sad16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1545  specialize qw/vp9_high_sad16x16/;
1546
1547  add_proto qw/unsigned int vp9_high_sad16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1548  specialize qw/vp9_high_sad16x8/;
1549
1550  add_proto qw/unsigned int vp9_high_sad8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1551  specialize qw/vp9_high_sad8x16/;
1552
1553  add_proto qw/unsigned int vp9_high_sad8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1554  specialize qw/vp9_high_sad8x8/;
1555
1556  add_proto qw/unsigned int vp9_high_sad8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1557  specialize qw/vp9_high_sad8x4/;
1558
1559  add_proto qw/unsigned int vp9_high_sad4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1560  specialize qw/vp9_high_sad4x8/;
1561
1562  add_proto qw/unsigned int vp9_high_sad4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1563  specialize qw/vp9_high_sad4x4/;
1564
1565  add_proto qw/unsigned int vp9_high_sad64x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1566  specialize qw/vp9_high_sad64x64_avg/;
1567
1568  add_proto qw/unsigned int vp9_high_sad32x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1569  specialize qw/vp9_high_sad32x64_avg/;
1570
1571  add_proto qw/unsigned int vp9_high_sad64x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1572  specialize qw/vp9_high_sad64x32_avg/;
1573
1574  add_proto qw/unsigned int vp9_high_sad32x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1575  specialize qw/vp9_high_sad32x16_avg/;
1576
1577  add_proto qw/unsigned int vp9_high_sad16x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1578  specialize qw/vp9_high_sad16x32_avg/;
1579
1580  add_proto qw/unsigned int vp9_high_sad32x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1581  specialize qw/vp9_high_sad32x32_avg/;
1582
1583  add_proto qw/unsigned int vp9_high_sad16x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1584  specialize qw/vp9_high_sad16x16_avg/;
1585
1586  add_proto qw/unsigned int vp9_high_sad16x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1587  specialize qw/vp9_high_sad16x8_avg/;
1588
1589  add_proto qw/unsigned int vp9_high_sad8x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1590  specialize qw/vp9_high_sad8x16_avg/;
1591
1592  add_proto qw/unsigned int vp9_high_sad8x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1593  specialize qw/vp9_high_sad8x8_avg/;
1594
1595  add_proto qw/unsigned int vp9_high_sad8x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1596  specialize qw/vp9_high_sad8x4_avg/;
1597
1598  add_proto qw/unsigned int vp9_high_sad4x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1599  specialize qw/vp9_high_sad4x8_avg/;
1600
1601  add_proto qw/unsigned int vp9_high_sad4x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1602  specialize qw/vp9_high_sad4x4_avg/;
1603
1604  add_proto qw/void vp9_high_sad64x64x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1605  specialize qw/vp9_high_sad64x64x3/;
1606
1607  add_proto qw/void vp9_high_sad32x32x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1608  specialize qw/vp9_high_sad32x32x3/;
1609
1610  add_proto qw/void vp9_high_sad16x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1611  specialize qw/vp9_high_sad16x16x3/;
1612
1613  add_proto qw/void vp9_high_sad16x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1614  specialize qw/vp9_high_sad16x8x3/;
1615
1616  add_proto qw/void vp9_high_sad8x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1617  specialize qw/vp9_high_sad8x16x3/;
1618
1619  add_proto qw/void vp9_high_sad8x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1620  specialize qw/vp9_high_sad8x8x3/;
1621
1622  add_proto qw/void vp9_high_sad4x4x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1623  specialize qw/vp9_high_sad4x4x3/;
1624
1625  add_proto qw/void vp9_high_sad64x64x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1626  specialize qw/vp9_high_sad64x64x8/;
1627
1628  add_proto qw/void vp9_high_sad32x32x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1629  specialize qw/vp9_high_sad32x32x8/;
1630
1631  add_proto qw/void vp9_high_sad16x16x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1632  specialize qw/vp9_high_sad16x16x8/;
1633
1634  add_proto qw/void vp9_high_sad16x8x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1635  specialize qw/vp9_high_sad16x8x8/;
1636
1637  add_proto qw/void vp9_high_sad8x16x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1638  specialize qw/vp9_high_sad8x16x8/;
1639
1640  add_proto qw/void vp9_high_sad8x8x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1641  specialize qw/vp9_high_sad8x8x8/;
1642
1643  add_proto qw/void vp9_high_sad8x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1644  specialize qw/vp9_high_sad8x4x8/;
1645
1646  add_proto qw/void vp9_high_sad4x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1647  specialize qw/vp9_high_sad4x8x8/;
1648
1649  add_proto qw/void vp9_high_sad4x4x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1650  specialize qw/vp9_high_sad4x4x8/;
1651
1652  add_proto qw/void vp9_high_sad64x64x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1653  specialize qw/vp9_high_sad64x64x4d/;
1654
1655  add_proto qw/void vp9_high_sad32x64x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1656  specialize qw/vp9_high_sad32x64x4d/;
1657
1658  add_proto qw/void vp9_high_sad64x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1659  specialize qw/vp9_high_sad64x32x4d/;
1660
1661  add_proto qw/void vp9_high_sad32x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1662  specialize qw/vp9_high_sad32x16x4d/;
1663
1664  add_proto qw/void vp9_high_sad16x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1665  specialize qw/vp9_high_sad16x32x4d/;
1666
1667  add_proto qw/void vp9_high_sad32x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1668  specialize qw/vp9_high_sad32x32x4d/;
1669
1670  add_proto qw/void vp9_high_sad16x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1671  specialize qw/vp9_high_sad16x16x4d/;
1672
1673  add_proto qw/void vp9_high_sad16x8x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1674  specialize qw/vp9_high_sad16x8x4d/;
1675
1676  add_proto qw/void vp9_high_sad8x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1677  specialize qw/vp9_high_sad8x16x4d/;
1678
1679  add_proto qw/void vp9_high_sad8x8x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1680  specialize qw/vp9_high_sad8x8x4d/;
1681
1682  # TODO(jingning): need to convert these 4x8/8x4 functions into sse2 form
1683  add_proto qw/void vp9_high_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1684  specialize qw/vp9_high_sad8x4x4d/;
1685
1686  add_proto qw/void vp9_high_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1687  specialize qw/vp9_high_sad4x8x4d/;
1688
1689  add_proto qw/void vp9_high_sad4x4x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1690  specialize qw/vp9_high_sad4x4x4d/;
1691
1692  add_proto qw/unsigned int vp9_high_mse16x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1693  specialize qw/vp9_high_mse16x16/;
1694
1695  add_proto qw/unsigned int vp9_high_mse8x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1696  specialize qw/vp9_high_mse8x16/;
1697
1698  add_proto qw/unsigned int vp9_high_mse16x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1699  specialize qw/vp9_high_mse16x8/;
1700
1701  add_proto qw/unsigned int vp9_high_mse8x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1702  specialize qw/vp9_high_mse8x8/;
1703
1704  add_proto qw/unsigned int vp9_high_10_mse16x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1705  specialize qw/vp9_high_10_mse16x16/;
1706
1707  add_proto qw/unsigned int vp9_high_10_mse8x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1708  specialize qw/vp9_high_10_mse8x16/;
1709
1710  add_proto qw/unsigned int vp9_high_10_mse16x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1711  specialize qw/vp9_high_10_mse16x8/;
1712
1713  add_proto qw/unsigned int vp9_high_10_mse8x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1714  specialize qw/vp9_high_10_mse8x8/;
1715
1716  add_proto qw/unsigned int vp9_high_12_mse16x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1717  specialize qw/vp9_high_12_mse16x16/;
1718
1719  add_proto qw/unsigned int vp9_high_12_mse8x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1720  specialize qw/vp9_high_12_mse8x16/;
1721
1722  add_proto qw/unsigned int vp9_high_12_mse16x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1723  specialize qw/vp9_high_12_mse16x8/;
1724
1725  add_proto qw/unsigned int vp9_high_12_mse8x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1726  specialize qw/vp9_high_12_mse8x8/;
1727
1728  # ENCODEMB INVOKE
1729
1730  add_proto qw/int64_t vp9_high_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd";
1731  specialize qw/vp9_high_block_error/;
1732
1733  add_proto qw/void vp9_high_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";
1734  specialize qw/vp9_high_subtract_block/;
1735
1736  add_proto qw/void vp9_high_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";
1737  specialize qw/vp9_high_quantize_fp/;
1738
1739  add_proto qw/void vp9_high_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";
1740  specialize qw/vp9_high_quantize_fp_32x32/;
1741
1742  add_proto qw/void vp9_high_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";
1743  specialize qw/vp9_high_quantize_b/;
1744
1745  add_proto qw/void vp9_high_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";
1746  specialize qw/vp9_high_quantize_b_32x32/;
1747
1748  #
1749  # Structured Similarity (SSIM)
1750  #
1751  if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
1752    add_proto qw/void vp9_high_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";
1753    specialize qw/vp9_high_ssim_parms_8x8/;
1754
1755    add_proto qw/void vp9_high_ssim_parms_8x8_shift/, "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, unsigned int bd, unsigned int shift";
1756    specialize qw/vp9_high_ssim_parms_8x8_shift/;
1757  }
1758
1759  # fdct functions
1760  add_proto qw/void vp9_high_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1761  specialize qw/vp9_high_fht4x4/;
1762
1763  add_proto qw/void vp9_high_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1764  specialize qw/vp9_high_fht8x8/;
1765
1766  add_proto qw/void vp9_high_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1767  specialize qw/vp9_high_fht16x16/;
1768
1769  add_proto qw/void vp9_high_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1770  specialize qw/vp9_high_fwht4x4/;
1771
1772  add_proto qw/void vp9_high_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1773  specialize qw/vp9_high_fdct4x4/;
1774
1775  add_proto qw/void vp9_high_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1776  specialize qw/vp9_high_fdct8x8_1/;
1777
1778  add_proto qw/void vp9_high_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1779  specialize qw/vp9_high_fdct8x8/;
1780
1781  add_proto qw/void vp9_high_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1782  specialize qw/vp9_high_fdct16x16_1/;
1783
1784  add_proto qw/void vp9_high_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1785  specialize qw/vp9_high_fdct16x16/;
1786
1787  add_proto qw/void vp9_high_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1788  specialize qw/vp9_high_fdct32x32_1/;
1789
1790  add_proto qw/void vp9_high_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1791  specialize qw/vp9_high_fdct32x32/;
1792
1793  add_proto qw/void vp9_high_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1794  specialize qw/vp9_high_fdct32x32_rd/;
1795
1796  add_proto qw/void vp9_high_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";
1797  specialize qw/vp9_high_temporal_filter_apply/;
1798
1799}
1800# End vp9_high encoder functions
1801
1802}
1803# end encoder functions
18041;
1805