d10f3a1408291fa593d40736f17a47f7339b86f0
[platform/upstream/libvpx.git] / vpx_dsp / vpx_dsp_rtcd_defs.pl
1 ##
2 ##  Copyright (c) 2017 The WebM project authors. All Rights Reserved.
3 ##
4 ##  Use of this source code is governed by a BSD-style license
5 ##  that can be found in the LICENSE file in the root of the source
6 ##  tree. An additional intellectual property rights grant can be found
7 ##  in the file PATENTS.  All contributing project authors may
8 ##  be found in the AUTHORS file in the root of the source tree.
9 ##
10
11 sub vpx_dsp_forward_decls() {
12 print <<EOF
13 /*
14  * DSP
15  */
16
17 #include "vpx/vpx_integer.h"
18 #include "vpx_dsp/vpx_dsp_common.h"
19 #include "vpx_dsp/vpx_filter.h"
20
21 EOF
22 }
23 forward_decls qw/vpx_dsp_forward_decls/;
24
25 # functions that are 64 bit only.
26 $mmx_x86_64 = $sse2_x86_64 = $ssse3_x86_64 = $avx_x86_64 = $avx2_x86_64 = '';
27 if ($opts{arch} eq "x86_64") {
28   $mmx_x86_64 = 'mmx';
29   $sse2_x86_64 = 'sse2';
30   $ssse3_x86_64 = 'ssse3';
31   $avx_x86_64 = 'avx';
32   $avx2_x86_64 = 'avx2';
33   $avx512_x86_64 = 'avx512';
34 }
35
36 #
37 # Intra prediction
38 #
39
40 add_proto qw/void vpx_d207_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
41 specialize qw/vpx_d207_predictor_4x4 sse2/;
42
43 add_proto qw/void vpx_d45_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
44 specialize qw/vpx_d45_predictor_4x4 neon sse2/;
45
46 add_proto qw/void vpx_d45e_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
47
48 add_proto qw/void vpx_d63_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
49 specialize qw/vpx_d63_predictor_4x4 ssse3/;
50
51 add_proto qw/void vpx_d63e_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
52
53 add_proto qw/void vpx_h_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
54 # TODO(crbug.com/webm/1522): Re-enable vsx implementation.
55 specialize qw/vpx_h_predictor_4x4 neon dspr2 msa sse2/;
56
57 add_proto qw/void vpx_he_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
58
59 add_proto qw/void vpx_d117_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
60
61 add_proto qw/void vpx_d135_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
62 specialize qw/vpx_d135_predictor_4x4 neon/;
63
64 add_proto qw/void vpx_d153_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
65 specialize qw/vpx_d153_predictor_4x4 ssse3/;
66
67 add_proto qw/void vpx_v_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
68 specialize qw/vpx_v_predictor_4x4 neon msa sse2/;
69
70 add_proto qw/void vpx_ve_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
71
72 add_proto qw/void vpx_tm_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
73 # TODO(crbug.com/webm/1522): Re-enable vsx implementation.
74 specialize qw/vpx_tm_predictor_4x4 neon dspr2 msa sse2/;
75
76 add_proto qw/void vpx_dc_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
77 specialize qw/vpx_dc_predictor_4x4 dspr2 msa neon sse2/;
78
79 add_proto qw/void vpx_dc_top_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
80 specialize qw/vpx_dc_top_predictor_4x4 msa neon sse2/;
81
82 add_proto qw/void vpx_dc_left_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
83 specialize qw/vpx_dc_left_predictor_4x4 msa neon sse2/;
84
85 add_proto qw/void vpx_dc_128_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
86 specialize qw/vpx_dc_128_predictor_4x4 msa neon sse2/;
87
88 add_proto qw/void vpx_d207_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
89 specialize qw/vpx_d207_predictor_8x8 ssse3/;
90
91 add_proto qw/void vpx_d45_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
92 # TODO(crbug.com/webm/1522): Re-enable vsx implementation.
93 specialize qw/vpx_d45_predictor_8x8 neon sse2/;
94
95 add_proto qw/void vpx_d63_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
96 # TODO(crbug.com/webm/1522): Re-enable vsx implementation.
97 specialize qw/vpx_d63_predictor_8x8 ssse3/;
98
99 add_proto qw/void vpx_h_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
100 # TODO(crbug.com/webm/1522): Re-enable vsx implementation.
101 specialize qw/vpx_h_predictor_8x8 neon dspr2 msa sse2/;
102
103 add_proto qw/void vpx_d117_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
104
105 add_proto qw/void vpx_d135_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
106 specialize qw/vpx_d135_predictor_8x8 neon/;
107
108 add_proto qw/void vpx_d153_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
109 specialize qw/vpx_d153_predictor_8x8 ssse3/;
110
111 add_proto qw/void vpx_v_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
112 specialize qw/vpx_v_predictor_8x8 neon msa sse2/;
113
114 add_proto qw/void vpx_tm_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
115 # TODO(crbug.com/webm/1522): Re-enable vsx implementation.
116 specialize qw/vpx_tm_predictor_8x8 neon dspr2 msa sse2/;
117
118 add_proto qw/void vpx_dc_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
119 # TODO(crbug.com/webm/1522): Re-enable vsx implementation.
120 specialize qw/vpx_dc_predictor_8x8 dspr2 neon msa sse2 lsx/;
121
122 add_proto qw/void vpx_dc_top_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
123 specialize qw/vpx_dc_top_predictor_8x8 neon msa sse2/;
124
125 add_proto qw/void vpx_dc_left_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
126 specialize qw/vpx_dc_left_predictor_8x8 neon msa sse2/;
127
128 add_proto qw/void vpx_dc_128_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
129 specialize qw/vpx_dc_128_predictor_8x8 neon msa sse2/;
130
131 add_proto qw/void vpx_d207_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
132 specialize qw/vpx_d207_predictor_16x16 ssse3/;
133
134 add_proto qw/void vpx_d45_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
135 specialize qw/vpx_d45_predictor_16x16 neon ssse3 vsx/;
136
137 add_proto qw/void vpx_d63_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
138 specialize qw/vpx_d63_predictor_16x16 ssse3 vsx/;
139
140 add_proto qw/void vpx_h_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
141 specialize qw/vpx_h_predictor_16x16 neon dspr2 msa sse2 vsx/;
142
143 add_proto qw/void vpx_d117_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
144
145 add_proto qw/void vpx_d135_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
146 specialize qw/vpx_d135_predictor_16x16 neon/;
147
148 add_proto qw/void vpx_d153_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
149 specialize qw/vpx_d153_predictor_16x16 ssse3/;
150
151 add_proto qw/void vpx_v_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
152 specialize qw/vpx_v_predictor_16x16 neon msa sse2 vsx/;
153
154 add_proto qw/void vpx_tm_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
155 specialize qw/vpx_tm_predictor_16x16 neon msa sse2 vsx/;
156
157 add_proto qw/void vpx_dc_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
158 specialize qw/vpx_dc_predictor_16x16 dspr2 neon msa sse2 vsx lsx/;
159
160 add_proto qw/void vpx_dc_top_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
161 specialize qw/vpx_dc_top_predictor_16x16 neon msa sse2 vsx/;
162
163 add_proto qw/void vpx_dc_left_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
164 specialize qw/vpx_dc_left_predictor_16x16 neon msa sse2 vsx/;
165
166 add_proto qw/void vpx_dc_128_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
167 specialize qw/vpx_dc_128_predictor_16x16 neon msa sse2 vsx/;
168
169 add_proto qw/void vpx_d207_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
170 specialize qw/vpx_d207_predictor_32x32 ssse3/;
171
172 add_proto qw/void vpx_d45_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
173 specialize qw/vpx_d45_predictor_32x32 neon ssse3 vsx/;
174
175 add_proto qw/void vpx_d63_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
176 specialize qw/vpx_d63_predictor_32x32 ssse3 vsx/;
177
178 add_proto qw/void vpx_h_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
179 specialize qw/vpx_h_predictor_32x32 neon msa sse2 vsx/;
180
181 add_proto qw/void vpx_d117_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
182
183 add_proto qw/void vpx_d135_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
184 specialize qw/vpx_d135_predictor_32x32 neon/;
185
186 add_proto qw/void vpx_d153_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
187 specialize qw/vpx_d153_predictor_32x32 ssse3/;
188
189 add_proto qw/void vpx_v_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
190 specialize qw/vpx_v_predictor_32x32 neon msa sse2 vsx/;
191
192 add_proto qw/void vpx_tm_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
193 specialize qw/vpx_tm_predictor_32x32 neon msa sse2 vsx/;
194
195 add_proto qw/void vpx_dc_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
196 specialize qw/vpx_dc_predictor_32x32 msa neon sse2 vsx/;
197
198 add_proto qw/void vpx_dc_top_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
199 specialize qw/vpx_dc_top_predictor_32x32 msa neon sse2 vsx/;
200
201 add_proto qw/void vpx_dc_left_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
202 specialize qw/vpx_dc_left_predictor_32x32 msa neon sse2 vsx/;
203
204 add_proto qw/void vpx_dc_128_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left";
205 specialize qw/vpx_dc_128_predictor_32x32 msa neon sse2 vsx/;
206
207 # High bitdepth functions
208 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
209   add_proto qw/void vpx_highbd_d207_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
210   specialize qw/vpx_highbd_d207_predictor_4x4 sse2/;
211
212   add_proto qw/void vpx_highbd_d45_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
213   specialize qw/vpx_highbd_d45_predictor_4x4 neon ssse3/;
214
215   add_proto qw/void vpx_highbd_d63_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
216   specialize qw/vpx_highbd_d63_predictor_4x4 sse2/;
217
218   add_proto qw/void vpx_highbd_h_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
219   specialize qw/vpx_highbd_h_predictor_4x4 neon sse2/;
220
221   add_proto qw/void vpx_highbd_d117_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
222   specialize qw/vpx_highbd_d117_predictor_4x4 sse2/;
223
224   add_proto qw/void vpx_highbd_d135_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
225   specialize qw/vpx_highbd_d135_predictor_4x4 neon sse2/;
226
227   add_proto qw/void vpx_highbd_d153_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
228   specialize qw/vpx_highbd_d153_predictor_4x4 sse2/;
229
230   add_proto qw/void vpx_highbd_v_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
231   specialize qw/vpx_highbd_v_predictor_4x4 neon sse2/;
232
233   add_proto qw/void vpx_highbd_tm_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
234   specialize qw/vpx_highbd_tm_predictor_4x4 neon sse2/;
235
236   add_proto qw/void vpx_highbd_dc_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
237   specialize qw/vpx_highbd_dc_predictor_4x4 neon sse2/;
238
239   add_proto qw/void vpx_highbd_dc_top_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
240   specialize qw/vpx_highbd_dc_top_predictor_4x4 neon sse2/;
241
242   add_proto qw/void vpx_highbd_dc_left_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
243   specialize qw/vpx_highbd_dc_left_predictor_4x4 neon sse2/;
244
245   add_proto qw/void vpx_highbd_dc_128_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
246   specialize qw/vpx_highbd_dc_128_predictor_4x4 neon sse2/;
247
248   add_proto qw/void vpx_highbd_d207_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
249   specialize qw/vpx_highbd_d207_predictor_8x8 ssse3/;
250
251   add_proto qw/void vpx_highbd_d45_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
252   specialize qw/vpx_highbd_d45_predictor_8x8 neon ssse3/;
253
254   add_proto qw/void vpx_highbd_d63_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
255   specialize qw/vpx_highbd_d63_predictor_8x8 ssse3/;
256
257   add_proto qw/void vpx_highbd_h_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
258   specialize qw/vpx_highbd_h_predictor_8x8 neon sse2/;
259
260   add_proto qw/void vpx_highbd_d117_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
261   specialize qw/vpx_highbd_d117_predictor_8x8 ssse3/;
262
263   add_proto qw/void vpx_highbd_d135_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
264   specialize qw/vpx_highbd_d135_predictor_8x8 neon ssse3/;
265
266   add_proto qw/void vpx_highbd_d153_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
267   specialize qw/vpx_highbd_d153_predictor_8x8 ssse3/;
268
269   add_proto qw/void vpx_highbd_v_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
270   specialize qw/vpx_highbd_v_predictor_8x8 neon sse2/;
271
272   add_proto qw/void vpx_highbd_tm_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
273   specialize qw/vpx_highbd_tm_predictor_8x8 neon sse2/;
274
275   add_proto qw/void vpx_highbd_dc_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
276   specialize qw/vpx_highbd_dc_predictor_8x8 neon sse2/;
277
278   add_proto qw/void vpx_highbd_dc_top_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
279   specialize qw/vpx_highbd_dc_top_predictor_8x8 neon sse2/;
280
281   add_proto qw/void vpx_highbd_dc_left_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
282   specialize qw/vpx_highbd_dc_left_predictor_8x8 neon sse2/;
283
284   add_proto qw/void vpx_highbd_dc_128_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
285   specialize qw/vpx_highbd_dc_128_predictor_8x8 neon sse2/;
286
287   add_proto qw/void vpx_highbd_d207_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
288   specialize qw/vpx_highbd_d207_predictor_16x16 ssse3/;
289
290   add_proto qw/void vpx_highbd_d45_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
291   specialize qw/vpx_highbd_d45_predictor_16x16 neon ssse3/;
292
293   add_proto qw/void vpx_highbd_d63_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
294   specialize qw/vpx_highbd_d63_predictor_16x16 ssse3/;
295
296   add_proto qw/void vpx_highbd_h_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
297   specialize qw/vpx_highbd_h_predictor_16x16 neon sse2/;
298
299   add_proto qw/void vpx_highbd_d117_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
300   specialize qw/vpx_highbd_d117_predictor_16x16 ssse3/;
301
302   add_proto qw/void vpx_highbd_d135_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
303   specialize qw/vpx_highbd_d135_predictor_16x16 neon ssse3/;
304
305   add_proto qw/void vpx_highbd_d153_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
306   specialize qw/vpx_highbd_d153_predictor_16x16 ssse3/;
307
308   add_proto qw/void vpx_highbd_v_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
309   specialize qw/vpx_highbd_v_predictor_16x16 neon sse2/;
310
311   add_proto qw/void vpx_highbd_tm_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
312   specialize qw/vpx_highbd_tm_predictor_16x16 neon sse2/;
313
314   add_proto qw/void vpx_highbd_dc_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
315   specialize qw/vpx_highbd_dc_predictor_16x16 neon sse2/;
316
317   add_proto qw/void vpx_highbd_dc_top_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
318   specialize qw/vpx_highbd_dc_top_predictor_16x16 neon sse2/;
319
320   add_proto qw/void vpx_highbd_dc_left_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
321   specialize qw/vpx_highbd_dc_left_predictor_16x16 neon sse2/;
322
323   add_proto qw/void vpx_highbd_dc_128_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
324   specialize qw/vpx_highbd_dc_128_predictor_16x16 neon sse2/;
325
326   add_proto qw/void vpx_highbd_d207_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
327   specialize qw/vpx_highbd_d207_predictor_32x32 ssse3/;
328
329   add_proto qw/void vpx_highbd_d45_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
330   specialize qw/vpx_highbd_d45_predictor_32x32 neon ssse3/;
331
332   add_proto qw/void vpx_highbd_d63_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
333   specialize qw/vpx_highbd_d63_predictor_32x32 ssse3/;
334
335   add_proto qw/void vpx_highbd_h_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
336   specialize qw/vpx_highbd_h_predictor_32x32 neon sse2/;
337
338   add_proto qw/void vpx_highbd_d117_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
339   specialize qw/vpx_highbd_d117_predictor_32x32 ssse3/;
340
341   add_proto qw/void vpx_highbd_d135_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
342   specialize qw/vpx_highbd_d135_predictor_32x32 neon ssse3/;
343
344   add_proto qw/void vpx_highbd_d153_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
345   specialize qw/vpx_highbd_d153_predictor_32x32 ssse3/;
346
347   add_proto qw/void vpx_highbd_v_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
348   specialize qw/vpx_highbd_v_predictor_32x32 neon sse2/;
349
350   add_proto qw/void vpx_highbd_tm_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
351   specialize qw/vpx_highbd_tm_predictor_32x32 neon sse2/;
352
353   add_proto qw/void vpx_highbd_dc_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
354   specialize qw/vpx_highbd_dc_predictor_32x32 neon sse2/;
355
356   add_proto qw/void vpx_highbd_dc_top_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
357   specialize qw/vpx_highbd_dc_top_predictor_32x32 neon sse2/;
358
359   add_proto qw/void vpx_highbd_dc_left_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
360   specialize qw/vpx_highbd_dc_left_predictor_32x32 neon sse2/;
361
362   add_proto qw/void vpx_highbd_dc_128_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd";
363   specialize qw/vpx_highbd_dc_128_predictor_32x32 neon sse2/;
364 }  # CONFIG_VP9_HIGHBITDEPTH
365
366 if (vpx_config("CONFIG_VP9") eq "yes") {
367 #
368 # Sub Pixel Filters
369 #
370 add_proto qw/void vpx_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
371 specialize qw/vpx_convolve_copy neon dspr2 msa sse2 vsx/;
372
373 add_proto qw/void vpx_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
374 specialize qw/vpx_convolve_avg neon dspr2 msa sse2 vsx mmi lsx/;
375
376 add_proto qw/void vpx_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
377 specialize qw/vpx_convolve8 sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/;
378
379 add_proto qw/void vpx_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
380 specialize qw/vpx_convolve8_horiz sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/;
381
382 add_proto qw/void vpx_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
383 specialize qw/vpx_convolve8_vert sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/;
384
385 add_proto qw/void vpx_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
386 specialize qw/vpx_convolve8_avg sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/;
387
388 add_proto qw/void vpx_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
389 specialize qw/vpx_convolve8_avg_horiz sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/;
390
391 add_proto qw/void vpx_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
392 specialize qw/vpx_convolve8_avg_vert sse2 ssse3 avx2 neon dspr2 msa vsx mmi/;
393
394 add_proto qw/void vpx_scaled_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
395 specialize qw/vpx_scaled_2d ssse3 neon msa/;
396
397 add_proto qw/void vpx_scaled_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
398
399 add_proto qw/void vpx_scaled_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
400
401 add_proto qw/void vpx_scaled_avg_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
402
403 add_proto qw/void vpx_scaled_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
404
405 add_proto qw/void vpx_scaled_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h";
406 } #CONFIG_VP9
407
408 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
409   #
410   # Sub Pixel Filters
411   #
412   add_proto qw/void vpx_highbd_convolve_copy/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
413   specialize qw/vpx_highbd_convolve_copy sse2 avx2 neon/;
414
415   add_proto qw/void vpx_highbd_convolve_avg/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
416   specialize qw/vpx_highbd_convolve_avg sse2 avx2 neon/;
417
418   add_proto qw/void vpx_highbd_convolve8/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
419   specialize qw/vpx_highbd_convolve8 avx2 neon/, "$sse2_x86_64";
420
421   add_proto qw/void vpx_highbd_convolve8_horiz/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
422   specialize qw/vpx_highbd_convolve8_horiz avx2 neon/, "$sse2_x86_64";
423
424   add_proto qw/void vpx_highbd_convolve8_vert/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
425   specialize qw/vpx_highbd_convolve8_vert avx2 neon/, "$sse2_x86_64";
426
427   add_proto qw/void vpx_highbd_convolve8_avg/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
428   specialize qw/vpx_highbd_convolve8_avg avx2 neon/, "$sse2_x86_64";
429
430   add_proto qw/void vpx_highbd_convolve8_avg_horiz/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
431   specialize qw/vpx_highbd_convolve8_avg_horiz avx2 neon/, "$sse2_x86_64";
432
433   add_proto qw/void vpx_highbd_convolve8_avg_vert/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd";
434   specialize qw/vpx_highbd_convolve8_avg_vert avx2 neon/, "$sse2_x86_64";
435 }  # CONFIG_VP9_HIGHBITDEPTH
436
437 if (vpx_config("CONFIG_VP9") eq "yes") {
438 #
439 # Loopfilter
440 #
441 add_proto qw/void vpx_lpf_vertical_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
442 specialize qw/vpx_lpf_vertical_16 sse2 neon dspr2 msa/;
443
444 add_proto qw/void vpx_lpf_vertical_16_dual/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
445 specialize qw/vpx_lpf_vertical_16_dual sse2 neon dspr2 msa lsx/;
446
447 add_proto qw/void vpx_lpf_vertical_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
448 specialize qw/vpx_lpf_vertical_8 sse2 neon dspr2 msa lsx/;
449
450 add_proto qw/void vpx_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";
451 specialize qw/vpx_lpf_vertical_8_dual sse2 neon dspr2 msa lsx/;
452
453 add_proto qw/void vpx_lpf_vertical_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
454 specialize qw/vpx_lpf_vertical_4 sse2 neon dspr2 msa/;
455
456 add_proto qw/void vpx_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";
457 specialize qw/vpx_lpf_vertical_4_dual sse2 neon dspr2 msa/;
458
459 add_proto qw/void vpx_lpf_horizontal_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
460 specialize qw/vpx_lpf_horizontal_16 sse2 avx2 neon dspr2 msa/;
461
462 add_proto qw/void vpx_lpf_horizontal_16_dual/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
463 specialize qw/vpx_lpf_horizontal_16_dual sse2 avx2 neon dspr2 msa lsx/;
464
465 add_proto qw/void vpx_lpf_horizontal_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
466 specialize qw/vpx_lpf_horizontal_8 sse2 neon dspr2 msa lsx/;
467
468 add_proto qw/void vpx_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";
469 specialize qw/vpx_lpf_horizontal_8_dual sse2 neon dspr2 msa lsx/;
470
471 add_proto qw/void vpx_lpf_horizontal_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh";
472 specialize qw/vpx_lpf_horizontal_4 sse2 neon dspr2 msa/;
473
474 add_proto qw/void vpx_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";
475 specialize qw/vpx_lpf_horizontal_4_dual sse2 neon dspr2 msa/;
476 } #CONFIG_VP9
477
478 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
479   add_proto qw/void vpx_highbd_lpf_vertical_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
480   specialize qw/vpx_highbd_lpf_vertical_16 sse2 neon/;
481
482   add_proto qw/void vpx_highbd_lpf_vertical_16_dual/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
483   specialize qw/vpx_highbd_lpf_vertical_16_dual sse2 neon/;
484
485   add_proto qw/void vpx_highbd_lpf_vertical_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
486   specialize qw/vpx_highbd_lpf_vertical_8 sse2 neon/;
487
488   add_proto qw/void vpx_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";
489   specialize qw/vpx_highbd_lpf_vertical_8_dual sse2 neon/;
490
491   add_proto qw/void vpx_highbd_lpf_vertical_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
492   specialize qw/vpx_highbd_lpf_vertical_4 sse2 neon/;
493
494   add_proto qw/void vpx_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";
495   specialize qw/vpx_highbd_lpf_vertical_4_dual sse2 neon/;
496
497   add_proto qw/void vpx_highbd_lpf_horizontal_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
498   specialize qw/vpx_highbd_lpf_horizontal_16 sse2 neon/;
499
500   add_proto qw/void vpx_highbd_lpf_horizontal_16_dual/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
501   specialize qw/vpx_highbd_lpf_horizontal_16_dual sse2 neon/;
502
503   add_proto qw/void vpx_highbd_lpf_horizontal_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
504   specialize qw/vpx_highbd_lpf_horizontal_8 sse2 neon/;
505
506   add_proto qw/void vpx_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";
507   specialize qw/vpx_highbd_lpf_horizontal_8_dual sse2 neon/;
508
509   add_proto qw/void vpx_highbd_lpf_horizontal_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd";
510   specialize qw/vpx_highbd_lpf_horizontal_4 sse2 neon/;
511
512   add_proto qw/void vpx_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";
513   specialize qw/vpx_highbd_lpf_horizontal_4_dual sse2 neon/;
514 }  # CONFIG_VP9_HIGHBITDEPTH
515
516 #
517 # Encoder functions.
518 #
519
520 #
521 # Forward transform
522 #
523 if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") {
524 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
525   add_proto qw/void vpx_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
526   specialize qw/vpx_fdct4x4 neon sse2/;
527
528   add_proto qw/void vpx_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
529   specialize qw/vpx_fdct4x4_1 sse2 neon/;
530
531   add_proto qw/void vpx_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
532   specialize qw/vpx_fdct8x8 neon sse2/;
533
534   add_proto qw/void vpx_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
535   specialize qw/vpx_fdct8x8_1 neon sse2 msa/;
536
537   add_proto qw/void vpx_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
538   specialize qw/vpx_fdct16x16 neon sse2/;
539
540   add_proto qw/void vpx_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
541   specialize qw/vpx_fdct16x16_1 sse2 neon/;
542
543   add_proto qw/void vpx_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
544   specialize qw/vpx_fdct32x32 neon sse2/;
545
546   add_proto qw/void vpx_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
547   specialize qw/vpx_fdct32x32_rd neon sse2/;
548
549   add_proto qw/void vpx_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
550   specialize qw/vpx_fdct32x32_1 sse2 neon/;
551
552   add_proto qw/void vpx_highbd_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
553   specialize qw/vpx_highbd_fdct4x4 sse2/;
554
555   add_proto qw/void vpx_highbd_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
556   specialize qw/vpx_highbd_fdct8x8 sse2/;
557
558   add_proto qw/void vpx_highbd_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
559   specialize qw/vpx_highbd_fdct8x8_1 neon/;
560   $vpx_highbd_fdct8x8_1_neon=vpx_fdct8x8_1_neon;
561
562   add_proto qw/void vpx_highbd_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
563   specialize qw/vpx_highbd_fdct16x16 sse2/;
564
565   add_proto qw/void vpx_highbd_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
566
567   add_proto qw/void vpx_highbd_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
568   specialize qw/vpx_highbd_fdct32x32 sse2/;
569
570   add_proto qw/void vpx_highbd_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
571   specialize qw/vpx_highbd_fdct32x32_rd sse2/;
572
573   add_proto qw/void vpx_highbd_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
574 } else {
575   add_proto qw/void vpx_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride";
576   specialize qw/vpx_fdct4x4 neon sse2 msa/;
577
578   add_proto qw/void vpx_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride";
579   specialize qw/vpx_fdct4x4_1 sse2 neon/;
580
581   add_proto qw/void vpx_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride";
582   specialize qw/vpx_fdct8x8 sse2 neon msa/, "$ssse3_x86_64";
583
584   add_proto qw/void vpx_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride";
585   specialize qw/vpx_fdct8x8_1 sse2 neon msa/;
586
587   add_proto qw/void vpx_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride";
588   specialize qw/vpx_fdct16x16 neon sse2 msa/;
589
590   add_proto qw/void vpx_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride";
591   specialize qw/vpx_fdct16x16_1 sse2 neon msa/;
592
593   add_proto qw/void vpx_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride";
594   specialize qw/vpx_fdct32x32 neon sse2 avx2 msa lsx/;
595
596   add_proto qw/void vpx_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride";
597   specialize qw/vpx_fdct32x32_rd sse2 avx2 neon msa vsx lsx/;
598
599   add_proto qw/void vpx_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride";
600   specialize qw/vpx_fdct32x32_1 sse2 neon msa/;
601 }  # CONFIG_VP9_HIGHBITDEPTH
602 }  # CONFIG_VP9_ENCODER
603
604 #
605 # Inverse transform
606 if (vpx_config("CONFIG_VP9") eq "yes") {
607
608 add_proto qw/void vpx_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int stride";
609 add_proto qw/void vpx_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int stride";
610 add_proto qw/void vpx_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int stride";
611 add_proto qw/void vpx_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int stride";
612 add_proto qw/void vpx_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int stride";
613 add_proto qw/void vpx_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int stride";
614 add_proto qw/void vpx_idct16x16_38_add/, "const tran_low_t *input, uint8_t *dest, int stride";
615 add_proto qw/void vpx_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int stride";
616 add_proto qw/void vpx_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int stride";
617 add_proto qw/void vpx_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int stride";
618 add_proto qw/void vpx_idct32x32_135_add/, "const tran_low_t *input, uint8_t *dest, int stride";
619 add_proto qw/void vpx_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int stride";
620 add_proto qw/void vpx_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int stride";
621 add_proto qw/void vpx_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int stride";
622 add_proto qw/void vpx_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int stride";
623
624 if (vpx_config("CONFIG_EMULATE_HARDWARE") ne "yes") {
625   # Note that there are more specializations appended when
626   # CONFIG_VP9_HIGHBITDEPTH is off.
627   specialize qw/vpx_idct4x4_16_add neon sse2 vsx/;
628   specialize qw/vpx_idct4x4_1_add neon sse2/;
629   specialize qw/vpx_idct8x8_64_add neon sse2 vsx/;
630   specialize qw/vpx_idct8x8_12_add neon sse2 ssse3/;
631   specialize qw/vpx_idct8x8_1_add neon sse2/;
632   specialize qw/vpx_idct16x16_256_add neon sse2 vsx/;
633   specialize qw/vpx_idct16x16_38_add neon sse2/;
634   specialize qw/vpx_idct16x16_10_add neon sse2/;
635   specialize qw/vpx_idct16x16_1_add neon sse2/;
636   specialize qw/vpx_idct32x32_1024_add neon sse2 vsx/;
637   specialize qw/vpx_idct32x32_135_add neon sse2 ssse3/;
638   specialize qw/vpx_idct32x32_34_add neon sse2 ssse3/;
639   specialize qw/vpx_idct32x32_1_add neon sse2/;
640   specialize qw/vpx_iwht4x4_16_add sse2 vsx/;
641
642   if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") ne "yes") {
643     # Note that these specializations are appended to the above ones.
644     specialize qw/vpx_idct4x4_16_add dspr2 msa/;
645     specialize qw/vpx_idct4x4_1_add dspr2 msa/;
646     specialize qw/vpx_idct8x8_64_add dspr2 msa/;
647     specialize qw/vpx_idct8x8_12_add dspr2 msa/;
648     specialize qw/vpx_idct8x8_1_add dspr2 msa/;
649     specialize qw/vpx_idct16x16_256_add dspr2 msa/;
650     specialize qw/vpx_idct16x16_38_add dspr2 msa/;
651     $vpx_idct16x16_38_add_dspr2=vpx_idct16x16_256_add_dspr2;
652     $vpx_idct16x16_38_add_msa=vpx_idct16x16_256_add_msa;
653     specialize qw/vpx_idct16x16_10_add dspr2 msa/;
654     specialize qw/vpx_idct16x16_1_add dspr2 msa/;
655     specialize qw/vpx_idct32x32_1024_add dspr2 msa lsx/;
656     specialize qw/vpx_idct32x32_135_add dspr2 msa/;
657     $vpx_idct32x32_135_add_dspr2=vpx_idct32x32_1024_add_dspr2;
658     $vpx_idct32x32_135_add_msa=vpx_idct32x32_1024_add_msa;
659     specialize qw/vpx_idct32x32_34_add dspr2 msa lsx/;
660     specialize qw/vpx_idct32x32_1_add dspr2 msa lsx/;
661     specialize qw/vpx_iwht4x4_16_add msa/;
662     specialize qw/vpx_iwht4x4_1_add msa/;
663   } # !CONFIG_VP9_HIGHBITDEPTH
664 }  # !CONFIG_EMULATE_HARDWARE
665
666 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
667   # Note as optimized versions of these functions are added we need to add a check to ensure
668   # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only.
669
670   add_proto qw/void vpx_highbd_idct4x4_16_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
671   add_proto qw/void vpx_highbd_idct4x4_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
672   specialize qw/vpx_highbd_idct4x4_1_add neon sse2/;
673
674   add_proto qw/void vpx_highbd_idct8x8_64_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
675   add_proto qw/void vpx_highbd_idct8x8_12_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
676   add_proto qw/void vpx_highbd_idct8x8_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
677   specialize qw/vpx_highbd_idct8x8_1_add neon sse2/;
678
679   add_proto qw/void vpx_highbd_idct16x16_256_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
680   add_proto qw/void vpx_highbd_idct16x16_38_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
681   add_proto qw/void vpx_highbd_idct16x16_10_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
682   add_proto qw/void vpx_highbd_idct16x16_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
683   specialize qw/vpx_highbd_idct16x16_1_add neon sse2/;
684
685   add_proto qw/void vpx_highbd_idct32x32_1024_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
686   add_proto qw/void vpx_highbd_idct32x32_135_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
687   add_proto qw/void vpx_highbd_idct32x32_34_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
688   add_proto qw/void vpx_highbd_idct32x32_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
689   specialize qw/vpx_highbd_idct32x32_1_add neon sse2/;
690
691   add_proto qw/void vpx_highbd_iwht4x4_16_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
692   add_proto qw/void vpx_highbd_iwht4x4_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd";
693
694   if (vpx_config("CONFIG_EMULATE_HARDWARE") ne "yes") {
695     specialize qw/vpx_highbd_idct4x4_16_add neon sse2 sse4_1/;
696     specialize qw/vpx_highbd_idct8x8_64_add neon sse2 sse4_1/;
697     specialize qw/vpx_highbd_idct8x8_12_add neon sse2 sse4_1/;
698     specialize qw/vpx_highbd_idct16x16_256_add neon sse2 sse4_1/;
699     specialize qw/vpx_highbd_idct16x16_38_add neon sse2 sse4_1/;
700     specialize qw/vpx_highbd_idct16x16_10_add neon sse2 sse4_1/;
701     specialize qw/vpx_highbd_idct32x32_1024_add neon sse2 sse4_1/;
702     specialize qw/vpx_highbd_idct32x32_135_add neon sse2 sse4_1/;
703     specialize qw/vpx_highbd_idct32x32_34_add neon sse2 sse4_1/;
704   }  # !CONFIG_EMULATE_HARDWARE
705 }  # CONFIG_VP9_HIGHBITDEPTH
706 }  # CONFIG_VP9
707
708 #
709 # Quantization
710 #
711 if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") {
712   add_proto qw/void vpx_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
713   specialize qw/vpx_quantize_b neon sse2 ssse3 avx vsx/;
714
715   add_proto qw/void vpx_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
716   specialize qw/vpx_quantize_b_32x32 neon ssse3 avx vsx/;
717
718   if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
719     add_proto qw/void vpx_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
720     specialize qw/vpx_highbd_quantize_b sse2/;
721
722     add_proto qw/void vpx_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, 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, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan";
723     specialize qw/vpx_highbd_quantize_b_32x32 sse2/;
724   }  # CONFIG_VP9_HIGHBITDEPTH
725 }  # CONFIG_VP9_ENCODER
726
727 if (vpx_config("CONFIG_ENCODERS") eq "yes") {
728 #
729 # Block subtraction
730 #
731 add_proto qw/void vpx_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";
732 specialize qw/vpx_subtract_block neon msa mmi sse2 vsx/;
733
734 #
735 # Single block SAD
736 #
737 add_proto qw/unsigned int vpx_sad64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
738 specialize qw/vpx_sad64x64 neon avx2 msa sse2 vsx mmi lsx/;
739
740 add_proto qw/unsigned int vpx_sad64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
741 specialize qw/vpx_sad64x32 neon avx2 msa sse2 vsx mmi/;
742
743 add_proto qw/unsigned int vpx_sad32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
744 specialize qw/vpx_sad32x64 neon avx2 msa sse2 vsx mmi/;
745
746 add_proto qw/unsigned int vpx_sad32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
747 specialize qw/vpx_sad32x32 neon avx2 msa sse2 vsx mmi lsx/;
748
749 add_proto qw/unsigned int vpx_sad32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
750 specialize qw/vpx_sad32x16 neon avx2 msa sse2 vsx mmi/;
751
752 add_proto qw/unsigned int vpx_sad16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
753 specialize qw/vpx_sad16x32 neon msa sse2 vsx mmi/;
754
755 add_proto qw/unsigned int vpx_sad16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
756 specialize qw/vpx_sad16x16 neon msa sse2 vsx mmi/;
757
758 add_proto qw/unsigned int vpx_sad16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
759 specialize qw/vpx_sad16x8 neon msa sse2 vsx mmi/;
760
761 add_proto qw/unsigned int vpx_sad8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
762 specialize qw/vpx_sad8x16 neon msa sse2 vsx mmi/;
763
764 add_proto qw/unsigned int vpx_sad8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
765 specialize qw/vpx_sad8x8 neon msa sse2 vsx mmi/;
766
767 add_proto qw/unsigned int vpx_sad8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
768 specialize qw/vpx_sad8x4 neon msa sse2 vsx mmi/;
769
770 add_proto qw/unsigned int vpx_sad4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
771 specialize qw/vpx_sad4x8 neon msa sse2 mmi/;
772
773 add_proto qw/unsigned int vpx_sad4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
774 specialize qw/vpx_sad4x4 neon msa sse2 mmi/;
775
776 #
777 # Avg
778 #
779 if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") {
780   add_proto qw/unsigned int vpx_avg_8x8/, "const uint8_t *, int p";
781   specialize qw/vpx_avg_8x8 sse2 neon msa/;
782
783   add_proto qw/unsigned int vpx_avg_4x4/, "const uint8_t *, int p";
784   specialize qw/vpx_avg_4x4 sse2 neon msa/;
785
786   add_proto qw/void vpx_minmax_8x8/, "const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max";
787   specialize qw/vpx_minmax_8x8 sse2 neon msa/;
788
789   if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
790     add_proto qw/void vpx_hadamard_8x8/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
791     specialize qw/vpx_hadamard_8x8 sse2 neon vsx/, "$ssse3_x86_64";
792
793     add_proto qw/void vpx_hadamard_16x16/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
794     specialize qw/vpx_hadamard_16x16 avx2 sse2 neon vsx/;
795
796     add_proto qw/void vpx_hadamard_32x32/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
797     specialize qw/vpx_hadamard_32x32 sse2 avx2/;
798
799     add_proto qw/void vpx_highbd_hadamard_8x8/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
800     specialize qw/vpx_highbd_hadamard_8x8 avx2/;
801
802     add_proto qw/void vpx_highbd_hadamard_16x16/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
803     specialize qw/vpx_highbd_hadamard_16x16 avx2/;
804
805     add_proto qw/void vpx_highbd_hadamard_32x32/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff";
806     specialize qw/vpx_highbd_hadamard_32x32 avx2/;
807
808     add_proto qw/int vpx_satd/, "const tran_low_t *coeff, int length";
809     specialize qw/vpx_satd avx2 sse2 neon/;
810
811     add_proto qw/int vpx_highbd_satd/, "const tran_low_t *coeff, int length";
812     specialize qw/vpx_highbd_satd avx2/;
813   } else {
814     add_proto qw/void vpx_hadamard_8x8/, "const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff";
815     specialize qw/vpx_hadamard_8x8 sse2 neon msa vsx/, "$ssse3_x86_64";
816
817     add_proto qw/void vpx_hadamard_16x16/, "const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff";
818     specialize qw/vpx_hadamard_16x16 avx2 sse2 neon msa vsx/;
819
820     add_proto qw/void vpx_hadamard_32x32/, "const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff";
821     specialize qw/vpx_hadamard_32x32 sse2 avx2/;
822
823     add_proto qw/int vpx_satd/, "const int16_t *coeff, int length";
824     specialize qw/vpx_satd avx2 sse2 neon msa/;
825   }
826
827   add_proto qw/void vpx_int_pro_row/, "int16_t hbuf[16], const uint8_t *ref, const int ref_stride, const int height";
828   specialize qw/vpx_int_pro_row sse2 neon msa/;
829
830   add_proto qw/int16_t vpx_int_pro_col/, "const uint8_t *ref, const int width";
831   specialize qw/vpx_int_pro_col sse2 neon msa/;
832
833   add_proto qw/int vpx_vector_var/, "const int16_t *ref, const int16_t *src, const int bwl";
834   specialize qw/vpx_vector_var neon sse2 msa/;
835 }  # CONFIG_VP9_ENCODER
836
837 add_proto qw/unsigned int vpx_sad64x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
838 specialize qw/vpx_sad64x64_avg neon avx2 msa sse2 vsx mmi/;
839
840 add_proto qw/unsigned int vpx_sad64x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
841 specialize qw/vpx_sad64x32_avg neon avx2 msa sse2 vsx mmi/;
842
843 add_proto qw/unsigned int vpx_sad32x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
844 specialize qw/vpx_sad32x64_avg neon avx2 msa sse2 vsx mmi/;
845
846 add_proto qw/unsigned int vpx_sad32x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
847 specialize qw/vpx_sad32x32_avg neon avx2 msa sse2 vsx mmi/;
848
849 add_proto qw/unsigned int vpx_sad32x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
850 specialize qw/vpx_sad32x16_avg neon avx2 msa sse2 vsx mmi/;
851
852 add_proto qw/unsigned int vpx_sad16x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
853 specialize qw/vpx_sad16x32_avg neon msa sse2 vsx mmi/;
854
855 add_proto qw/unsigned int vpx_sad16x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
856 specialize qw/vpx_sad16x16_avg neon msa sse2 vsx mmi/;
857
858 add_proto qw/unsigned int vpx_sad16x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
859 specialize qw/vpx_sad16x8_avg neon msa sse2 vsx mmi/;
860
861 add_proto qw/unsigned int vpx_sad8x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
862 specialize qw/vpx_sad8x16_avg neon msa sse2 mmi/;
863
864 add_proto qw/unsigned int vpx_sad8x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
865 specialize qw/vpx_sad8x8_avg neon msa sse2 mmi/;
866
867 add_proto qw/unsigned int vpx_sad8x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
868 specialize qw/vpx_sad8x4_avg neon msa sse2 mmi/;
869
870 add_proto qw/unsigned int vpx_sad4x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
871 specialize qw/vpx_sad4x8_avg neon msa sse2 mmi/;
872
873 add_proto qw/unsigned int vpx_sad4x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
874 specialize qw/vpx_sad4x4_avg neon msa sse2 mmi/;
875
876 #
877 # Multi-block SAD, comparing a reference to N independent blocks
878 #
879 add_proto qw/void vpx_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
880 specialize qw/vpx_sad64x64x4d avx512 avx2 neon msa sse2 vsx mmi lsx/;
881
882 add_proto qw/void vpx_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
883 specialize qw/vpx_sad64x32x4d neon msa sse2 vsx mmi/;
884
885 add_proto qw/void vpx_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
886 specialize qw/vpx_sad32x64x4d neon msa sse2 vsx mmi/;
887
888 add_proto qw/void vpx_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
889 specialize qw/vpx_sad32x32x4d avx2 neon msa sse2 vsx mmi lsx/;
890
891 add_proto qw/void vpx_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
892 specialize qw/vpx_sad32x16x4d neon msa sse2 vsx mmi/;
893
894 add_proto qw/void vpx_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
895 specialize qw/vpx_sad16x32x4d neon msa sse2 vsx mmi/;
896
897 add_proto qw/void vpx_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
898 specialize qw/vpx_sad16x16x4d neon msa sse2 vsx mmi lsx/;
899
900 add_proto qw/void vpx_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
901 specialize qw/vpx_sad16x8x4d neon msa sse2 vsx mmi/;
902
903 add_proto qw/void vpx_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
904 specialize qw/vpx_sad8x16x4d neon msa sse2 mmi/;
905
906 add_proto qw/void vpx_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
907 specialize qw/vpx_sad8x8x4d neon msa sse2 mmi/;
908
909 add_proto qw/void vpx_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
910 specialize qw/vpx_sad8x4x4d neon msa sse2 mmi/;
911
912 add_proto qw/void vpx_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
913 specialize qw/vpx_sad4x8x4d neon msa sse2 mmi/;
914
915 add_proto qw/void vpx_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]";
916 specialize qw/vpx_sad4x4x4d neon msa sse2 mmi/;
917
918 add_proto qw/uint64_t vpx_sum_squares_2d_i16/, "const int16_t *src, int stride, int size";
919 specialize qw/vpx_sum_squares_2d_i16 neon sse2 msa/;
920
921 #
922 # Structured Similarity (SSIM)
923 #
924 if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
925     add_proto qw/void vpx_ssim_parms_8x8/, "const uint8_t *s, int sp, const uint8_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";
926     specialize qw/vpx_ssim_parms_8x8/, "$sse2_x86_64";
927
928     add_proto qw/void vpx_ssim_parms_16x16/, "const uint8_t *s, int sp, const uint8_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";
929     specialize qw/vpx_ssim_parms_16x16/, "$sse2_x86_64";
930 }
931
932 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
933   #
934   # Block subtraction
935   #
936   add_proto qw/void vpx_highbd_subtract_block/, "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src8_ptr, ptrdiff_t src_stride, const uint8_t *pred8_ptr, ptrdiff_t pred_stride, int bd";
937
938   #
939   # Single block SAD
940   #
941   add_proto qw/unsigned int vpx_highbd_sad64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
942   specialize qw/vpx_highbd_sad64x64 sse2/;
943
944   add_proto qw/unsigned int vpx_highbd_sad64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
945   specialize qw/vpx_highbd_sad64x32 sse2/;
946
947   add_proto qw/unsigned int vpx_highbd_sad32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
948   specialize qw/vpx_highbd_sad32x64 sse2/;
949
950   add_proto qw/unsigned int vpx_highbd_sad32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
951   specialize qw/vpx_highbd_sad32x32 sse2/;
952
953   add_proto qw/unsigned int vpx_highbd_sad32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
954   specialize qw/vpx_highbd_sad32x16 sse2/;
955
956   add_proto qw/unsigned int vpx_highbd_sad16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
957   specialize qw/vpx_highbd_sad16x32 sse2/;
958
959   add_proto qw/unsigned int vpx_highbd_sad16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
960   specialize qw/vpx_highbd_sad16x16 sse2/;
961
962   add_proto qw/unsigned int vpx_highbd_sad16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
963   specialize qw/vpx_highbd_sad16x8 sse2/;
964
965   add_proto qw/unsigned int vpx_highbd_sad8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
966   specialize qw/vpx_highbd_sad8x16 sse2/;
967
968   add_proto qw/unsigned int vpx_highbd_sad8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
969   specialize qw/vpx_highbd_sad8x8 sse2/;
970
971   add_proto qw/unsigned int vpx_highbd_sad8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
972   specialize qw/vpx_highbd_sad8x4 sse2/;
973
974   add_proto qw/unsigned int vpx_highbd_sad4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
975
976   add_proto qw/unsigned int vpx_highbd_sad4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride";
977
978   #
979   # Avg
980   #
981   add_proto qw/unsigned int vpx_highbd_avg_8x8/, "const uint8_t *s8, int p";
982   specialize qw/vpx_highbd_avg_8x8 sse2/;
983
984   add_proto qw/unsigned int vpx_highbd_avg_4x4/, "const uint8_t *s8, int p";
985   specialize qw/vpx_highbd_avg_4x4 sse2/;
986
987   add_proto qw/void vpx_highbd_minmax_8x8/, "const uint8_t *s8, int p, const uint8_t *d8, int dp, int *min, int *max";
988
989   add_proto qw/unsigned int vpx_highbd_sad64x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
990   specialize qw/vpx_highbd_sad64x64_avg sse2/;
991
992   add_proto qw/unsigned int vpx_highbd_sad64x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
993   specialize qw/vpx_highbd_sad64x32_avg sse2/;
994
995   add_proto qw/unsigned int vpx_highbd_sad32x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
996   specialize qw/vpx_highbd_sad32x64_avg sse2/;
997
998   add_proto qw/unsigned int vpx_highbd_sad32x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
999   specialize qw/vpx_highbd_sad32x32_avg sse2/;
1000
1001   add_proto qw/unsigned int vpx_highbd_sad32x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1002   specialize qw/vpx_highbd_sad32x16_avg sse2/;
1003
1004   add_proto qw/unsigned int vpx_highbd_sad16x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1005   specialize qw/vpx_highbd_sad16x32_avg sse2/;
1006
1007   add_proto qw/unsigned int vpx_highbd_sad16x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1008   specialize qw/vpx_highbd_sad16x16_avg sse2/;
1009
1010   add_proto qw/unsigned int vpx_highbd_sad16x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1011   specialize qw/vpx_highbd_sad16x8_avg sse2/;
1012
1013   add_proto qw/unsigned int vpx_highbd_sad8x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1014   specialize qw/vpx_highbd_sad8x16_avg sse2/;
1015
1016   add_proto qw/unsigned int vpx_highbd_sad8x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1017   specialize qw/vpx_highbd_sad8x8_avg sse2/;
1018
1019   add_proto qw/unsigned int vpx_highbd_sad8x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1020   specialize qw/vpx_highbd_sad8x4_avg sse2/;
1021
1022   add_proto qw/unsigned int vpx_highbd_sad4x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1023
1024   add_proto qw/unsigned int vpx_highbd_sad4x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred";
1025
1026   #
1027   # Multi-block SAD, comparing a reference to N independent blocks
1028   #
1029   add_proto qw/void vpx_highbd_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1030   specialize qw/vpx_highbd_sad64x64x4d sse2/;
1031
1032   add_proto qw/void vpx_highbd_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1033   specialize qw/vpx_highbd_sad64x32x4d sse2/;
1034
1035   add_proto qw/void vpx_highbd_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1036   specialize qw/vpx_highbd_sad32x64x4d sse2/;
1037
1038   add_proto qw/void vpx_highbd_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1039   specialize qw/vpx_highbd_sad32x32x4d sse2/;
1040
1041   add_proto qw/void vpx_highbd_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1042   specialize qw/vpx_highbd_sad32x16x4d sse2/;
1043
1044   add_proto qw/void vpx_highbd_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1045   specialize qw/vpx_highbd_sad16x32x4d sse2/;
1046
1047   add_proto qw/void vpx_highbd_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1048   specialize qw/vpx_highbd_sad16x16x4d sse2/;
1049
1050   add_proto qw/void vpx_highbd_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1051   specialize qw/vpx_highbd_sad16x8x4d sse2/;
1052
1053   add_proto qw/void vpx_highbd_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1054   specialize qw/vpx_highbd_sad8x16x4d sse2/;
1055
1056   add_proto qw/void vpx_highbd_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1057   specialize qw/vpx_highbd_sad8x8x4d sse2/;
1058
1059   add_proto qw/void vpx_highbd_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1060   specialize qw/vpx_highbd_sad8x4x4d sse2/;
1061
1062   add_proto qw/void vpx_highbd_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1063   specialize qw/vpx_highbd_sad4x8x4d sse2/;
1064
1065   add_proto qw/void vpx_highbd_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]";
1066   specialize qw/vpx_highbd_sad4x4x4d sse2/;
1067
1068   #
1069   # Structured Similarity (SSIM)
1070   #
1071   if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") {
1072     add_proto qw/void vpx_highbd_ssim_parms_8x8/, "const uint16_t *s, int sp, const 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";
1073   }
1074 }  # CONFIG_VP9_HIGHBITDEPTH
1075 }  # CONFIG_ENCODERS
1076
1077 if (vpx_config("CONFIG_ENCODERS") eq "yes" || vpx_config("CONFIG_POSTPROC") eq "yes" || vpx_config("CONFIG_VP9_POSTPROC") eq "yes") {
1078
1079 #
1080 # Variance
1081 #
1082 add_proto qw/unsigned int vpx_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1083   specialize qw/vpx_variance64x64 sse2 avx2 neon msa mmi vsx lsx/;
1084
1085 add_proto qw/unsigned int vpx_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1086   specialize qw/vpx_variance64x32 sse2 avx2 neon msa mmi vsx/;
1087
1088 add_proto qw/unsigned int vpx_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1089   specialize qw/vpx_variance32x64 sse2 avx2 neon msa mmi vsx/;
1090
1091 add_proto qw/unsigned int vpx_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1092   specialize qw/vpx_variance32x32 sse2 avx2 neon msa mmi vsx lsx/;
1093
1094 add_proto qw/unsigned int vpx_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1095   specialize qw/vpx_variance32x16 sse2 avx2 neon msa mmi vsx/;
1096
1097 add_proto qw/unsigned int vpx_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1098   specialize qw/vpx_variance16x32 sse2 avx2 neon msa mmi vsx/;
1099
1100 add_proto qw/unsigned int vpx_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1101   specialize qw/vpx_variance16x16 sse2 avx2 neon msa mmi vsx/;
1102
1103 add_proto qw/unsigned int vpx_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1104   specialize qw/vpx_variance16x8 sse2 avx2 neon msa mmi vsx/;
1105
1106 add_proto qw/unsigned int vpx_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1107   specialize qw/vpx_variance8x16 sse2 neon msa mmi vsx/;
1108
1109 add_proto qw/unsigned int vpx_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1110   specialize qw/vpx_variance8x8 sse2 neon msa mmi vsx/;
1111
1112 add_proto qw/unsigned int vpx_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1113   specialize qw/vpx_variance8x4 sse2 neon msa mmi vsx/;
1114
1115 add_proto qw/unsigned int vpx_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1116   specialize qw/vpx_variance4x8 sse2 neon msa mmi vsx/;
1117
1118 add_proto qw/unsigned int vpx_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1119   specialize qw/vpx_variance4x4 sse2 neon msa mmi vsx/;
1120
1121 #
1122 # Specialty Variance
1123 #
1124 add_proto qw/void vpx_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1125   specialize qw/vpx_get16x16var sse2 avx2 neon msa vsx/;
1126
1127 add_proto qw/void vpx_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1128   specialize qw/vpx_get8x8var sse2 neon msa vsx/;
1129
1130 add_proto qw/unsigned int vpx_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1131   specialize qw/vpx_mse16x16 sse2 avx2 neon msa mmi vsx/;
1132
1133 add_proto qw/unsigned int vpx_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1134   specialize qw/vpx_mse16x8 sse2 avx2 msa mmi vsx/;
1135
1136 add_proto qw/unsigned int vpx_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1137   specialize qw/vpx_mse8x16 sse2 msa mmi vsx/;
1138
1139 add_proto qw/unsigned int vpx_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1140   specialize qw/vpx_mse8x8 sse2 msa mmi vsx/;
1141
1142 add_proto qw/unsigned int vpx_get_mb_ss/, "const int16_t *";
1143   specialize qw/vpx_get_mb_ss sse2 msa vsx/;
1144
1145 add_proto qw/unsigned int vpx_get4x4sse_cs/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride";
1146   specialize qw/vpx_get4x4sse_cs neon msa vsx/;
1147
1148 add_proto qw/void vpx_comp_avg_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride";
1149   specialize qw/vpx_comp_avg_pred neon sse2 vsx/;
1150
1151 #
1152 # Subpixel Variance
1153 #
1154 add_proto qw/uint32_t vpx_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1155   specialize qw/vpx_sub_pixel_variance64x64 avx2 neon msa mmi sse2 ssse3/;
1156
1157 add_proto qw/uint32_t vpx_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1158   specialize qw/vpx_sub_pixel_variance64x32 neon msa mmi sse2 ssse3/;
1159
1160 add_proto qw/uint32_t vpx_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1161   specialize qw/vpx_sub_pixel_variance32x64 neon msa mmi sse2 ssse3/;
1162
1163 add_proto qw/uint32_t vpx_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1164   specialize qw/vpx_sub_pixel_variance32x32 avx2 neon msa mmi sse2 ssse3/;
1165
1166 add_proto qw/uint32_t vpx_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1167   specialize qw/vpx_sub_pixel_variance32x16 neon msa mmi sse2 ssse3/;
1168
1169 add_proto qw/uint32_t vpx_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1170   specialize qw/vpx_sub_pixel_variance16x32 neon msa mmi sse2 ssse3/;
1171
1172 add_proto qw/uint32_t vpx_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1173   specialize qw/vpx_sub_pixel_variance16x16 neon msa mmi sse2 ssse3/;
1174
1175 add_proto qw/uint32_t vpx_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1176   specialize qw/vpx_sub_pixel_variance16x8 neon msa mmi sse2 ssse3/;
1177
1178 add_proto qw/uint32_t vpx_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1179   specialize qw/vpx_sub_pixel_variance8x16 neon msa mmi sse2 ssse3/;
1180
1181 add_proto qw/uint32_t vpx_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1182   specialize qw/vpx_sub_pixel_variance8x8 neon msa mmi sse2 ssse3/;
1183
1184 add_proto qw/uint32_t vpx_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1185   specialize qw/vpx_sub_pixel_variance8x4 neon msa mmi sse2 ssse3/;
1186
1187 add_proto qw/uint32_t vpx_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1188   specialize qw/vpx_sub_pixel_variance4x8 neon msa mmi sse2 ssse3/;
1189
1190 add_proto qw/uint32_t vpx_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1191   specialize qw/vpx_sub_pixel_variance4x4 neon msa mmi sse2 ssse3/;
1192
1193 add_proto qw/uint32_t vpx_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1194   specialize qw/vpx_sub_pixel_avg_variance64x64 neon avx2 msa mmi sse2 ssse3/;
1195
1196 add_proto qw/uint32_t vpx_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1197   specialize qw/vpx_sub_pixel_avg_variance64x32 neon msa mmi sse2 ssse3/;
1198
1199 add_proto qw/uint32_t vpx_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1200   specialize qw/vpx_sub_pixel_avg_variance32x64 neon msa mmi sse2 ssse3/;
1201
1202 add_proto qw/uint32_t vpx_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1203   specialize qw/vpx_sub_pixel_avg_variance32x32 neon avx2 msa mmi sse2 ssse3/;
1204
1205 add_proto qw/uint32_t vpx_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1206   specialize qw/vpx_sub_pixel_avg_variance32x16 neon msa mmi sse2 ssse3/;
1207
1208 add_proto qw/uint32_t vpx_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1209   specialize qw/vpx_sub_pixel_avg_variance16x32 neon msa mmi sse2 ssse3/;
1210
1211 add_proto qw/uint32_t vpx_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1212   specialize qw/vpx_sub_pixel_avg_variance16x16 neon msa mmi sse2 ssse3/;
1213
1214 add_proto qw/uint32_t vpx_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1215   specialize qw/vpx_sub_pixel_avg_variance16x8 neon msa mmi sse2 ssse3/;
1216
1217 add_proto qw/uint32_t vpx_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1218   specialize qw/vpx_sub_pixel_avg_variance8x16 neon msa mmi sse2 ssse3/;
1219
1220 add_proto qw/uint32_t vpx_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1221   specialize qw/vpx_sub_pixel_avg_variance8x8 neon msa mmi sse2 ssse3/;
1222
1223 add_proto qw/uint32_t vpx_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1224   specialize qw/vpx_sub_pixel_avg_variance8x4 neon msa mmi sse2 ssse3/;
1225
1226 add_proto qw/uint32_t vpx_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1227   specialize qw/vpx_sub_pixel_avg_variance4x8 neon msa mmi sse2 ssse3/;
1228
1229 add_proto qw/uint32_t vpx_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1230   specialize qw/vpx_sub_pixel_avg_variance4x4 neon msa mmi sse2 ssse3/;
1231
1232 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") {
1233   add_proto qw/unsigned int vpx_highbd_12_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1234   specialize qw/vpx_highbd_12_variance64x64 sse2/;
1235
1236   add_proto qw/unsigned int vpx_highbd_12_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1237   specialize qw/vpx_highbd_12_variance64x32 sse2/;
1238
1239   add_proto qw/unsigned int vpx_highbd_12_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1240   specialize qw/vpx_highbd_12_variance32x64 sse2/;
1241
1242   add_proto qw/unsigned int vpx_highbd_12_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1243   specialize qw/vpx_highbd_12_variance32x32 sse2/;
1244
1245   add_proto qw/unsigned int vpx_highbd_12_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1246   specialize qw/vpx_highbd_12_variance32x16 sse2/;
1247
1248   add_proto qw/unsigned int vpx_highbd_12_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1249   specialize qw/vpx_highbd_12_variance16x32 sse2/;
1250
1251   add_proto qw/unsigned int vpx_highbd_12_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1252   specialize qw/vpx_highbd_12_variance16x16 sse2/;
1253
1254   add_proto qw/unsigned int vpx_highbd_12_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1255   specialize qw/vpx_highbd_12_variance16x8 sse2/;
1256
1257   add_proto qw/unsigned int vpx_highbd_12_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1258   specialize qw/vpx_highbd_12_variance8x16 sse2/;
1259
1260   add_proto qw/unsigned int vpx_highbd_12_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1261   specialize qw/vpx_highbd_12_variance8x8 sse2/;
1262
1263   add_proto qw/unsigned int vpx_highbd_12_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1264   add_proto qw/unsigned int vpx_highbd_12_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1265   add_proto qw/unsigned int vpx_highbd_12_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1266
1267   add_proto qw/unsigned int vpx_highbd_10_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1268   specialize qw/vpx_highbd_10_variance64x64 sse2/;
1269
1270   add_proto qw/unsigned int vpx_highbd_10_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1271   specialize qw/vpx_highbd_10_variance64x32 sse2/;
1272
1273   add_proto qw/unsigned int vpx_highbd_10_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1274   specialize qw/vpx_highbd_10_variance32x64 sse2/;
1275
1276   add_proto qw/unsigned int vpx_highbd_10_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1277   specialize qw/vpx_highbd_10_variance32x32 sse2/;
1278
1279   add_proto qw/unsigned int vpx_highbd_10_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1280   specialize qw/vpx_highbd_10_variance32x16 sse2/;
1281
1282   add_proto qw/unsigned int vpx_highbd_10_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1283   specialize qw/vpx_highbd_10_variance16x32 sse2/;
1284
1285   add_proto qw/unsigned int vpx_highbd_10_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1286   specialize qw/vpx_highbd_10_variance16x16 sse2/;
1287
1288   add_proto qw/unsigned int vpx_highbd_10_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1289   specialize qw/vpx_highbd_10_variance16x8 sse2/;
1290
1291   add_proto qw/unsigned int vpx_highbd_10_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1292   specialize qw/vpx_highbd_10_variance8x16 sse2/;
1293
1294   add_proto qw/unsigned int vpx_highbd_10_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1295   specialize qw/vpx_highbd_10_variance8x8 sse2/;
1296
1297   add_proto qw/unsigned int vpx_highbd_10_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1298   add_proto qw/unsigned int vpx_highbd_10_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1299   add_proto qw/unsigned int vpx_highbd_10_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1300
1301   add_proto qw/unsigned int vpx_highbd_8_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1302   specialize qw/vpx_highbd_8_variance64x64 sse2/;
1303
1304   add_proto qw/unsigned int vpx_highbd_8_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1305   specialize qw/vpx_highbd_8_variance64x32 sse2/;
1306
1307   add_proto qw/unsigned int vpx_highbd_8_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1308   specialize qw/vpx_highbd_8_variance32x64 sse2/;
1309
1310   add_proto qw/unsigned int vpx_highbd_8_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1311   specialize qw/vpx_highbd_8_variance32x32 sse2/;
1312
1313   add_proto qw/unsigned int vpx_highbd_8_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1314   specialize qw/vpx_highbd_8_variance32x16 sse2/;
1315
1316   add_proto qw/unsigned int vpx_highbd_8_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1317   specialize qw/vpx_highbd_8_variance16x32 sse2/;
1318
1319   add_proto qw/unsigned int vpx_highbd_8_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1320   specialize qw/vpx_highbd_8_variance16x16 sse2/;
1321
1322   add_proto qw/unsigned int vpx_highbd_8_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1323   specialize qw/vpx_highbd_8_variance16x8 sse2/;
1324
1325   add_proto qw/unsigned int vpx_highbd_8_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1326   specialize qw/vpx_highbd_8_variance8x16 sse2/;
1327
1328   add_proto qw/unsigned int vpx_highbd_8_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1329   specialize qw/vpx_highbd_8_variance8x8 sse2/;
1330
1331   add_proto qw/unsigned int vpx_highbd_8_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1332   add_proto qw/unsigned int vpx_highbd_8_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1333   add_proto qw/unsigned int vpx_highbd_8_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1334
1335   add_proto qw/void vpx_highbd_8_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1336   specialize qw/vpx_highbd_8_get16x16var sse2/;
1337
1338   add_proto qw/void vpx_highbd_8_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1339   specialize qw/vpx_highbd_8_get8x8var sse2/;
1340
1341   add_proto qw/void vpx_highbd_10_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1342   specialize qw/vpx_highbd_10_get16x16var sse2/;
1343
1344   add_proto qw/void vpx_highbd_10_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1345   specialize qw/vpx_highbd_10_get8x8var sse2/;
1346
1347   add_proto qw/void vpx_highbd_12_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1348   specialize qw/vpx_highbd_12_get16x16var sse2/;
1349
1350   add_proto qw/void vpx_highbd_12_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum";
1351   specialize qw/vpx_highbd_12_get8x8var sse2/;
1352
1353   add_proto qw/unsigned int vpx_highbd_8_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1354   specialize qw/vpx_highbd_8_mse16x16 sse2/;
1355
1356   add_proto qw/unsigned int vpx_highbd_8_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1357   add_proto qw/unsigned int vpx_highbd_8_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1358   add_proto qw/unsigned int vpx_highbd_8_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1359   specialize qw/vpx_highbd_8_mse8x8 sse2/;
1360
1361   add_proto qw/unsigned int vpx_highbd_10_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1362   specialize qw/vpx_highbd_10_mse16x16 sse2/;
1363
1364   add_proto qw/unsigned int vpx_highbd_10_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1365   add_proto qw/unsigned int vpx_highbd_10_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1366   add_proto qw/unsigned int vpx_highbd_10_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1367   specialize qw/vpx_highbd_10_mse8x8 sse2/;
1368
1369   add_proto qw/unsigned int vpx_highbd_12_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1370   specialize qw/vpx_highbd_12_mse16x16 sse2/;
1371
1372   add_proto qw/unsigned int vpx_highbd_12_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1373   add_proto qw/unsigned int vpx_highbd_12_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1374   add_proto qw/unsigned int vpx_highbd_12_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse";
1375   specialize qw/vpx_highbd_12_mse8x8 sse2/;
1376
1377   add_proto qw/void vpx_highbd_comp_avg_pred/, "uint16_t *comp_pred, const uint16_t *pred, int width, int height, const uint16_t *ref, int ref_stride";
1378
1379   #
1380   # Subpixel Variance
1381   #
1382   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1383   specialize qw/vpx_highbd_12_sub_pixel_variance64x64 sse2/;
1384
1385   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1386   specialize qw/vpx_highbd_12_sub_pixel_variance64x32 sse2/;
1387
1388   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1389   specialize qw/vpx_highbd_12_sub_pixel_variance32x64 sse2/;
1390
1391   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1392   specialize qw/vpx_highbd_12_sub_pixel_variance32x32 sse2/;
1393
1394   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1395   specialize qw/vpx_highbd_12_sub_pixel_variance32x16 sse2/;
1396
1397   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1398   specialize qw/vpx_highbd_12_sub_pixel_variance16x32 sse2/;
1399
1400   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1401   specialize qw/vpx_highbd_12_sub_pixel_variance16x16 sse2/;
1402
1403   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1404   specialize qw/vpx_highbd_12_sub_pixel_variance16x8 sse2/;
1405
1406   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1407   specialize qw/vpx_highbd_12_sub_pixel_variance8x16 sse2/;
1408
1409   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1410   specialize qw/vpx_highbd_12_sub_pixel_variance8x8 sse2/;
1411
1412   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1413   specialize qw/vpx_highbd_12_sub_pixel_variance8x4 sse2/;
1414
1415   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1416   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1417
1418   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1419   specialize qw/vpx_highbd_10_sub_pixel_variance64x64 sse2/;
1420
1421   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1422   specialize qw/vpx_highbd_10_sub_pixel_variance64x32 sse2/;
1423
1424   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1425   specialize qw/vpx_highbd_10_sub_pixel_variance32x64 sse2/;
1426
1427   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1428   specialize qw/vpx_highbd_10_sub_pixel_variance32x32 sse2/;
1429
1430   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1431   specialize qw/vpx_highbd_10_sub_pixel_variance32x16 sse2/;
1432
1433   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1434   specialize qw/vpx_highbd_10_sub_pixel_variance16x32 sse2/;
1435
1436   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1437   specialize qw/vpx_highbd_10_sub_pixel_variance16x16 sse2/;
1438
1439   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1440   specialize qw/vpx_highbd_10_sub_pixel_variance16x8 sse2/;
1441
1442   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1443   specialize qw/vpx_highbd_10_sub_pixel_variance8x16 sse2/;
1444
1445   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1446   specialize qw/vpx_highbd_10_sub_pixel_variance8x8 sse2/;
1447
1448   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1449   specialize qw/vpx_highbd_10_sub_pixel_variance8x4 sse2/;
1450
1451   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1452   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1453
1454   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1455   specialize qw/vpx_highbd_8_sub_pixel_variance64x64 sse2/;
1456
1457   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1458   specialize qw/vpx_highbd_8_sub_pixel_variance64x32 sse2/;
1459
1460   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1461   specialize qw/vpx_highbd_8_sub_pixel_variance32x64 sse2/;
1462
1463   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1464   specialize qw/vpx_highbd_8_sub_pixel_variance32x32 sse2/;
1465
1466   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1467   specialize qw/vpx_highbd_8_sub_pixel_variance32x16 sse2/;
1468
1469   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1470   specialize qw/vpx_highbd_8_sub_pixel_variance16x32 sse2/;
1471
1472   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1473   specialize qw/vpx_highbd_8_sub_pixel_variance16x16 sse2/;
1474
1475   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1476   specialize qw/vpx_highbd_8_sub_pixel_variance16x8 sse2/;
1477
1478   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1479   specialize qw/vpx_highbd_8_sub_pixel_variance8x16 sse2/;
1480
1481   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1482   specialize qw/vpx_highbd_8_sub_pixel_variance8x8 sse2/;
1483
1484   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1485   specialize qw/vpx_highbd_8_sub_pixel_variance8x4 sse2/;
1486
1487   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1488   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse";
1489
1490   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1491   specialize qw/vpx_highbd_12_sub_pixel_avg_variance64x64 sse2/;
1492
1493   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1494   specialize qw/vpx_highbd_12_sub_pixel_avg_variance64x32 sse2/;
1495
1496   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1497   specialize qw/vpx_highbd_12_sub_pixel_avg_variance32x64 sse2/;
1498
1499   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1500   specialize qw/vpx_highbd_12_sub_pixel_avg_variance32x32 sse2/;
1501
1502   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1503   specialize qw/vpx_highbd_12_sub_pixel_avg_variance32x16 sse2/;
1504
1505   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1506   specialize qw/vpx_highbd_12_sub_pixel_avg_variance16x32 sse2/;
1507
1508   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1509   specialize qw/vpx_highbd_12_sub_pixel_avg_variance16x16 sse2/;
1510
1511   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1512   specialize qw/vpx_highbd_12_sub_pixel_avg_variance16x8 sse2/;
1513
1514   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1515   specialize qw/vpx_highbd_12_sub_pixel_avg_variance8x16 sse2/;
1516
1517   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1518   specialize qw/vpx_highbd_12_sub_pixel_avg_variance8x8 sse2/;
1519
1520   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1521   specialize qw/vpx_highbd_12_sub_pixel_avg_variance8x4 sse2/;
1522
1523   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1524   add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1525
1526   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1527   specialize qw/vpx_highbd_10_sub_pixel_avg_variance64x64 sse2/;
1528
1529   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1530   specialize qw/vpx_highbd_10_sub_pixel_avg_variance64x32 sse2/;
1531
1532   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1533   specialize qw/vpx_highbd_10_sub_pixel_avg_variance32x64 sse2/;
1534
1535   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1536   specialize qw/vpx_highbd_10_sub_pixel_avg_variance32x32 sse2/;
1537
1538   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1539   specialize qw/vpx_highbd_10_sub_pixel_avg_variance32x16 sse2/;
1540
1541   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1542   specialize qw/vpx_highbd_10_sub_pixel_avg_variance16x32 sse2/;
1543
1544   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1545   specialize qw/vpx_highbd_10_sub_pixel_avg_variance16x16 sse2/;
1546
1547   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1548   specialize qw/vpx_highbd_10_sub_pixel_avg_variance16x8 sse2/;
1549
1550   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1551   specialize qw/vpx_highbd_10_sub_pixel_avg_variance8x16 sse2/;
1552
1553   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1554   specialize qw/vpx_highbd_10_sub_pixel_avg_variance8x8 sse2/;
1555
1556   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1557   specialize qw/vpx_highbd_10_sub_pixel_avg_variance8x4 sse2/;
1558
1559   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1560   add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1561
1562   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1563   specialize qw/vpx_highbd_8_sub_pixel_avg_variance64x64 sse2/;
1564
1565   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1566   specialize qw/vpx_highbd_8_sub_pixel_avg_variance64x32 sse2/;
1567
1568   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1569   specialize qw/vpx_highbd_8_sub_pixel_avg_variance32x64 sse2/;
1570
1571   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1572   specialize qw/vpx_highbd_8_sub_pixel_avg_variance32x32 sse2/;
1573
1574   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1575   specialize qw/vpx_highbd_8_sub_pixel_avg_variance32x16 sse2/;
1576
1577   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1578   specialize qw/vpx_highbd_8_sub_pixel_avg_variance16x32 sse2/;
1579
1580   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1581   specialize qw/vpx_highbd_8_sub_pixel_avg_variance16x16 sse2/;
1582
1583   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1584   specialize qw/vpx_highbd_8_sub_pixel_avg_variance16x8 sse2/;
1585
1586   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1587   specialize qw/vpx_highbd_8_sub_pixel_avg_variance8x16 sse2/;
1588
1589   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1590   specialize qw/vpx_highbd_8_sub_pixel_avg_variance8x8 sse2/;
1591
1592   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1593   specialize qw/vpx_highbd_8_sub_pixel_avg_variance8x4 sse2/;
1594
1595   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1596   add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred";
1597
1598 }  # CONFIG_VP9_HIGHBITDEPTH
1599
1600 #
1601 # Post Processing
1602 #
1603 if (vpx_config("CONFIG_POSTPROC") eq "yes" || vpx_config("CONFIG_VP9_POSTPROC") eq "yes") {
1604     add_proto qw/void vpx_plane_add_noise/, "uint8_t *start, const int8_t *noise, int blackclamp, int whiteclamp, int width, int height, int pitch";
1605     specialize qw/vpx_plane_add_noise sse2 msa/;
1606
1607     add_proto qw/void vpx_mbpost_proc_down/, "unsigned char *dst, int pitch, int rows, int cols,int flimit";
1608     specialize qw/vpx_mbpost_proc_down sse2 neon msa vsx/;
1609
1610     add_proto qw/void vpx_mbpost_proc_across_ip/, "unsigned char *src, int pitch, int rows, int cols,int flimit";
1611     specialize qw/vpx_mbpost_proc_across_ip sse2 neon msa vsx/;
1612
1613     add_proto qw/void vpx_post_proc_down_and_across_mb_row/, "unsigned char *src, unsigned char *dst, int src_pitch, int dst_pitch, int cols, unsigned char *flimits, int size";
1614     specialize qw/vpx_post_proc_down_and_across_mb_row sse2 neon msa vsx/;
1615
1616 }
1617
1618 }  # CONFIG_ENCODERS || CONFIG_POSTPROC || CONFIG_VP9_POSTPROC
1619
1620 1;