Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / libvpx / source / libvpx / vp9 / common / vp9_rtcd_defs.pl
1 sub vp9_common_forward_decls() {
2 print <<EOF
3 /*
4  * VP9
5  */
6
7 #include "vpx/vpx_integer.h"
8 #include "vp9/common/vp9_common.h"
9 #include "vp9/common/vp9_enums.h"
10
11 struct macroblockd;
12
13 /* Encoder forward decls */
14 struct macroblock;
15 struct vp9_variance_vtable;
16 struct search_site_config;
17 struct mv;
18 union int_mv;
19 struct yv12_buffer_config;
20 EOF
21 }
22 forward_decls qw/vp9_common_forward_decls/;
23
24 # x86inc.asm doesn't work if pic is enabled on 32 bit platforms so no assembly.
25 if (vpx_config("CONFIG_USE_X86INC") eq "yes") {
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.
38 if ($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
50 if ((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 #
59 add_proto qw/void vp9_d207_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
60 specialize qw/vp9_d207_predictor_4x4/, "$ssse3_x86inc";
61
62 add_proto qw/void vp9_d45_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
63 specialize qw/vp9_d45_predictor_4x4/, "$ssse3_x86inc";
64
65 add_proto qw/void vp9_d63_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
66 specialize qw/vp9_d63_predictor_4x4/, "$ssse3_x86inc";
67
68 add_proto qw/void vp9_h_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
69 specialize qw/vp9_h_predictor_4x4 neon_asm dspr2/, "$ssse3_x86inc";
70 $vp9_h_predictor_4x4_neon_asm=vp9_h_predictor_4x4_neon;
71
72 add_proto qw/void vp9_d117_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
73 specialize qw/vp9_d117_predictor_4x4/;
74
75 add_proto qw/void vp9_d135_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
76 specialize qw/vp9_d135_predictor_4x4/;
77
78 add_proto qw/void vp9_d153_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
79 specialize qw/vp9_d153_predictor_4x4/, "$ssse3_x86inc";
80
81 add_proto qw/void vp9_v_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
82 specialize qw/vp9_v_predictor_4x4 neon_asm/, "$sse_x86inc";
83 $vp9_v_predictor_4x4_neon_asm=vp9_v_predictor_4x4_neon;
84
85 add_proto qw/void vp9_tm_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
86 specialize qw/vp9_tm_predictor_4x4 neon_asm dspr2/, "$sse_x86inc";
87 $vp9_tm_predictor_4x4_neon_asm=vp9_tm_predictor_4x4_neon;
88
89 add_proto qw/void vp9_dc_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
90 specialize qw/vp9_dc_predictor_4x4 dspr2/, "$sse_x86inc";
91
92 add_proto qw/void vp9_dc_top_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
93 specialize qw/vp9_dc_top_predictor_4x4/;
94
95 add_proto qw/void vp9_dc_left_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
96 specialize qw/vp9_dc_left_predictor_4x4/;
97
98 add_proto qw/void vp9_dc_128_predictor_4x4/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
99 specialize qw/vp9_dc_128_predictor_4x4/;
100
101 add_proto qw/void vp9_d207_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
102 specialize qw/vp9_d207_predictor_8x8/, "$ssse3_x86inc";
103
104 add_proto qw/void vp9_d45_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
105 specialize qw/vp9_d45_predictor_8x8/, "$ssse3_x86inc";
106
107 add_proto qw/void vp9_d63_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
108 specialize qw/vp9_d63_predictor_8x8/, "$ssse3_x86inc";
109
110 add_proto qw/void vp9_h_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
111 specialize qw/vp9_h_predictor_8x8 neon_asm dspr2/, "$ssse3_x86inc";
112 $vp9_h_predictor_8x8_neon_asm=vp9_h_predictor_8x8_neon;
113
114 add_proto qw/void vp9_d117_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
115 specialize qw/vp9_d117_predictor_8x8/;
116
117 add_proto qw/void vp9_d135_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
118 specialize qw/vp9_d135_predictor_8x8/;
119
120 add_proto qw/void vp9_d153_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
121 specialize qw/vp9_d153_predictor_8x8/, "$ssse3_x86inc";
122
123 add_proto qw/void vp9_v_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
124 specialize qw/vp9_v_predictor_8x8 neon_asm/, "$sse_x86inc";
125 $vp9_v_predictor_8x8_neon_asm=vp9_v_predictor_8x8_neon;
126
127 add_proto qw/void vp9_tm_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
128 specialize qw/vp9_tm_predictor_8x8 neon_asm dspr2/, "$sse2_x86inc";
129 $vp9_tm_predictor_8x8_neon_asm=vp9_tm_predictor_8x8_neon;
130
131 add_proto qw/void vp9_dc_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
132 specialize qw/vp9_dc_predictor_8x8 dspr2/, "$sse_x86inc";
133
134 add_proto qw/void vp9_dc_top_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
135 specialize qw/vp9_dc_top_predictor_8x8/;
136
137 add_proto qw/void vp9_dc_left_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
138 specialize qw/vp9_dc_left_predictor_8x8/;
139
140 add_proto qw/void vp9_dc_128_predictor_8x8/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
141 specialize qw/vp9_dc_128_predictor_8x8/;
142
143 add_proto qw/void vp9_d207_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
144 specialize qw/vp9_d207_predictor_16x16/, "$ssse3_x86inc";
145
146 add_proto qw/void vp9_d45_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
147 specialize qw/vp9_d45_predictor_16x16/, "$ssse3_x86inc";
148
149 add_proto qw/void vp9_d63_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
150 specialize qw/vp9_d63_predictor_16x16/, "$ssse3_x86inc";
151
152 add_proto qw/void vp9_h_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
153 specialize qw/vp9_h_predictor_16x16 neon_asm dspr2/, "$ssse3_x86inc";
154 $vp9_h_predictor_16x16_neon_asm=vp9_h_predictor_16x16_neon;
155
156 add_proto qw/void vp9_d117_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
157 specialize qw/vp9_d117_predictor_16x16/;
158
159 add_proto qw/void vp9_d135_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
160 specialize qw/vp9_d135_predictor_16x16/;
161
162 add_proto qw/void vp9_d153_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
163 specialize qw/vp9_d153_predictor_16x16/, "$ssse3_x86inc";
164
165 add_proto qw/void vp9_v_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
166 specialize qw/vp9_v_predictor_16x16 neon_asm/, "$sse2_x86inc";
167 $vp9_v_predictor_16x16_neon_asm=vp9_v_predictor_16x16_neon;
168
169 add_proto qw/void vp9_tm_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
170 specialize qw/vp9_tm_predictor_16x16 neon_asm/, "$sse2_x86inc";
171 $vp9_tm_predictor_16x16_neon_asm=vp9_tm_predictor_16x16_neon;
172
173 add_proto qw/void vp9_dc_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
174 specialize qw/vp9_dc_predictor_16x16 dspr2/, "$sse2_x86inc";
175
176 add_proto qw/void vp9_dc_top_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
177 specialize qw/vp9_dc_top_predictor_16x16/;
178
179 add_proto qw/void vp9_dc_left_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
180 specialize qw/vp9_dc_left_predictor_16x16/;
181
182 add_proto qw/void vp9_dc_128_predictor_16x16/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
183 specialize qw/vp9_dc_128_predictor_16x16/;
184
185 add_proto qw/void vp9_d207_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
186 specialize qw/vp9_d207_predictor_32x32/, "$ssse3_x86inc";
187
188 add_proto qw/void vp9_d45_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
189 specialize qw/vp9_d45_predictor_32x32/, "$ssse3_x86inc";
190
191 add_proto qw/void vp9_d63_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
192 specialize qw/vp9_d63_predictor_32x32/, "$ssse3_x86inc";
193
194 add_proto qw/void vp9_h_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
195 specialize qw/vp9_h_predictor_32x32 neon_asm/, "$ssse3_x86inc";
196 $vp9_h_predictor_32x32_neon_asm=vp9_h_predictor_32x32_neon;
197
198 add_proto qw/void vp9_d117_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
199 specialize qw/vp9_d117_predictor_32x32/;
200
201 add_proto qw/void vp9_d135_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
202 specialize qw/vp9_d135_predictor_32x32/;
203
204 add_proto qw/void vp9_d153_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
205 specialize qw/vp9_d153_predictor_32x32/;
206
207 add_proto qw/void vp9_v_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
208 specialize qw/vp9_v_predictor_32x32 neon_asm/, "$sse2_x86inc";
209 $vp9_v_predictor_32x32_neon_asm=vp9_v_predictor_32x32_neon;
210
211 add_proto qw/void vp9_tm_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
212 specialize qw/vp9_tm_predictor_32x32 neon_asm/, "$sse2_x86_64";
213 $vp9_tm_predictor_32x32_neon_asm=vp9_tm_predictor_32x32_neon;
214
215 add_proto qw/void vp9_dc_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
216 specialize qw/vp9_dc_predictor_32x32/, "$sse2_x86inc";
217
218 add_proto qw/void vp9_dc_top_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
219 specialize qw/vp9_dc_top_predictor_32x32/;
220
221 add_proto qw/void vp9_dc_left_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
222 specialize qw/vp9_dc_left_predictor_32x32/;
223
224 add_proto qw/void vp9_dc_128_predictor_32x32/, "uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left";
225 specialize qw/vp9_dc_128_predictor_32x32/;
226
227 #
228 # Loopfilter
229 #
230 add_proto qw/void vp9_lpf_vertical_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
231 specialize qw/vp9_lpf_vertical_16 sse2 neon_asm dspr2/;
232 $vp9_lpf_vertical_16_neon_asm=vp9_lpf_vertical_16_neon;
233
234 add_proto qw/void vp9_lpf_vertical_16_dual/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
235 specialize qw/vp9_lpf_vertical_16_dual sse2 neon_asm dspr2/;
236 $vp9_lpf_vertical_16_dual_neon_asm=vp9_lpf_vertical_16_dual_neon;
237
238 add_proto qw/void vp9_lpf_vertical_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
239 specialize qw/vp9_lpf_vertical_8 sse2 neon_asm dspr2/;
240 $vp9_lpf_vertical_8_neon_asm=vp9_lpf_vertical_8_neon;
241
242 add_proto qw/void vp9_lpf_vertical_8_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
243 specialize qw/vp9_lpf_vertical_8_dual sse2 neon_asm dspr2/;
244 $vp9_lpf_vertical_8_dual_neon_asm=vp9_lpf_vertical_8_dual_neon;
245
246 add_proto qw/void vp9_lpf_vertical_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
247 specialize qw/vp9_lpf_vertical_4 mmx neon_asm dspr2/;
248 $vp9_lpf_vertical_4_neon_asm=vp9_lpf_vertical_4_neon;
249
250 add_proto qw/void vp9_lpf_vertical_4_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
251 specialize qw/vp9_lpf_vertical_4_dual sse2 neon_asm dspr2/;
252 $vp9_lpf_vertical_4_dual_neon_asm=vp9_lpf_vertical_4_dual_neon;
253
254 add_proto qw/void vp9_lpf_horizontal_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
255 specialize qw/vp9_lpf_horizontal_16 sse2 avx2 neon_asm dspr2/;
256 $vp9_lpf_horizontal_16_neon_asm=vp9_lpf_horizontal_16_neon;
257
258 add_proto qw/void vp9_lpf_horizontal_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
259 specialize qw/vp9_lpf_horizontal_8 sse2 neon_asm dspr2/;
260 $vp9_lpf_horizontal_8_neon_asm=vp9_lpf_horizontal_8_neon;
261
262 add_proto qw/void vp9_lpf_horizontal_8_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
263 specialize qw/vp9_lpf_horizontal_8_dual sse2 neon_asm dspr2/;
264 $vp9_lpf_horizontal_8_dual_neon_asm=vp9_lpf_horizontal_8_dual_neon;
265
266 add_proto qw/void vp9_lpf_horizontal_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count";
267 specialize qw/vp9_lpf_horizontal_4 mmx neon_asm dspr2/;
268 $vp9_lpf_horizontal_4_neon_asm=vp9_lpf_horizontal_4_neon;
269
270 add_proto qw/void vp9_lpf_horizontal_4_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1";
271 specialize qw/vp9_lpf_horizontal_4_dual sse2 neon_asm dspr2/;
272 $vp9_lpf_horizontal_4_dual_neon_asm=vp9_lpf_horizontal_4_dual_neon;
273
274 #
275 # post proc
276 #
277 if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") {
278 add_proto qw/void vp9_mbpost_proc_down/, "uint8_t *dst, int pitch, int rows, int cols, int flimit";
279 specialize qw/vp9_mbpost_proc_down sse2/;
280 $vp9_mbpost_proc_down_sse2=vp9_mbpost_proc_down_xmm;
281
282 add_proto qw/void vp9_mbpost_proc_across_ip/, "uint8_t *src, int pitch, int rows, int cols, int flimit";
283 specialize qw/vp9_mbpost_proc_across_ip sse2/;
284 $vp9_mbpost_proc_across_ip_sse2=vp9_mbpost_proc_across_ip_xmm;
285
286 add_proto qw/void vp9_post_proc_down_and_across/, "const uint8_t *src_ptr, uint8_t *dst_ptr, int src_pixels_per_line, int dst_pixels_per_line, int rows, int cols, int flimit";
287 specialize qw/vp9_post_proc_down_and_across sse2/;
288 $vp9_post_proc_down_and_across_sse2=vp9_post_proc_down_and_across_xmm;
289
290 add_proto qw/void vp9_plane_add_noise/, "uint8_t *Start, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int Width, unsigned int Height, int Pitch";
291 specialize qw/vp9_plane_add_noise sse2/;
292 $vp9_plane_add_noise_sse2=vp9_plane_add_noise_wmt;
293 }
294
295 #
296 # Sub Pixel Filters
297 #
298 add_proto qw/void vp9_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
299 specialize qw/vp9_convolve_copy neon_asm dspr2/, "$sse2_x86inc";
300 $vp9_convolve_copy_neon_asm=vp9_convolve_copy_neon;
301
302 add_proto qw/void vp9_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
303 specialize qw/vp9_convolve_avg neon_asm dspr2/, "$sse2_x86inc";
304 $vp9_convolve_avg_neon_asm=vp9_convolve_avg_neon;
305
306 add_proto qw/void vp9_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
307 specialize qw/vp9_convolve8 sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
308 $vp9_convolve8_neon_asm=vp9_convolve8_neon;
309
310 add_proto qw/void vp9_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
311 specialize qw/vp9_convolve8_horiz sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
312 $vp9_convolve8_horiz_neon_asm=vp9_convolve8_horiz_neon;
313
314 add_proto qw/void vp9_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
315 specialize qw/vp9_convolve8_vert sse2 ssse3 neon_asm dspr2/, "$avx2_ssse3";
316 $vp9_convolve8_vert_neon_asm=vp9_convolve8_vert_neon;
317
318 add_proto qw/void vp9_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
319 specialize qw/vp9_convolve8_avg sse2 ssse3 neon_asm dspr2/;
320 $vp9_convolve8_avg_neon_asm=vp9_convolve8_avg_neon;
321
322 add_proto qw/void vp9_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
323 specialize qw/vp9_convolve8_avg_horiz sse2 ssse3 neon_asm dspr2/;
324 $vp9_convolve8_avg_horiz_neon_asm=vp9_convolve8_avg_horiz_neon;
325
326 add_proto qw/void vp9_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h";
327 specialize qw/vp9_convolve8_avg_vert sse2 ssse3 neon_asm dspr2/;
328 $vp9_convolve8_avg_vert_neon_asm=vp9_convolve8_avg_vert_neon;
329
330 #
331 # dct
332 #
333 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
334   # Note as optimized versions of these functions are added we need to add a check to ensure
335   # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only.
336   add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
337   specialize qw/vp9_idct4x4_1_add/;
338
339   add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
340   specialize qw/vp9_idct4x4_16_add/;
341
342   add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
343   specialize qw/vp9_idct8x8_1_add/;
344
345   add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
346   specialize qw/vp9_idct8x8_64_add/;
347
348   add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
349   specialize qw/vp9_idct8x8_12_add/;
350
351   add_proto qw/void vp9_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
352   specialize qw/vp9_idct16x16_1_add/;
353
354   add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
355   specialize qw/vp9_idct16x16_256_add/;
356
357   add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
358   specialize qw/vp9_idct16x16_10_add/;
359
360   add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
361   specialize qw/vp9_idct32x32_1024_add/;
362
363   add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
364   specialize qw/vp9_idct32x32_34_add/;
365
366   add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
367   specialize qw/vp9_idct32x32_1_add/;
368
369   add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
370   specialize qw/vp9_iht4x4_16_add/;
371
372   add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
373   specialize qw/vp9_iht8x8_64_add/;
374
375   add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
376   specialize qw/vp9_iht16x16_256_add/;
377
378   # dct and add
379
380   add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
381   specialize qw/vp9_iwht4x4_1_add/;
382
383   add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
384   specialize qw/vp9_iwht4x4_16_add/;
385
386 } else {
387   # Force C versions if CONFIG_EMULATE_HARDWARE is 1
388   if (vpx_config("CONFIG_EMULATE_HARDWARE") eq "yes") {
389     add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
390     specialize qw/vp9_idct4x4_1_add/;
391
392     add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
393     specialize qw/vp9_idct4x4_16_add/;
394
395     add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
396     specialize qw/vp9_idct8x8_1_add/;
397
398     add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
399     specialize qw/vp9_idct8x8_64_add/;
400
401     add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
402     specialize qw/vp9_idct8x8_12_add/;
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/;
406
407     add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
408     specialize qw/vp9_idct16x16_256_add/;
409
410     add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
411     specialize qw/vp9_idct16x16_10_add/;
412
413     add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
414     specialize qw/vp9_idct32x32_1024_add/;
415
416     add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
417     specialize qw/vp9_idct32x32_34_add/;
418
419     add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
420     specialize qw/vp9_idct32x32_1_add/;
421
422     add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
423     specialize qw/vp9_iht4x4_16_add/;
424
425     add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
426     specialize qw/vp9_iht8x8_64_add/;
427
428     add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
429     specialize qw/vp9_iht16x16_256_add/;
430
431     # dct and add
432
433     add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
434     specialize qw/vp9_iwht4x4_1_add/;
435
436     add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
437     specialize qw/vp9_iwht4x4_16_add/;
438   } else {
439     add_proto qw/void vp9_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
440     specialize qw/vp9_idct4x4_1_add sse2 neon_asm dspr2/;
441     $vp9_idct4x4_1_add_neon_asm=vp9_idct4x4_1_add_neon;
442
443     add_proto qw/void vp9_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
444     specialize qw/vp9_idct4x4_16_add sse2 neon_asm dspr2/;
445     $vp9_idct4x4_16_add_neon_asm=vp9_idct4x4_16_add_neon;
446
447     add_proto qw/void vp9_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
448     specialize qw/vp9_idct8x8_1_add sse2 neon_asm dspr2/;
449     $vp9_idct8x8_1_add_neon_asm=vp9_idct8x8_1_add_neon;
450
451     add_proto qw/void vp9_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
452     specialize qw/vp9_idct8x8_64_add sse2 neon_asm dspr2/, "$ssse3_x86_64";
453     $vp9_idct8x8_64_add_neon_asm=vp9_idct8x8_64_add_neon;
454
455     add_proto qw/void vp9_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
456     specialize qw/vp9_idct8x8_12_add sse2 neon_asm dspr2/, "$ssse3_x86_64";
457     $vp9_idct8x8_12_add_neon_asm=vp9_idct8x8_12_add_neon;
458
459     add_proto qw/void vp9_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
460     specialize qw/vp9_idct16x16_1_add sse2 neon_asm dspr2/;
461     $vp9_idct16x16_1_add_neon_asm=vp9_idct16x16_1_add_neon;
462
463     add_proto qw/void vp9_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
464     specialize qw/vp9_idct16x16_256_add sse2 ssse3 neon_asm dspr2/;
465     $vp9_idct16x16_256_add_neon_asm=vp9_idct16x16_256_add_neon;
466
467     add_proto qw/void vp9_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
468     specialize qw/vp9_idct16x16_10_add sse2 ssse3 neon_asm dspr2/;
469     $vp9_idct16x16_10_add_neon_asm=vp9_idct16x16_10_add_neon;
470
471     add_proto qw/void vp9_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
472     specialize qw/vp9_idct32x32_1024_add sse2 neon_asm dspr2/;
473     $vp9_idct32x32_1024_add_neon_asm=vp9_idct32x32_1024_add_neon;
474
475     add_proto qw/void vp9_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
476     specialize qw/vp9_idct32x32_34_add sse2 neon_asm dspr2/;
477     $vp9_idct32x32_34_add_neon_asm=vp9_idct32x32_1024_add_neon;
478
479     add_proto qw/void vp9_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
480     specialize qw/vp9_idct32x32_1_add sse2 neon_asm dspr2/;
481     $vp9_idct32x32_1_add_neon_asm=vp9_idct32x32_1_add_neon;
482
483     add_proto qw/void vp9_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
484     specialize qw/vp9_iht4x4_16_add sse2 neon_asm dspr2/;
485     $vp9_iht4x4_16_add_neon_asm=vp9_iht4x4_16_add_neon;
486
487     add_proto qw/void vp9_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type";
488     specialize qw/vp9_iht8x8_64_add sse2 neon_asm dspr2/;
489     $vp9_iht8x8_64_add_neon_asm=vp9_iht8x8_64_add_neon;
490
491     add_proto qw/void vp9_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type";
492     specialize qw/vp9_iht16x16_256_add sse2 dspr2/;
493
494     # dct and add
495
496     add_proto qw/void vp9_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
497     specialize qw/vp9_iwht4x4_1_add/;
498
499     add_proto qw/void vp9_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride";
500     specialize qw/vp9_iwht4x4_16_add/;
501   }
502 }
503
504 # High bitdepth functions
505 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
506   #
507   # Intra prediction
508   #
509   add_proto qw/void vp9_highbd_d207_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
510   specialize qw/vp9_highbd_d207_predictor_4x4/;
511
512   add_proto qw/void vp9_highbd_d45_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
513   specialize qw/vp9_highbd_d45_predictor_4x4/;
514
515   add_proto qw/void vp9_highbd_d63_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
516   specialize qw/vp9_highbd_d63_predictor_4x4/;
517
518   add_proto qw/void vp9_highbd_h_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
519   specialize qw/vp9_highbd_h_predictor_4x4/;
520
521   add_proto qw/void vp9_highbd_d117_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
522   specialize qw/vp9_highbd_d117_predictor_4x4/;
523
524   add_proto qw/void vp9_highbd_d135_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
525   specialize qw/vp9_highbd_d135_predictor_4x4/;
526
527   add_proto qw/void vp9_highbd_d153_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
528   specialize qw/vp9_highbd_d153_predictor_4x4/;
529
530   add_proto qw/void vp9_highbd_v_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
531   specialize qw/vp9_highbd_v_predictor_4x4 neon/, "$sse_x86inc";
532
533   add_proto qw/void vp9_highbd_tm_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
534   specialize qw/vp9_highbd_tm_predictor_4x4/, "$sse_x86inc";
535
536   add_proto qw/void vp9_highbd_dc_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
537   specialize qw/vp9_highbd_dc_predictor_4x4/, "$sse_x86inc";
538
539   add_proto qw/void vp9_highbd_dc_top_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
540   specialize qw/vp9_highbd_dc_top_predictor_4x4/;
541
542   add_proto qw/void vp9_highbd_dc_left_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
543   specialize qw/vp9_highbd_dc_left_predictor_4x4/;
544
545   add_proto qw/void vp9_highbd_dc_128_predictor_4x4/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
546   specialize qw/vp9_highbd_dc_128_predictor_4x4/;
547
548   add_proto qw/void vp9_highbd_d207_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
549   specialize qw/vp9_highbd_d207_predictor_8x8/;
550
551   add_proto qw/void vp9_highbd_d45_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
552   specialize qw/vp9_highbd_d45_predictor_8x8/;
553
554   add_proto qw/void vp9_highbd_d63_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
555   specialize qw/vp9_highbd_d63_predictor_8x8/;
556
557   add_proto qw/void vp9_highbd_h_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
558   specialize qw/vp9_highbd_h_predictor_8x8/;
559
560   add_proto qw/void vp9_highbd_d117_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
561   specialize qw/vp9_highbd_d117_predictor_8x8/;
562
563   add_proto qw/void vp9_highbd_d135_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
564   specialize qw/vp9_highbd_d135_predictor_8x8/;
565
566   add_proto qw/void vp9_highbd_d153_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
567   specialize qw/vp9_highbd_d153_predictor_8x8/;
568
569   add_proto qw/void vp9_highbd_v_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
570   specialize qw/vp9_highbd_v_predictor_8x8/, "$sse2_x86inc";
571
572   add_proto qw/void vp9_highbd_tm_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
573   specialize qw/vp9_highbd_tm_predictor_8x8/, "$sse2_x86inc";
574
575   add_proto qw/void vp9_highbd_dc_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
576   specialize qw/vp9_highbd_dc_predictor_8x8/, "$sse2_x86inc";;
577
578   add_proto qw/void vp9_highbd_dc_top_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
579   specialize qw/vp9_highbd_dc_top_predictor_8x8/;
580
581   add_proto qw/void vp9_highbd_dc_left_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
582   specialize qw/vp9_highbd_dc_left_predictor_8x8/;
583
584   add_proto qw/void vp9_highbd_dc_128_predictor_8x8/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
585   specialize qw/vp9_highbd_dc_128_predictor_8x8/;
586
587   add_proto qw/void vp9_highbd_d207_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
588   specialize qw/vp9_highbd_d207_predictor_16x16/;
589
590   add_proto qw/void vp9_highbd_d45_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
591   specialize qw/vp9_highbd_d45_predictor_16x16/;
592
593   add_proto qw/void vp9_highbd_d63_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
594   specialize qw/vp9_highbd_d63_predictor_16x16/;
595
596   add_proto qw/void vp9_highbd_h_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
597   specialize qw/vp9_highbd_h_predictor_16x16/;
598
599   add_proto qw/void vp9_highbd_d117_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
600   specialize qw/vp9_highbd_d117_predictor_16x16/;
601
602   add_proto qw/void vp9_highbd_d135_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
603   specialize qw/vp9_highbd_d135_predictor_16x16/;
604
605   add_proto qw/void vp9_highbd_d153_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
606   specialize qw/vp9_highbd_d153_predictor_16x16/;
607
608   add_proto qw/void vp9_highbd_v_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
609   specialize qw/vp9_highbd_v_predictor_16x16 neon/, "$sse2_x86inc";
610
611   add_proto qw/void vp9_highbd_tm_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
612   specialize qw/vp9_highbd_tm_predictor_16x16/, "$sse2_x86_64";
613
614   add_proto qw/void vp9_highbd_dc_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
615   specialize qw/vp9_highbd_dc_predictor_16x16/, "$sse2_x86inc";
616
617   add_proto qw/void vp9_highbd_dc_top_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
618   specialize qw/vp9_highbd_dc_top_predictor_16x16/;
619
620   add_proto qw/void vp9_highbd_dc_left_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
621   specialize qw/vp9_highbd_dc_left_predictor_16x16/;
622
623   add_proto qw/void vp9_highbd_dc_128_predictor_16x16/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
624   specialize qw/vp9_highbd_dc_128_predictor_16x16/;
625
626   add_proto qw/void vp9_highbd_d207_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
627   specialize qw/vp9_highbd_d207_predictor_32x32/;
628
629   add_proto qw/void vp9_highbd_d45_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
630   specialize qw/vp9_highbd_d45_predictor_32x32/;
631
632   add_proto qw/void vp9_highbd_d63_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
633   specialize qw/vp9_highbd_d63_predictor_32x32/;
634
635   add_proto qw/void vp9_highbd_h_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
636   specialize qw/vp9_highbd_h_predictor_32x32/;
637
638   add_proto qw/void vp9_highbd_d117_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
639   specialize qw/vp9_highbd_d117_predictor_32x32/;
640
641   add_proto qw/void vp9_highbd_d135_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
642   specialize qw/vp9_highbd_d135_predictor_32x32/;
643
644   add_proto qw/void vp9_highbd_d153_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
645   specialize qw/vp9_highbd_d153_predictor_32x32/;
646
647   add_proto qw/void vp9_highbd_v_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
648   specialize qw/vp9_highbd_v_predictor_32x32/, "$sse2_x86inc";
649
650   add_proto qw/void vp9_highbd_tm_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
651   specialize qw/vp9_highbd_tm_predictor_32x32/, "$sse2_x86_64";
652
653   add_proto qw/void vp9_highbd_dc_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
654   specialize qw/vp9_highbd_dc_predictor_32x32/, "$sse2_x86_64";
655
656   add_proto qw/void vp9_highbd_dc_top_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
657   specialize qw/vp9_highbd_dc_top_predictor_32x32/;
658
659   add_proto qw/void vp9_highbd_dc_left_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
660   specialize qw/vp9_highbd_dc_left_predictor_32x32/;
661
662   add_proto qw/void vp9_highbd_dc_128_predictor_32x32/, "uint16_t *dst, ptrdiff_t y_stride, const uint16_t *above, const uint16_t *left, int bd";
663   specialize qw/vp9_highbd_dc_128_predictor_32x32/;
664
665   #
666   # Sub Pixel Filters
667   #
668   add_proto qw/void vp9_highbd_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
669   specialize qw/vp9_highbd_convolve_copy/;
670
671   add_proto qw/void vp9_highbd_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
672   specialize qw/vp9_highbd_convolve_avg/;
673
674   add_proto qw/void vp9_highbd_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
675   specialize qw/vp9_highbd_convolve8/, "$sse2_x86_64";
676
677   add_proto qw/void vp9_highbd_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
678   specialize qw/vp9_highbd_convolve8_horiz/, "$sse2_x86_64";
679
680   add_proto qw/void vp9_highbd_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
681   specialize qw/vp9_highbd_convolve8_vert/, "$sse2_x86_64";
682
683   add_proto qw/void vp9_highbd_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
684   specialize qw/vp9_highbd_convolve8_avg/, "$sse2_x86_64";
685
686   add_proto qw/void vp9_highbd_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
687   specialize qw/vp9_highbd_convolve8_avg_horiz/, "$sse2_x86_64";
688
689   add_proto qw/void vp9_highbd_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, int bps";
690   specialize qw/vp9_highbd_convolve8_avg_vert/, "$sse2_x86_64";
691
692   #
693   # Loopfilter
694   #
695   add_proto qw/void vp9_highbd_lpf_vertical_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
696   specialize qw/vp9_highbd_lpf_vertical_16 sse2/;
697
698   add_proto qw/void vp9_highbd_lpf_vertical_16_dual/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
699   specialize qw/vp9_highbd_lpf_vertical_16_dual sse2/;
700
701   add_proto qw/void vp9_highbd_lpf_vertical_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
702   specialize qw/vp9_highbd_lpf_vertical_8 sse2/;
703
704   add_proto qw/void vp9_highbd_lpf_vertical_8_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
705   specialize qw/vp9_highbd_lpf_vertical_8_dual sse2/;
706
707   add_proto qw/void vp9_highbd_lpf_vertical_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
708   specialize qw/vp9_highbd_lpf_vertical_4 sse2/;
709
710   add_proto qw/void vp9_highbd_lpf_vertical_4_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
711   specialize qw/vp9_highbd_lpf_vertical_4_dual sse2/;
712
713   add_proto qw/void vp9_highbd_lpf_horizontal_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
714   specialize qw/vp9_highbd_lpf_horizontal_16 sse2/;
715
716   add_proto qw/void vp9_highbd_lpf_horizontal_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
717   specialize qw/vp9_highbd_lpf_horizontal_8 sse2/;
718
719   add_proto qw/void vp9_highbd_lpf_horizontal_8_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
720   specialize qw/vp9_highbd_lpf_horizontal_8_dual sse2/;
721
722   add_proto qw/void vp9_highbd_lpf_horizontal_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count, int bd";
723   specialize qw/vp9_highbd_lpf_horizontal_4 sse2/;
724
725   add_proto qw/void vp9_highbd_lpf_horizontal_4_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd";
726   specialize qw/vp9_highbd_lpf_horizontal_4_dual sse2/;
727
728   #
729   # post proc
730   #
731   if (vpx_config("CONFIG_VP9_POSTPROC") eq "yes") {
732     add_proto qw/void vp9_highbd_mbpost_proc_down/, "uint16_t *dst, int pitch, int rows, int cols, int flimit";
733     specialize qw/vp9_highbd_mbpost_proc_down/;
734
735     add_proto qw/void vp9_highbd_mbpost_proc_across_ip/, "uint16_t *src, int pitch, int rows, int cols, int flimit";
736     specialize qw/vp9_highbd_mbpost_proc_across_ip/;
737
738     add_proto qw/void vp9_highbd_post_proc_down_and_across/, "const uint16_t *src_ptr, uint16_t *dst_ptr, int src_pixels_per_line, int dst_pixels_per_line, int rows, int cols, int flimit";
739     specialize qw/vp9_highbd_post_proc_down_and_across/;
740
741     add_proto qw/void vp9_highbd_plane_add_noise/, "uint8_t *Start, char *noise, char blackclamp[16], char whiteclamp[16], char bothclamp[16], unsigned int Width, unsigned int Height, int Pitch";
742     specialize qw/vp9_highbd_plane_add_noise/;
743   }
744
745   #
746   # dct
747   #
748   # Note as optimized versions of these functions are added we need to add a check to ensure
749   # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only.
750   add_proto qw/void vp9_highbd_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
751   specialize qw/vp9_highbd_idct4x4_1_add/;
752
753   add_proto qw/void vp9_highbd_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
754   specialize qw/vp9_highbd_idct4x4_16_add/;
755
756   add_proto qw/void vp9_highbd_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
757   specialize qw/vp9_highbd_idct8x8_1_add/;
758
759   add_proto qw/void vp9_highbd_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
760   specialize qw/vp9_highbd_idct8x8_64_add/;
761
762   add_proto qw/void vp9_highbd_idct8x8_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
763   specialize qw/vp9_highbd_idct8x8_10_add/;
764
765   add_proto qw/void vp9_highbd_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
766   specialize qw/vp9_highbd_idct16x16_1_add/;
767
768   add_proto qw/void vp9_highbd_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
769   specialize qw/vp9_highbd_idct16x16_256_add/;
770
771   add_proto qw/void vp9_highbd_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
772   specialize qw/vp9_highbd_idct16x16_10_add/;
773
774   add_proto qw/void vp9_highbd_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
775   specialize qw/vp9_highbd_idct32x32_1024_add/;
776
777   add_proto qw/void vp9_highbd_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
778   specialize qw/vp9_highbd_idct32x32_34_add/;
779
780   add_proto qw/void vp9_highbd_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
781   specialize qw/vp9_highbd_idct32x32_1_add/;
782
783   add_proto qw/void vp9_highbd_iht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd";
784   specialize qw/vp9_highbd_iht4x4_16_add/;
785
786   add_proto qw/void vp9_highbd_iht8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int tx_type, int bd";
787   specialize qw/vp9_highbd_iht8x8_64_add/;
788
789   add_proto qw/void vp9_highbd_iht16x16_256_add/, "const tran_low_t *input, uint8_t *output, int pitch, int tx_type, int bd";
790   specialize qw/vp9_highbd_iht16x16_256_add/;
791
792   # dct and add
793
794   add_proto qw/void vp9_highbd_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
795   specialize qw/vp9_highbd_iwht4x4_1_add/;
796
797   add_proto qw/void vp9_highbd_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int dest_stride, int bd";
798   specialize qw/vp9_highbd_iwht4x4_16_add/;
799 }
800
801 #
802 # Encoder functions below this point.
803 #
804 if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") {
805
806
807 # variance
808 add_proto qw/unsigned int vp9_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
809 specialize qw/vp9_variance32x16 avx2/, "$sse2_x86inc";
810
811 add_proto qw/unsigned int vp9_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
812 specialize qw/vp9_variance16x32/, "$sse2_x86inc";
813
814 add_proto qw/unsigned int vp9_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
815 specialize qw/vp9_variance64x32 avx2/, "$sse2_x86inc";
816
817 add_proto qw/unsigned int vp9_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
818 specialize qw/vp9_variance32x64/, "$sse2_x86inc";
819
820 add_proto qw/unsigned int vp9_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
821 specialize qw/vp9_variance32x32 avx2 neon/, "$sse2_x86inc";
822
823 add_proto qw/unsigned int vp9_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
824 specialize qw/vp9_variance64x64 avx2/, "$sse2_x86inc";
825
826 add_proto qw/unsigned int vp9_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
827 specialize qw/vp9_variance16x16 avx2 neon/, "$sse2_x86inc";
828
829 add_proto qw/unsigned int vp9_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
830 specialize qw/vp9_variance16x8/, "$sse2_x86inc";
831
832 add_proto qw/unsigned int vp9_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
833 specialize qw/vp9_variance8x16/, "$sse2_x86inc";
834
835 add_proto qw/unsigned int vp9_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
836 specialize qw/vp9_variance8x8 neon/, "$sse2_x86inc";
837
838 add_proto qw/void vp9_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
839 specialize qw/vp9_get8x8var neon/, "$sse2_x86inc";
840
841 add_proto qw/void vp9_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
842 specialize qw/vp9_get16x16var avx2 neon/, "$sse2_x86inc";
843
844 add_proto qw/unsigned int vp9_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
845 specialize qw/vp9_variance8x4/, "$sse2_x86inc";
846
847 add_proto qw/unsigned int vp9_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
848 specialize qw/vp9_variance4x8/, "$sse2_x86inc";
849
850 add_proto qw/unsigned int vp9_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
851 specialize qw/vp9_variance4x4/, "$sse2_x86inc";
852
853 add_proto qw/unsigned int vp9_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
854 specialize qw/vp9_sub_pixel_variance64x64 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
855
856 add_proto qw/unsigned int vp9_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
857 specialize qw/vp9_sub_pixel_avg_variance64x64 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
858
859 add_proto qw/unsigned int vp9_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
860 specialize qw/vp9_sub_pixel_variance32x64/, "$sse2_x86inc", "$ssse3_x86inc";
861
862 add_proto qw/unsigned int vp9_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
863 specialize qw/vp9_sub_pixel_avg_variance32x64/, "$sse2_x86inc", "$ssse3_x86inc";
864
865 add_proto qw/unsigned int vp9_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
866 specialize qw/vp9_sub_pixel_variance64x32/, "$sse2_x86inc", "$ssse3_x86inc";
867
868 add_proto qw/unsigned int vp9_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
869 specialize qw/vp9_sub_pixel_avg_variance64x32/, "$sse2_x86inc", "$ssse3_x86inc";
870
871 add_proto qw/unsigned int vp9_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
872 specialize qw/vp9_sub_pixel_variance32x16/, "$sse2_x86inc", "$ssse3_x86inc";
873
874 add_proto qw/unsigned int vp9_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
875 specialize qw/vp9_sub_pixel_avg_variance32x16/, "$sse2_x86inc", "$ssse3_x86inc";
876
877 add_proto qw/unsigned int vp9_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
878 specialize qw/vp9_sub_pixel_variance16x32/, "$sse2_x86inc", "$ssse3_x86inc";
879
880 add_proto qw/unsigned int vp9_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
881 specialize qw/vp9_sub_pixel_avg_variance16x32/, "$sse2_x86inc", "$ssse3_x86inc";
882
883 add_proto qw/unsigned int vp9_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
884 specialize qw/vp9_sub_pixel_variance32x32 avx2 neon/, "$sse2_x86inc", "$ssse3_x86inc";
885
886 add_proto qw/unsigned int vp9_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
887 specialize qw/vp9_sub_pixel_avg_variance32x32 avx2/, "$sse2_x86inc", "$ssse3_x86inc";
888
889 add_proto qw/unsigned int vp9_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
890 specialize qw/vp9_sub_pixel_variance16x16 neon/, "$sse2_x86inc", "$ssse3_x86inc";
891
892 add_proto qw/unsigned int vp9_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
893 specialize qw/vp9_sub_pixel_avg_variance16x16/, "$sse2_x86inc", "$ssse3_x86inc";
894
895 add_proto qw/unsigned int vp9_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
896 specialize qw/vp9_sub_pixel_variance8x16/, "$sse2_x86inc", "$ssse3_x86inc";
897
898 add_proto qw/unsigned int vp9_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
899 specialize qw/vp9_sub_pixel_avg_variance8x16/, "$sse2_x86inc", "$ssse3_x86inc";
900
901 add_proto qw/unsigned int vp9_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
902 specialize qw/vp9_sub_pixel_variance16x8/, "$sse2_x86inc", "$ssse3_x86inc";
903
904 add_proto qw/unsigned int vp9_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
905 specialize qw/vp9_sub_pixel_avg_variance16x8/, "$sse2_x86inc", "$ssse3_x86inc";
906
907 add_proto qw/unsigned int vp9_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
908 specialize qw/vp9_sub_pixel_variance8x8 neon/, "$sse2_x86inc", "$ssse3_x86inc";
909
910 add_proto qw/unsigned int vp9_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
911 specialize qw/vp9_sub_pixel_avg_variance8x8/, "$sse2_x86inc", "$ssse3_x86inc";
912
913 # TODO(jingning): need to convert 8x4/4x8 functions into mmx/sse form
914 add_proto qw/unsigned int vp9_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
915 specialize qw/vp9_sub_pixel_variance8x4/, "$sse2_x86inc", "$ssse3_x86inc";
916
917 add_proto qw/unsigned int vp9_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
918 specialize qw/vp9_sub_pixel_avg_variance8x4/, "$sse2_x86inc", "$ssse3_x86inc";
919
920 add_proto qw/unsigned int vp9_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
921 specialize qw/vp9_sub_pixel_variance4x8/, "$sse_x86inc", "$ssse3_x86inc";
922
923 add_proto qw/unsigned int vp9_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
924 specialize qw/vp9_sub_pixel_avg_variance4x8/, "$sse_x86inc", "$ssse3_x86inc";
925
926 add_proto qw/unsigned int vp9_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
927 specialize qw/vp9_sub_pixel_variance4x4/, "$sse_x86inc", "$ssse3_x86inc";
928 #vp9_sub_pixel_variance4x4_sse2=vp9_sub_pixel_variance4x4_wmt
929
930 add_proto qw/unsigned int vp9_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
931 specialize qw/vp9_sub_pixel_avg_variance4x4/, "$sse_x86inc", "$ssse3_x86inc";
932
933 add_proto qw/unsigned int vp9_sad64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
934 specialize qw/vp9_sad64x64 neon avx2/, "$sse2_x86inc";
935
936 add_proto qw/unsigned int vp9_sad32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
937 specialize qw/vp9_sad32x64 avx2/, "$sse2_x86inc";
938
939 add_proto qw/unsigned int vp9_sad64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
940 specialize qw/vp9_sad64x32 avx2/, "$sse2_x86inc";
941
942 add_proto qw/unsigned int vp9_sad32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
943 specialize qw/vp9_sad32x16 avx2/, "$sse2_x86inc";
944
945 add_proto qw/unsigned int vp9_sad16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
946 specialize qw/vp9_sad16x32/, "$sse2_x86inc";
947
948 add_proto qw/unsigned int vp9_sad32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
949 specialize qw/vp9_sad32x32 neon avx2/, "$sse2_x86inc";
950
951 add_proto qw/unsigned int vp9_sad16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
952 specialize qw/vp9_sad16x16 neon/, "$sse2_x86inc";
953
954 add_proto qw/unsigned int vp9_sad16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
955 specialize qw/vp9_sad16x8/, "$sse2_x86inc";
956
957 add_proto qw/unsigned int vp9_sad8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
958 specialize qw/vp9_sad8x16/, "$sse2_x86inc";
959
960 add_proto qw/unsigned int vp9_sad8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
961 specialize qw/vp9_sad8x8 neon/, "$sse2_x86inc";
962
963 add_proto qw/unsigned int vp9_sad8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
964 specialize qw/vp9_sad8x4/, "$sse2_x86inc";
965
966 add_proto qw/unsigned int vp9_sad4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
967 specialize qw/vp9_sad4x8/, "$sse_x86inc";
968
969 add_proto qw/unsigned int vp9_sad4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
970 specialize qw/vp9_sad4x4/, "$sse_x86inc";
971
972 add_proto qw/unsigned int vp9_sad64x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
973 specialize qw/vp9_sad64x64_avg avx2/, "$sse2_x86inc";
974
975 add_proto qw/unsigned int vp9_sad32x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
976 specialize qw/vp9_sad32x64_avg avx2/, "$sse2_x86inc";
977
978 add_proto qw/unsigned int vp9_sad64x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
979 specialize qw/vp9_sad64x32_avg avx2/, "$sse2_x86inc";
980
981 add_proto qw/unsigned int vp9_sad32x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
982 specialize qw/vp9_sad32x16_avg avx2/, "$sse2_x86inc";
983
984 add_proto qw/unsigned int vp9_sad16x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
985 specialize qw/vp9_sad16x32_avg/, "$sse2_x86inc";
986
987 add_proto qw/unsigned int vp9_sad32x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
988 specialize qw/vp9_sad32x32_avg avx2/, "$sse2_x86inc";
989
990 add_proto qw/unsigned int vp9_sad16x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
991 specialize qw/vp9_sad16x16_avg/, "$sse2_x86inc";
992
993 add_proto qw/unsigned int vp9_sad16x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
994 specialize qw/vp9_sad16x8_avg/, "$sse2_x86inc";
995
996 add_proto qw/unsigned int vp9_sad8x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
997 specialize qw/vp9_sad8x16_avg/, "$sse2_x86inc";
998
999 add_proto qw/unsigned int vp9_sad8x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1000 specialize qw/vp9_sad8x8_avg/, "$sse2_x86inc";
1001
1002 add_proto qw/unsigned int vp9_sad8x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1003 specialize qw/vp9_sad8x4_avg/, "$sse2_x86inc";
1004
1005 add_proto qw/unsigned int vp9_sad4x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1006 specialize qw/vp9_sad4x8_avg/, "$sse_x86inc";
1007
1008 add_proto qw/unsigned int vp9_sad4x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1009 specialize qw/vp9_sad4x4_avg/, "$sse_x86inc";
1010
1011 add_proto qw/void vp9_sad64x64x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1012 specialize qw/vp9_sad64x64x3/;
1013
1014 add_proto qw/void vp9_sad32x32x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1015 specialize qw/vp9_sad32x32x3/;
1016
1017 add_proto qw/void vp9_sad16x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1018 specialize qw/vp9_sad16x16x3 sse3 ssse3/;
1019
1020 add_proto qw/void vp9_sad16x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1021 specialize qw/vp9_sad16x8x3 sse3 ssse3/;
1022
1023 add_proto qw/void vp9_sad8x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1024 specialize qw/vp9_sad8x16x3 sse3/;
1025
1026 add_proto qw/void vp9_sad8x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1027 specialize qw/vp9_sad8x8x3 sse3/;
1028
1029 add_proto qw/void vp9_sad4x4x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1030 specialize qw/vp9_sad4x4x3 sse3/;
1031
1032 add_proto qw/void vp9_sad64x64x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1033 specialize qw/vp9_sad64x64x8/;
1034
1035 add_proto qw/void vp9_sad32x32x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1036 specialize qw/vp9_sad32x32x8/;
1037
1038 add_proto qw/void vp9_sad16x16x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1039 specialize qw/vp9_sad16x16x8 sse4/;
1040
1041 add_proto qw/void vp9_sad16x8x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1042 specialize qw/vp9_sad16x8x8 sse4/;
1043
1044 add_proto qw/void vp9_sad8x16x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1045 specialize qw/vp9_sad8x16x8 sse4/;
1046
1047 add_proto qw/void vp9_sad8x8x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1048 specialize qw/vp9_sad8x8x8 sse4/;
1049
1050 add_proto qw/void vp9_sad8x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1051 specialize qw/vp9_sad8x4x8/;
1052
1053 add_proto qw/void vp9_sad4x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1054 specialize qw/vp9_sad4x8x8/;
1055
1056 add_proto qw/void vp9_sad4x4x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1057 specialize qw/vp9_sad4x4x8 sse4/;
1058
1059 add_proto qw/void vp9_sad64x64x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1060 specialize qw/vp9_sad64x64x4d sse2 avx2/;
1061
1062 add_proto qw/void vp9_sad32x64x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1063 specialize qw/vp9_sad32x64x4d sse2/;
1064
1065 add_proto qw/void vp9_sad64x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1066 specialize qw/vp9_sad64x32x4d sse2/;
1067
1068 add_proto qw/void vp9_sad32x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1069 specialize qw/vp9_sad32x16x4d sse2/;
1070
1071 add_proto qw/void vp9_sad16x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1072 specialize qw/vp9_sad16x32x4d sse2/;
1073
1074 add_proto qw/void vp9_sad32x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1075 specialize qw/vp9_sad32x32x4d sse2 avx2/;
1076
1077 add_proto qw/void vp9_sad16x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1078 specialize qw/vp9_sad16x16x4d sse2/;
1079
1080 add_proto qw/void vp9_sad16x8x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1081 specialize qw/vp9_sad16x8x4d sse2/;
1082
1083 add_proto qw/void vp9_sad8x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1084 specialize qw/vp9_sad8x16x4d sse2/;
1085
1086 add_proto qw/void vp9_sad8x8x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1087 specialize qw/vp9_sad8x8x4d sse2/;
1088
1089 # TODO(jingning): need to convert these 4x8/8x4 functions into sse2 form
1090 add_proto qw/void vp9_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1091 specialize qw/vp9_sad8x4x4d sse2/;
1092
1093 add_proto qw/void vp9_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1094 specialize qw/vp9_sad4x8x4d sse/;
1095
1096 add_proto qw/void vp9_sad4x4x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1097 specialize qw/vp9_sad4x4x4d sse/;
1098
1099 add_proto qw/unsigned int vp9_mse16x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1100 specialize qw/vp9_mse16x16 avx2/, "$sse2_x86inc";
1101
1102 add_proto qw/unsigned int vp9_mse8x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1103 specialize qw/vp9_mse8x16/, "$sse2_x86inc";
1104
1105 add_proto qw/unsigned int vp9_mse16x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1106 specialize qw/vp9_mse16x8/, "$sse2_x86inc";
1107
1108 add_proto qw/unsigned int vp9_mse8x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1109 specialize qw/vp9_mse8x8/, "$sse2_x86inc";
1110
1111 add_proto qw/unsigned int vp9_get_mb_ss/, "const int16_t *";
1112 specialize qw/vp9_get_mb_ss/, "$sse2_x86inc";
1113
1114 add_proto qw/unsigned int vp9_avg_8x8/, "const uint8_t *, int p";
1115 specialize qw/vp9_avg_8x8 sse2/;
1116
1117 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1118   add_proto qw/unsigned int vp9_highbd_avg_8x8/, "const uint8_t *, int p";
1119   specialize qw/vp9_highbd_avg_8x8/;
1120 }
1121
1122 # ENCODEMB INVOKE
1123
1124 add_proto qw/void vp9_subtract_block/, "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride";
1125 specialize qw/vp9_subtract_block neon/, "$sse2_x86inc";
1126
1127 #
1128 # Denoiser
1129 #
1130 if (vpx_config("CONFIG_VP9_TEMPORAL_DENOISING") eq "yes") {
1131   add_proto qw/int vp9_denoiser_filter/, "const uint8_t *sig, int sig_stride, const uint8_t *mc_avg, int mc_avg_stride, uint8_t *avg, int avg_stride, int increase_denoising, BLOCK_SIZE bs, int motion_magnitude";
1132   specialize qw/vp9_denoiser_filter sse2/;
1133 }
1134
1135 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1136 # the transform coefficients are held in 32-bit
1137 # values, so the assembler code for  vp9_block_error can no longer be used.
1138   add_proto qw/int64_t vp9_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz";
1139   specialize qw/vp9_block_error/;
1140
1141   add_proto qw/void vp9_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1142   specialize qw/vp9_quantize_fp/;
1143
1144   add_proto qw/void vp9_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1145   specialize qw/vp9_quantize_fp_32x32/;
1146
1147   add_proto qw/void vp9_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1148   specialize qw/vp9_quantize_b/;
1149
1150   add_proto qw/void vp9_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1151   specialize qw/vp9_quantize_b_32x32/;
1152 } else {
1153   add_proto qw/int64_t vp9_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz";
1154   specialize qw/vp9_block_error avx2/, "$sse2_x86inc";
1155
1156   add_proto qw/void vp9_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1157   specialize qw/vp9_quantize_fp neon/, "$ssse3_x86_64";
1158
1159   add_proto qw/void vp9_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1160   specialize qw/vp9_quantize_fp_32x32/, "$ssse3_x86_64";
1161
1162   add_proto qw/void vp9_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1163   specialize qw/vp9_quantize_b sse2/, "$ssse3_x86_64";
1164
1165   add_proto qw/void vp9_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1166   specialize qw/vp9_quantize_b_32x32/, "$ssse3_x86_64";
1167 }
1168
1169 #
1170 # Structured Similarity (SSIM)
1171 #
1172 if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
1173     add_proto qw/void vp9_ssim_parms_8x8/, "uint8_t *s, int sp, uint8_t *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr";
1174     specialize qw/vp9_ssim_parms_8x8/, "$sse2_x86_64";
1175
1176     add_proto qw/void vp9_ssim_parms_16x16/, "uint8_t *s, int sp, uint8_t *r, int rp, unsigned long *sum_s, unsigned long *sum_r, unsigned long *sum_sq_s, unsigned long *sum_sq_r, unsigned long *sum_sxr";
1177     specialize qw/vp9_ssim_parms_16x16/, "$sse2_x86_64";
1178 }
1179
1180 # fdct functions
1181
1182 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1183   add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1184   specialize qw/vp9_fht4x4/;
1185
1186   add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1187   specialize qw/vp9_fht8x8/;
1188
1189   add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1190   specialize qw/vp9_fht16x16/;
1191
1192   add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1193   specialize qw/vp9_fwht4x4/;
1194
1195   add_proto qw/void vp9_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
1196   specialize qw/vp9_fdct4x4_1/;
1197
1198   add_proto qw/void vp9_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1199   specialize qw/vp9_fdct4x4/;
1200
1201   add_proto qw/void vp9_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1202   specialize qw/vp9_fdct8x8_1/;
1203
1204   add_proto qw/void vp9_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1205   specialize qw/vp9_fdct8x8/;
1206
1207   add_proto qw/void vp9_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1208   specialize qw/vp9_fdct16x16_1/;
1209
1210   add_proto qw/void vp9_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1211   specialize qw/vp9_fdct16x16/;
1212
1213   add_proto qw/void vp9_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1214   specialize qw/vp9_fdct32x32_1/;
1215
1216   add_proto qw/void vp9_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1217   specialize qw/vp9_fdct32x32/;
1218
1219   add_proto qw/void vp9_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1220   specialize qw/vp9_fdct32x32_rd/;
1221 } else {
1222   add_proto qw/void vp9_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1223   specialize qw/vp9_fht4x4 sse2/;
1224
1225   add_proto qw/void vp9_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1226   specialize qw/vp9_fht8x8 sse2/;
1227
1228   add_proto qw/void vp9_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1229   specialize qw/vp9_fht16x16 sse2/;
1230
1231   add_proto qw/void vp9_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1232   specialize qw/vp9_fwht4x4/, "$mmx_x86inc";
1233
1234   add_proto qw/void vp9_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
1235   specialize qw/vp9_fdct4x4_1 sse2/;
1236
1237   add_proto qw/void vp9_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1238   specialize qw/vp9_fdct4x4 sse2/;
1239
1240   add_proto qw/void vp9_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1241   specialize qw/vp9_fdct8x8_1 sse2 neon/;
1242
1243   add_proto qw/void vp9_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1244   specialize qw/vp9_fdct8x8 sse2 neon/, "$ssse3_x86_64";
1245
1246   add_proto qw/void vp9_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1247   specialize qw/vp9_fdct16x16_1 sse2/;
1248
1249   add_proto qw/void vp9_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1250   specialize qw/vp9_fdct16x16 sse2/;
1251
1252   add_proto qw/void vp9_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1253   specialize qw/vp9_fdct32x32_1 sse2/;
1254
1255   add_proto qw/void vp9_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1256   specialize qw/vp9_fdct32x32 sse2 avx2/;
1257
1258   add_proto qw/void vp9_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1259   specialize qw/vp9_fdct32x32_rd sse2 avx2/;
1260 }
1261
1262 #
1263 # Motion search
1264 #
1265 add_proto qw/int vp9_full_search_sad/, "const struct macroblock *x, const struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv, struct mv *best_mv";
1266 specialize qw/vp9_full_search_sad sse3 sse4_1/;
1267 $vp9_full_search_sad_sse3=vp9_full_search_sadx3;
1268 $vp9_full_search_sad_sse4_1=vp9_full_search_sadx8;
1269
1270 add_proto qw/int vp9_refining_search_sad/, "const struct macroblock *x, struct mv *ref_mv, int sad_per_bit, int distance, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv";
1271 specialize qw/vp9_refining_search_sad/;
1272
1273 add_proto qw/int vp9_diamond_search_sad/, "const struct macroblock *x, const struct search_site_config *cfg,  struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv";
1274 specialize qw/vp9_diamond_search_sad/;
1275
1276 add_proto qw/int vp9_full_range_search/, "const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv";
1277 specialize qw/vp9_full_range_search/;
1278
1279 add_proto qw/void vp9_temporal_filter_apply/, "uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count";
1280 specialize qw/vp9_temporal_filter_apply sse2/;
1281
1282 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1283
1284   # variance
1285   add_proto qw/unsigned int vp9_highbd_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1286   specialize qw/vp9_highbd_variance32x16/;
1287
1288   add_proto qw/unsigned int vp9_highbd_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1289   specialize qw/vp9_highbd_variance16x32/;
1290
1291   add_proto qw/unsigned int vp9_highbd_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1292   specialize qw/vp9_highbd_variance64x32/;
1293
1294   add_proto qw/unsigned int vp9_highbd_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1295   specialize qw/vp9_highbd_variance32x64/;
1296
1297   add_proto qw/unsigned int vp9_highbd_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1298   specialize qw/vp9_highbd_variance32x32/;
1299
1300   add_proto qw/unsigned int vp9_highbd_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1301   specialize qw/vp9_highbd_variance64x64/;
1302
1303   add_proto qw/unsigned int vp9_highbd_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1304   specialize qw/vp9_highbd_variance16x16/;
1305
1306   add_proto qw/unsigned int vp9_highbd_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1307   specialize qw/vp9_highbd_variance16x8/;
1308
1309   add_proto qw/unsigned int vp9_highbd_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1310   specialize qw/vp9_highbd_variance8x16/;
1311
1312   add_proto qw/unsigned int vp9_highbd_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1313   specialize qw/vp9_highbd_variance8x8/;
1314
1315   add_proto qw/unsigned int vp9_highbd_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1316   specialize qw/vp9_highbd_variance8x4/;
1317
1318   add_proto qw/unsigned int vp9_highbd_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1319   specialize qw/vp9_highbd_variance4x8/;
1320
1321   add_proto qw/unsigned int vp9_highbd_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1322   specialize qw/vp9_highbd_variance4x4/;
1323
1324   add_proto qw/void vp9_highbd_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1325   specialize qw/vp9_highbd_get8x8var/;
1326
1327   add_proto qw/void vp9_highbd_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1328   specialize qw/vp9_highbd_get16x16var/;
1329
1330   add_proto qw/unsigned int vp9_highbd_10_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1331   specialize qw/vp9_highbd_10_variance32x16/;
1332
1333   add_proto qw/unsigned int vp9_highbd_10_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1334   specialize qw/vp9_highbd_10_variance16x32/;
1335
1336   add_proto qw/unsigned int vp9_highbd_10_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1337   specialize qw/vp9_highbd_10_variance64x32/;
1338
1339   add_proto qw/unsigned int vp9_highbd_10_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1340   specialize qw/vp9_highbd_10_variance32x64/;
1341
1342   add_proto qw/unsigned int vp9_highbd_10_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1343   specialize qw/vp9_highbd_10_variance32x32/;
1344
1345   add_proto qw/unsigned int vp9_highbd_10_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1346   specialize qw/vp9_highbd_10_variance64x64/;
1347
1348   add_proto qw/unsigned int vp9_highbd_10_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1349   specialize qw/vp9_highbd_10_variance16x16/;
1350
1351   add_proto qw/unsigned int vp9_highbd_10_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1352   specialize qw/vp9_highbd_10_variance16x8/;
1353
1354   add_proto qw/unsigned int vp9_highbd_10_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1355   specialize qw/vp9_highbd_10_variance8x16/;
1356
1357   add_proto qw/unsigned int vp9_highbd_10_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1358   specialize qw/vp9_highbd_10_variance8x8/;
1359
1360   add_proto qw/unsigned int vp9_highbd_10_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1361   specialize qw/vp9_highbd_10_variance8x4/;
1362
1363   add_proto qw/unsigned int vp9_highbd_10_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1364   specialize qw/vp9_highbd_10_variance4x8/;
1365
1366   add_proto qw/unsigned int vp9_highbd_10_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1367   specialize qw/vp9_highbd_10_variance4x4/;
1368
1369   add_proto qw/void vp9_highbd_10_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1370   specialize qw/vp9_highbd_10_get8x8var/;
1371
1372   add_proto qw/void vp9_highbd_10_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1373   specialize qw/vp9_highbd_10_get16x16var/;
1374
1375   add_proto qw/unsigned int vp9_highbd_12_variance32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1376   specialize qw/vp9_highbd_12_variance32x16/;
1377
1378   add_proto qw/unsigned int vp9_highbd_12_variance16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1379   specialize qw/vp9_highbd_12_variance16x32/;
1380
1381   add_proto qw/unsigned int vp9_highbd_12_variance64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1382   specialize qw/vp9_highbd_12_variance64x32/;
1383
1384   add_proto qw/unsigned int vp9_highbd_12_variance32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1385   specialize qw/vp9_highbd_12_variance32x64/;
1386
1387   add_proto qw/unsigned int vp9_highbd_12_variance32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1388   specialize qw/vp9_highbd_12_variance32x32/;
1389
1390   add_proto qw/unsigned int vp9_highbd_12_variance64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1391   specialize qw/vp9_highbd_12_variance64x64/;
1392
1393   add_proto qw/unsigned int vp9_highbd_12_variance16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1394   specialize qw/vp9_highbd_12_variance16x16/;
1395
1396   add_proto qw/unsigned int vp9_highbd_12_variance16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1397   specialize qw/vp9_highbd_12_variance16x8/;
1398
1399   add_proto qw/unsigned int vp9_highbd_12_variance8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1400   specialize qw/vp9_highbd_12_variance8x16/;
1401
1402   add_proto qw/unsigned int vp9_highbd_12_variance8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1403   specialize qw/vp9_highbd_12_variance8x8/;
1404
1405   add_proto qw/unsigned int vp9_highbd_12_variance8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1406   specialize qw/vp9_highbd_12_variance8x4/;
1407
1408   add_proto qw/unsigned int vp9_highbd_12_variance4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1409   specialize qw/vp9_highbd_12_variance4x8/;
1410
1411   add_proto qw/unsigned int vp9_highbd_12_variance4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1412   specialize qw/vp9_highbd_12_variance4x4/;
1413
1414   add_proto qw/void vp9_highbd_12_get8x8var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1415   specialize qw/vp9_highbd_12_get8x8var/;
1416
1417   add_proto qw/void vp9_highbd_12_get16x16var/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1418   specialize qw/vp9_highbd_12_get16x16var/;
1419
1420   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1421   specialize qw/vp9_highbd_sub_pixel_variance64x64/;
1422
1423   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1424   specialize qw/vp9_highbd_sub_pixel_avg_variance64x64/;
1425
1426   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1427   specialize qw/vp9_highbd_sub_pixel_variance32x64/;
1428
1429   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1430   specialize qw/vp9_highbd_sub_pixel_avg_variance32x64/;
1431
1432   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1433   specialize qw/vp9_highbd_sub_pixel_variance64x32/;
1434
1435   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1436   specialize qw/vp9_highbd_sub_pixel_avg_variance64x32/;
1437
1438   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1439   specialize qw/vp9_highbd_sub_pixel_variance32x16/;
1440
1441   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1442   specialize qw/vp9_highbd_sub_pixel_avg_variance32x16/;
1443
1444   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1445   specialize qw/vp9_highbd_sub_pixel_variance16x32/;
1446
1447   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1448   specialize qw/vp9_highbd_sub_pixel_avg_variance16x32/;
1449
1450   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1451   specialize qw/vp9_highbd_sub_pixel_variance32x32/;
1452
1453   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1454   specialize qw/vp9_highbd_sub_pixel_avg_variance32x32/;
1455
1456   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1457   specialize qw/vp9_highbd_sub_pixel_variance16x16/;
1458
1459   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1460   specialize qw/vp9_highbd_sub_pixel_avg_variance16x16/;
1461
1462   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1463   specialize qw/vp9_highbd_sub_pixel_variance8x16/;
1464
1465   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1466   specialize qw/vp9_highbd_sub_pixel_avg_variance8x16/;
1467
1468   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1469   specialize qw/vp9_highbd_sub_pixel_variance16x8/;
1470
1471   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1472   specialize qw/vp9_highbd_sub_pixel_avg_variance16x8/;
1473
1474   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1475   specialize qw/vp9_highbd_sub_pixel_variance8x8/;
1476
1477   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1478   specialize qw/vp9_highbd_sub_pixel_avg_variance8x8/;
1479
1480   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1481   specialize qw/vp9_highbd_sub_pixel_variance8x4/;
1482
1483   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1484   specialize qw/vp9_highbd_sub_pixel_avg_variance8x4/;
1485
1486   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1487   specialize qw/vp9_highbd_sub_pixel_variance4x8/;
1488
1489   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1490   specialize qw/vp9_highbd_sub_pixel_avg_variance4x8/;
1491
1492   add_proto qw/unsigned int vp9_highbd_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1493   specialize qw/vp9_highbd_sub_pixel_variance4x4/;
1494
1495   add_proto qw/unsigned int vp9_highbd_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1496   specialize qw/vp9_highbd_sub_pixel_avg_variance4x4/;
1497
1498   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1499   specialize qw/vp9_highbd_10_sub_pixel_variance64x64/;
1500
1501   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1502   specialize qw/vp9_highbd_10_sub_pixel_avg_variance64x64/;
1503
1504   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1505   specialize qw/vp9_highbd_10_sub_pixel_variance32x64/;
1506
1507   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1508   specialize qw/vp9_highbd_10_sub_pixel_avg_variance32x64/;
1509
1510   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1511   specialize qw/vp9_highbd_10_sub_pixel_variance64x32/;
1512
1513   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1514   specialize qw/vp9_highbd_10_sub_pixel_avg_variance64x32/;
1515
1516   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1517   specialize qw/vp9_highbd_10_sub_pixel_variance32x16/;
1518
1519   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1520   specialize qw/vp9_highbd_10_sub_pixel_avg_variance32x16/;
1521
1522   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1523   specialize qw/vp9_highbd_10_sub_pixel_variance16x32/;
1524
1525   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1526   specialize qw/vp9_highbd_10_sub_pixel_avg_variance16x32/;
1527
1528   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1529   specialize qw/vp9_highbd_10_sub_pixel_variance32x32/;
1530
1531   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1532   specialize qw/vp9_highbd_10_sub_pixel_avg_variance32x32/;
1533
1534   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1535   specialize qw/vp9_highbd_10_sub_pixel_variance16x16/;
1536
1537   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1538   specialize qw/vp9_highbd_10_sub_pixel_avg_variance16x16/;
1539
1540   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1541   specialize qw/vp9_highbd_10_sub_pixel_variance8x16/;
1542
1543   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1544   specialize qw/vp9_highbd_10_sub_pixel_avg_variance8x16/;
1545
1546   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1547   specialize qw/vp9_highbd_10_sub_pixel_variance16x8/;
1548
1549   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1550   specialize qw/vp9_highbd_10_sub_pixel_avg_variance16x8/;
1551
1552   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1553   specialize qw/vp9_highbd_10_sub_pixel_variance8x8/;
1554
1555   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1556   specialize qw/vp9_highbd_10_sub_pixel_avg_variance8x8/;
1557
1558   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1559   specialize qw/vp9_highbd_10_sub_pixel_variance8x4/;
1560
1561   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1562   specialize qw/vp9_highbd_10_sub_pixel_avg_variance8x4/;
1563
1564   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1565   specialize qw/vp9_highbd_10_sub_pixel_variance4x8/;
1566
1567   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1568   specialize qw/vp9_highbd_10_sub_pixel_avg_variance4x8/;
1569
1570   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1571   specialize qw/vp9_highbd_10_sub_pixel_variance4x4/;
1572
1573   add_proto qw/unsigned int vp9_highbd_10_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1574   specialize qw/vp9_highbd_10_sub_pixel_avg_variance4x4/;
1575
1576   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1577   specialize qw/vp9_highbd_12_sub_pixel_variance64x64/;
1578
1579   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1580   specialize qw/vp9_highbd_12_sub_pixel_avg_variance64x64/;
1581
1582   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1583   specialize qw/vp9_highbd_12_sub_pixel_variance32x64/;
1584
1585   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1586   specialize qw/vp9_highbd_12_sub_pixel_avg_variance32x64/;
1587
1588   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1589   specialize qw/vp9_highbd_12_sub_pixel_variance64x32/;
1590
1591   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1592   specialize qw/vp9_highbd_12_sub_pixel_avg_variance64x32/;
1593
1594   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1595   specialize qw/vp9_highbd_12_sub_pixel_variance32x16/;
1596
1597   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1598   specialize qw/vp9_highbd_12_sub_pixel_avg_variance32x16/;
1599
1600   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1601   specialize qw/vp9_highbd_12_sub_pixel_variance16x32/;
1602
1603   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1604   specialize qw/vp9_highbd_12_sub_pixel_avg_variance16x32/;
1605
1606   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1607   specialize qw/vp9_highbd_12_sub_pixel_variance32x32/;
1608
1609   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1610   specialize qw/vp9_highbd_12_sub_pixel_avg_variance32x32/;
1611
1612   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1613   specialize qw/vp9_highbd_12_sub_pixel_variance16x16/;
1614
1615   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1616   specialize qw/vp9_highbd_12_sub_pixel_avg_variance16x16/;
1617
1618   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1619   specialize qw/vp9_highbd_12_sub_pixel_variance8x16/;
1620
1621   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1622   specialize qw/vp9_highbd_12_sub_pixel_avg_variance8x16/;
1623
1624   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1625   specialize qw/vp9_highbd_12_sub_pixel_variance16x8/;
1626
1627   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1628   specialize qw/vp9_highbd_12_sub_pixel_avg_variance16x8/;
1629
1630   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1631   specialize qw/vp9_highbd_12_sub_pixel_variance8x8/;
1632
1633   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1634   specialize qw/vp9_highbd_12_sub_pixel_avg_variance8x8/;
1635
1636   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1637   specialize qw/vp9_highbd_12_sub_pixel_variance8x4/;
1638
1639   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1640   specialize qw/vp9_highbd_12_sub_pixel_avg_variance8x4/;
1641
1642   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1643   specialize qw/vp9_highbd_12_sub_pixel_variance4x8/;
1644
1645   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1646   specialize qw/vp9_highbd_12_sub_pixel_avg_variance4x8/;
1647
1648   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1649   specialize qw/vp9_highbd_12_sub_pixel_variance4x4/;
1650
1651   add_proto qw/unsigned int vp9_highbd_12_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int source_stride, int xoffset, int  yoffset, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, const uint8_t *second_pred";
1652   specialize qw/vp9_highbd_12_sub_pixel_avg_variance4x4/;
1653
1654   add_proto qw/unsigned int vp9_highbd_sad64x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1655   specialize qw/vp9_highbd_sad64x64/;
1656
1657   add_proto qw/unsigned int vp9_highbd_sad32x64/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1658   specialize qw/vp9_highbd_sad32x64/;
1659
1660   add_proto qw/unsigned int vp9_highbd_sad64x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1661   specialize qw/vp9_highbd_sad64x32/;
1662
1663   add_proto qw/unsigned int vp9_highbd_sad32x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1664   specialize qw/vp9_highbd_sad32x16/;
1665
1666   add_proto qw/unsigned int vp9_highbd_sad16x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1667   specialize qw/vp9_highbd_sad16x32/;
1668
1669   add_proto qw/unsigned int vp9_highbd_sad32x32/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1670   specialize qw/vp9_highbd_sad32x32/;
1671
1672   add_proto qw/unsigned int vp9_highbd_sad16x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1673   specialize qw/vp9_highbd_sad16x16/;
1674
1675   add_proto qw/unsigned int vp9_highbd_sad16x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1676   specialize qw/vp9_highbd_sad16x8/;
1677
1678   add_proto qw/unsigned int vp9_highbd_sad8x16/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1679   specialize qw/vp9_highbd_sad8x16/;
1680
1681   add_proto qw/unsigned int vp9_highbd_sad8x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1682   specialize qw/vp9_highbd_sad8x8/;
1683
1684   add_proto qw/unsigned int vp9_highbd_sad8x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1685   specialize qw/vp9_highbd_sad8x4/;
1686
1687   add_proto qw/unsigned int vp9_highbd_sad4x8/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride";
1688   specialize qw/vp9_highbd_sad4x8/;
1689
1690   add_proto qw/unsigned int vp9_highbd_sad4x4/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride";
1691   specialize qw/vp9_highbd_sad4x4/;
1692
1693   add_proto qw/unsigned int vp9_highbd_sad64x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1694   specialize qw/vp9_highbd_sad64x64_avg/;
1695
1696   add_proto qw/unsigned int vp9_highbd_sad32x64_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1697   specialize qw/vp9_highbd_sad32x64_avg/;
1698
1699   add_proto qw/unsigned int vp9_highbd_sad64x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1700   specialize qw/vp9_highbd_sad64x32_avg/;
1701
1702   add_proto qw/unsigned int vp9_highbd_sad32x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1703   specialize qw/vp9_highbd_sad32x16_avg/;
1704
1705   add_proto qw/unsigned int vp9_highbd_sad16x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1706   specialize qw/vp9_highbd_sad16x32_avg/;
1707
1708   add_proto qw/unsigned int vp9_highbd_sad32x32_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1709   specialize qw/vp9_highbd_sad32x32_avg/;
1710
1711   add_proto qw/unsigned int vp9_highbd_sad16x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1712   specialize qw/vp9_highbd_sad16x16_avg/;
1713
1714   add_proto qw/unsigned int vp9_highbd_sad16x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1715   specialize qw/vp9_highbd_sad16x8_avg/;
1716
1717   add_proto qw/unsigned int vp9_highbd_sad8x16_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1718   specialize qw/vp9_highbd_sad8x16_avg/;
1719
1720   add_proto qw/unsigned int vp9_highbd_sad8x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1721   specialize qw/vp9_highbd_sad8x8_avg/;
1722
1723   add_proto qw/unsigned int vp9_highbd_sad8x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1724   specialize qw/vp9_highbd_sad8x4_avg/;
1725
1726   add_proto qw/unsigned int vp9_highbd_sad4x8_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1727   specialize qw/vp9_highbd_sad4x8_avg/;
1728
1729   add_proto qw/unsigned int vp9_highbd_sad4x4_avg/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, const uint8_t *second_pred";
1730   specialize qw/vp9_highbd_sad4x4_avg/;
1731
1732   add_proto qw/void vp9_highbd_sad64x64x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1733   specialize qw/vp9_highbd_sad64x64x3/;
1734
1735   add_proto qw/void vp9_highbd_sad32x32x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1736   specialize qw/vp9_highbd_sad32x32x3/;
1737
1738   add_proto qw/void vp9_highbd_sad16x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1739   specialize qw/vp9_highbd_sad16x16x3/;
1740
1741   add_proto qw/void vp9_highbd_sad16x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1742   specialize qw/vp9_highbd_sad16x8x3/;
1743
1744   add_proto qw/void vp9_highbd_sad8x16x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1745   specialize qw/vp9_highbd_sad8x16x3/;
1746
1747   add_proto qw/void vp9_highbd_sad8x8x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1748   specialize qw/vp9_highbd_sad8x8x3/;
1749
1750   add_proto qw/void vp9_highbd_sad4x4x3/, "const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int  ref_stride, unsigned int *sad_array";
1751   specialize qw/vp9_highbd_sad4x4x3/;
1752
1753   add_proto qw/void vp9_highbd_sad64x64x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1754   specialize qw/vp9_highbd_sad64x64x8/;
1755
1756   add_proto qw/void vp9_highbd_sad32x32x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1757   specialize qw/vp9_highbd_sad32x32x8/;
1758
1759   add_proto qw/void vp9_highbd_sad16x16x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1760   specialize qw/vp9_highbd_sad16x16x8/;
1761
1762   add_proto qw/void vp9_highbd_sad16x8x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1763   specialize qw/vp9_highbd_sad16x8x8/;
1764
1765   add_proto qw/void vp9_highbd_sad8x16x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1766   specialize qw/vp9_highbd_sad8x16x8/;
1767
1768   add_proto qw/void vp9_highbd_sad8x8x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1769   specialize qw/vp9_highbd_sad8x8x8/;
1770
1771   add_proto qw/void vp9_highbd_sad8x4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1772   specialize qw/vp9_highbd_sad8x4x8/;
1773
1774   add_proto qw/void vp9_highbd_sad4x8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array";
1775   specialize qw/vp9_highbd_sad4x8x8/;
1776
1777   add_proto qw/void vp9_highbd_sad4x4x8/, "const uint8_t *src_ptr, int  src_stride, const uint8_t *ref_ptr, int  ref_stride, uint32_t *sad_array";
1778   specialize qw/vp9_highbd_sad4x4x8/;
1779
1780   add_proto qw/void vp9_highbd_sad64x64x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1781   specialize qw/vp9_highbd_sad64x64x4d/;
1782
1783   add_proto qw/void vp9_highbd_sad32x64x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1784   specialize qw/vp9_highbd_sad32x64x4d/;
1785
1786   add_proto qw/void vp9_highbd_sad64x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1787   specialize qw/vp9_highbd_sad64x32x4d/;
1788
1789   add_proto qw/void vp9_highbd_sad32x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1790   specialize qw/vp9_highbd_sad32x16x4d/;
1791
1792   add_proto qw/void vp9_highbd_sad16x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1793   specialize qw/vp9_highbd_sad16x32x4d/;
1794
1795   add_proto qw/void vp9_highbd_sad32x32x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1796   specialize qw/vp9_highbd_sad32x32x4d/;
1797
1798   add_proto qw/void vp9_highbd_sad16x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1799   specialize qw/vp9_highbd_sad16x16x4d/;
1800
1801   add_proto qw/void vp9_highbd_sad16x8x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1802   specialize qw/vp9_highbd_sad16x8x4d/;
1803
1804   add_proto qw/void vp9_highbd_sad8x16x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1805   specialize qw/vp9_highbd_sad8x16x4d/;
1806
1807   add_proto qw/void vp9_highbd_sad8x8x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1808   specialize qw/vp9_highbd_sad8x8x4d/;
1809
1810   # TODO(jingning): need to convert these 4x8/8x4 functions into sse2 form
1811   add_proto qw/void vp9_highbd_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1812   specialize qw/vp9_highbd_sad8x4x4d/;
1813
1814   add_proto qw/void vp9_highbd_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_ptr[], int ref_stride, unsigned int *sad_array";
1815   specialize qw/vp9_highbd_sad4x8x4d/;
1816
1817   add_proto qw/void vp9_highbd_sad4x4x4d/, "const uint8_t *src_ptr, int  src_stride, const uint8_t* const ref_ptr[], int  ref_stride, unsigned int *sad_array";
1818   specialize qw/vp9_highbd_sad4x4x4d/;
1819
1820   add_proto qw/unsigned int vp9_highbd_mse16x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1821   specialize qw/vp9_highbd_mse16x16/;
1822
1823   add_proto qw/unsigned int vp9_highbd_mse8x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1824   specialize qw/vp9_highbd_mse8x16/;
1825
1826   add_proto qw/unsigned int vp9_highbd_mse16x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1827   specialize qw/vp9_highbd_mse16x8/;
1828
1829   add_proto qw/unsigned int vp9_highbd_mse8x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1830   specialize qw/vp9_highbd_mse8x8/;
1831
1832   add_proto qw/unsigned int vp9_highbd_10_mse16x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1833   specialize qw/vp9_highbd_10_mse16x16/;
1834
1835   add_proto qw/unsigned int vp9_highbd_10_mse8x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1836   specialize qw/vp9_highbd_10_mse8x16/;
1837
1838   add_proto qw/unsigned int vp9_highbd_10_mse16x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1839   specialize qw/vp9_highbd_10_mse16x8/;
1840
1841   add_proto qw/unsigned int vp9_highbd_10_mse8x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1842   specialize qw/vp9_highbd_10_mse8x8/;
1843
1844   add_proto qw/unsigned int vp9_highbd_12_mse16x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1845   specialize qw/vp9_highbd_12_mse16x16/;
1846
1847   add_proto qw/unsigned int vp9_highbd_12_mse8x16/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1848   specialize qw/vp9_highbd_12_mse8x16/;
1849
1850   add_proto qw/unsigned int vp9_highbd_12_mse16x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1851   specialize qw/vp9_highbd_12_mse16x8/;
1852
1853   add_proto qw/unsigned int vp9_highbd_12_mse8x8/, "const uint8_t *src_ptr, int  source_stride, const uint8_t *ref_ptr, int  recon_stride, unsigned int *sse";
1854   specialize qw/vp9_highbd_12_mse8x8/;
1855
1856   # ENCODEMB INVOKE
1857
1858   add_proto qw/int64_t vp9_highbd_block_error/, "const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz, int bd";
1859   specialize qw/vp9_highbd_block_error/;
1860
1861   add_proto qw/void vp9_highbd_subtract_block/, "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride, int bd";
1862   specialize qw/vp9_highbd_subtract_block/;
1863
1864   add_proto qw/void vp9_highbd_quantize_fp/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1865   specialize qw/vp9_highbd_quantize_fp/;
1866
1867   add_proto qw/void vp9_highbd_quantize_fp_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1868   specialize qw/vp9_highbd_quantize_fp_32x32/;
1869
1870   add_proto qw/void vp9_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1871   specialize qw/vp9_highbd_quantize_b/;
1872
1873   add_proto qw/void vp9_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, int zbin_oq_value, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
1874   specialize qw/vp9_highbd_quantize_b_32x32/;
1875
1876   #
1877   # Structured Similarity (SSIM)
1878   #
1879   if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
1880     add_proto qw/void vp9_highbd_ssim_parms_8x8/, "uint16_t *s, int sp, uint16_t *r, int rp, uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s, uint32_t *sum_sq_r, uint32_t *sum_sxr";
1881     specialize qw/vp9_highbd_ssim_parms_8x8/;
1882   }
1883
1884   # fdct functions
1885   add_proto qw/void vp9_highbd_fht4x4/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1886   specialize qw/vp9_highbd_fht4x4/;
1887
1888   add_proto qw/void vp9_highbd_fht8x8/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1889   specialize qw/vp9_highbd_fht8x8/;
1890
1891   add_proto qw/void vp9_highbd_fht16x16/, "const int16_t *input, tran_low_t *output, int stride, int tx_type";
1892   specialize qw/vp9_highbd_fht16x16/;
1893
1894   add_proto qw/void vp9_highbd_fwht4x4/, "const int16_t *input, tran_low_t *output, int stride";
1895   specialize qw/vp9_highbd_fwht4x4/;
1896
1897   add_proto qw/void vp9_highbd_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
1898   specialize qw/vp9_highbd_fdct4x4/;
1899
1900   add_proto qw/void vp9_highbd_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
1901   specialize qw/vp9_highbd_fdct8x8_1/;
1902
1903   add_proto qw/void vp9_highbd_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
1904   specialize qw/vp9_highbd_fdct8x8/;
1905
1906   add_proto qw/void vp9_highbd_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
1907   specialize qw/vp9_highbd_fdct16x16_1/;
1908
1909   add_proto qw/void vp9_highbd_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
1910   specialize qw/vp9_highbd_fdct16x16/;
1911
1912   add_proto qw/void vp9_highbd_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
1913   specialize qw/vp9_highbd_fdct32x32_1/;
1914
1915   add_proto qw/void vp9_highbd_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
1916   specialize qw/vp9_highbd_fdct32x32/;
1917
1918   add_proto qw/void vp9_highbd_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
1919   specialize qw/vp9_highbd_fdct32x32_rd/;
1920
1921   add_proto qw/void vp9_highbd_temporal_filter_apply/, "uint8_t *frame1, unsigned int stride, uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, unsigned int *accumulator, uint16_t *count";
1922   specialize qw/vp9_highbd_temporal_filter_apply/;
1923
1924 }
1925 # End vp9_high encoder functions
1926
1927 }
1928 # end encoder functions
1929 1;