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