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