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