Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / third_party / libvpx / source / libvpx / vp9 / encoder / vp9_sad_c.c
1 /*
2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10
11
12 #include <stdlib.h>
13 #include "./vp9_rtcd.h"
14 #include "./vpx_config.h"
15 #include "vp9/encoder/vp9_sadmxn.h"
16 #include "vp9/encoder/vp9_variance.h"
17 #include "vpx/vpx_integer.h"
18
19 #define sad_mxn_func(m, n) \
20 unsigned int vp9_sad##m##x##n##_c(const uint8_t *src_ptr, \
21                                   int  src_stride, \
22                                   const uint8_t *ref_ptr, \
23                                   int  ref_stride, \
24                                   unsigned int max_sad) { \
25   return sad_mx_n_c(src_ptr, src_stride, ref_ptr, ref_stride, m, n); \
26 } \
27 unsigned int vp9_sad##m##x##n##_avg_c(const uint8_t *src_ptr, \
28                                       int  src_stride, \
29                                       const uint8_t *ref_ptr, \
30                                       int  ref_stride, \
31                                       const uint8_t *second_pred, \
32                                       unsigned int max_sad) { \
33   uint8_t comp_pred[m * n]; \
34   comp_avg_pred(comp_pred, second_pred, m, n, ref_ptr, ref_stride); \
35   return sad_mx_n_c(src_ptr, src_stride, comp_pred, m, m, n); \
36 }
37
38 sad_mxn_func(64, 64)
39 sad_mxn_func(64, 32)
40 sad_mxn_func(32, 64)
41 sad_mxn_func(32, 32)
42 sad_mxn_func(32, 16)
43 sad_mxn_func(16, 32)
44 sad_mxn_func(16, 16)
45 sad_mxn_func(16, 8)
46 sad_mxn_func(8, 16)
47 sad_mxn_func(8, 8)
48 sad_mxn_func(8, 4)
49 sad_mxn_func(4, 8)
50 sad_mxn_func(4, 4)
51
52 void vp9_sad64x32x4d_c(const uint8_t *src_ptr,
53                        int  src_stride,
54                        const uint8_t* const ref_ptr[],
55                        int  ref_stride,
56                        unsigned int *sad_array) {
57   sad_array[0] = vp9_sad64x32(src_ptr, src_stride,
58                               ref_ptr[0], ref_stride, 0x7fffffff);
59   sad_array[1] = vp9_sad64x32(src_ptr, src_stride,
60                               ref_ptr[1], ref_stride, 0x7fffffff);
61   sad_array[2] = vp9_sad64x32(src_ptr, src_stride,
62                               ref_ptr[2], ref_stride, 0x7fffffff);
63   sad_array[3] = vp9_sad64x32(src_ptr, src_stride,
64                               ref_ptr[3], ref_stride, 0x7fffffff);
65 }
66
67 void vp9_sad32x64x4d_c(const uint8_t *src_ptr,
68                        int  src_stride,
69                        const uint8_t* const ref_ptr[],
70                        int  ref_stride,
71                        unsigned int *sad_array) {
72   sad_array[0] = vp9_sad32x64(src_ptr, src_stride,
73                               ref_ptr[0], ref_stride, 0x7fffffff);
74   sad_array[1] = vp9_sad32x64(src_ptr, src_stride,
75                               ref_ptr[1], ref_stride, 0x7fffffff);
76   sad_array[2] = vp9_sad32x64(src_ptr, src_stride,
77                               ref_ptr[2], ref_stride, 0x7fffffff);
78   sad_array[3] = vp9_sad32x64(src_ptr, src_stride,
79                               ref_ptr[3], ref_stride, 0x7fffffff);
80 }
81
82 void vp9_sad32x16x4d_c(const uint8_t *src_ptr,
83                        int  src_stride,
84                        const uint8_t* const ref_ptr[],
85                        int  ref_stride,
86                        unsigned int *sad_array) {
87   sad_array[0] = vp9_sad32x16(src_ptr, src_stride,
88                               ref_ptr[0], ref_stride, 0x7fffffff);
89   sad_array[1] = vp9_sad32x16(src_ptr, src_stride,
90                               ref_ptr[1], ref_stride, 0x7fffffff);
91   sad_array[2] = vp9_sad32x16(src_ptr, src_stride,
92                               ref_ptr[2], ref_stride, 0x7fffffff);
93   sad_array[3] = vp9_sad32x16(src_ptr, src_stride,
94                               ref_ptr[3], ref_stride, 0x7fffffff);
95 }
96
97 void vp9_sad16x32x4d_c(const uint8_t *src_ptr,
98                        int  src_stride,
99                        const uint8_t* const ref_ptr[],
100                        int  ref_stride,
101                        unsigned int *sad_array) {
102   sad_array[0] = vp9_sad16x32(src_ptr, src_stride,
103                               ref_ptr[0], ref_stride, 0x7fffffff);
104   sad_array[1] = vp9_sad16x32(src_ptr, src_stride,
105                               ref_ptr[1], ref_stride, 0x7fffffff);
106   sad_array[2] = vp9_sad16x32(src_ptr, src_stride,
107                               ref_ptr[2], ref_stride, 0x7fffffff);
108   sad_array[3] = vp9_sad16x32(src_ptr, src_stride,
109                               ref_ptr[3], ref_stride, 0x7fffffff);
110 }
111
112 void vp9_sad64x64x3_c(const uint8_t *src_ptr,
113                       int  src_stride,
114                       const uint8_t *ref_ptr,
115                       int  ref_stride,
116                       unsigned int *sad_array) {
117   sad_array[0] = vp9_sad64x64(src_ptr, src_stride, ref_ptr, ref_stride,
118                               0x7fffffff);
119   sad_array[1] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 1, ref_stride,
120                               0x7fffffff);
121   sad_array[2] = vp9_sad64x64(src_ptr, src_stride, ref_ptr + 2, ref_stride,
122                               0x7fffffff);
123 }
124
125 void vp9_sad32x32x3_c(const uint8_t *src_ptr,
126                       int  src_stride,
127                       const uint8_t *ref_ptr,
128                       int  ref_stride,
129                       unsigned int *sad_array) {
130   sad_array[0] = vp9_sad32x32(src_ptr, src_stride,
131                               ref_ptr, ref_stride, 0x7fffffff);
132   sad_array[1] = vp9_sad32x32(src_ptr, src_stride,
133                               ref_ptr + 1, ref_stride, 0x7fffffff);
134   sad_array[2] = vp9_sad32x32(src_ptr, src_stride,
135                               ref_ptr + 2, ref_stride, 0x7fffffff);
136 }
137
138 void vp9_sad64x64x8_c(const uint8_t *src_ptr,
139                       int  src_stride,
140                       const uint8_t *ref_ptr,
141                       int  ref_stride,
142                       unsigned int *sad_array) {
143   sad_array[0] = vp9_sad64x64(src_ptr, src_stride,
144                               ref_ptr, ref_stride,
145                               0x7fffffff);
146   sad_array[1] = vp9_sad64x64(src_ptr, src_stride,
147                               ref_ptr + 1, ref_stride,
148                               0x7fffffff);
149   sad_array[2] = vp9_sad64x64(src_ptr, src_stride,
150                               ref_ptr + 2, ref_stride,
151                               0x7fffffff);
152   sad_array[3] = vp9_sad64x64(src_ptr, src_stride,
153                               ref_ptr + 3, ref_stride,
154                               0x7fffffff);
155   sad_array[4] = vp9_sad64x64(src_ptr, src_stride,
156                               ref_ptr + 4, ref_stride,
157                               0x7fffffff);
158   sad_array[5] = vp9_sad64x64(src_ptr, src_stride,
159                               ref_ptr + 5, ref_stride,
160                               0x7fffffff);
161   sad_array[6] = vp9_sad64x64(src_ptr, src_stride,
162                               ref_ptr + 6, ref_stride,
163                               0x7fffffff);
164   sad_array[7] = vp9_sad64x64(src_ptr, src_stride,
165                               ref_ptr + 7, ref_stride,
166                               0x7fffffff);
167 }
168
169 void vp9_sad32x32x8_c(const uint8_t *src_ptr,
170                       int  src_stride,
171                       const uint8_t *ref_ptr,
172                       int  ref_stride,
173                       unsigned int *sad_array) {
174   sad_array[0] = vp9_sad32x32(src_ptr, src_stride,
175                               ref_ptr, ref_stride,
176                               0x7fffffff);
177   sad_array[1] = vp9_sad32x32(src_ptr, src_stride,
178                               ref_ptr + 1, ref_stride,
179                               0x7fffffff);
180   sad_array[2] = vp9_sad32x32(src_ptr, src_stride,
181                               ref_ptr + 2, ref_stride,
182                               0x7fffffff);
183   sad_array[3] = vp9_sad32x32(src_ptr, src_stride,
184                               ref_ptr + 3, ref_stride,
185                               0x7fffffff);
186   sad_array[4] = vp9_sad32x32(src_ptr, src_stride,
187                               ref_ptr + 4, ref_stride,
188                               0x7fffffff);
189   sad_array[5] = vp9_sad32x32(src_ptr, src_stride,
190                               ref_ptr + 5, ref_stride,
191                               0x7fffffff);
192   sad_array[6] = vp9_sad32x32(src_ptr, src_stride,
193                               ref_ptr + 6, ref_stride,
194                               0x7fffffff);
195   sad_array[7] = vp9_sad32x32(src_ptr, src_stride,
196                               ref_ptr + 7, ref_stride,
197                               0x7fffffff);
198 }
199
200 void vp9_sad16x16x3_c(const uint8_t *src_ptr,
201                       int  src_stride,
202                       const uint8_t *ref_ptr,
203                       int  ref_stride,
204                       unsigned int *sad_array) {
205   sad_array[0] = vp9_sad16x16(src_ptr, src_stride,
206                               ref_ptr, ref_stride, 0x7fffffff);
207   sad_array[1] = vp9_sad16x16(src_ptr, src_stride,
208                               ref_ptr + 1, ref_stride, 0x7fffffff);
209   sad_array[2] = vp9_sad16x16(src_ptr, src_stride,
210                               ref_ptr + 2, ref_stride, 0x7fffffff);
211 }
212
213 void vp9_sad16x16x8_c(const uint8_t *src_ptr,
214                       int  src_stride,
215                       const uint8_t *ref_ptr,
216                       int  ref_stride,
217                       uint32_t *sad_array) {
218   sad_array[0] = vp9_sad16x16(src_ptr, src_stride,
219                               ref_ptr, ref_stride,
220                               0x7fffffff);
221   sad_array[1] = vp9_sad16x16(src_ptr, src_stride,
222                               ref_ptr + 1, ref_stride,
223                               0x7fffffff);
224   sad_array[2] = vp9_sad16x16(src_ptr, src_stride,
225                               ref_ptr + 2, ref_stride,
226                               0x7fffffff);
227   sad_array[3] = vp9_sad16x16(src_ptr, src_stride,
228                               ref_ptr + 3, ref_stride,
229                               0x7fffffff);
230   sad_array[4] = vp9_sad16x16(src_ptr, src_stride,
231                               ref_ptr + 4, ref_stride,
232                               0x7fffffff);
233   sad_array[5] = vp9_sad16x16(src_ptr, src_stride,
234                               ref_ptr + 5, ref_stride,
235                               0x7fffffff);
236   sad_array[6] = vp9_sad16x16(src_ptr, src_stride,
237                               ref_ptr + 6, ref_stride,
238                               0x7fffffff);
239   sad_array[7] = vp9_sad16x16(src_ptr, src_stride,
240                               ref_ptr + 7, ref_stride,
241                               0x7fffffff);
242 }
243
244 void vp9_sad16x8x3_c(const uint8_t *src_ptr,
245                      int  src_stride,
246                      const uint8_t *ref_ptr,
247                      int  ref_stride,
248                      unsigned int *sad_array) {
249   sad_array[0] = vp9_sad16x8(src_ptr, src_stride,
250                              ref_ptr, ref_stride, 0x7fffffff);
251   sad_array[1] = vp9_sad16x8(src_ptr, src_stride,
252                              ref_ptr + 1, ref_stride, 0x7fffffff);
253   sad_array[2] = vp9_sad16x8(src_ptr, src_stride,
254                              ref_ptr + 2, ref_stride, 0x7fffffff);
255 }
256
257 void vp9_sad16x8x8_c(const uint8_t *src_ptr,
258                      int  src_stride,
259                      const uint8_t *ref_ptr,
260                      int  ref_stride,
261                      uint32_t *sad_array) {
262   sad_array[0] = vp9_sad16x8(src_ptr, src_stride,
263                              ref_ptr, ref_stride,
264                              0x7fffffff);
265   sad_array[1] = vp9_sad16x8(src_ptr, src_stride,
266                              ref_ptr + 1, ref_stride,
267                              0x7fffffff);
268   sad_array[2] = vp9_sad16x8(src_ptr, src_stride,
269                              ref_ptr + 2, ref_stride,
270                              0x7fffffff);
271   sad_array[3] = vp9_sad16x8(src_ptr, src_stride,
272                              ref_ptr + 3, ref_stride,
273                              0x7fffffff);
274   sad_array[4] = vp9_sad16x8(src_ptr, src_stride,
275                              ref_ptr + 4, ref_stride,
276                              0x7fffffff);
277   sad_array[5] = vp9_sad16x8(src_ptr, src_stride,
278                              ref_ptr + 5, ref_stride,
279                              0x7fffffff);
280   sad_array[6] = vp9_sad16x8(src_ptr, src_stride,
281                              ref_ptr + 6, ref_stride,
282                              0x7fffffff);
283   sad_array[7] = vp9_sad16x8(src_ptr, src_stride,
284                              ref_ptr + 7, ref_stride,
285                              0x7fffffff);
286 }
287
288 void vp9_sad8x8x3_c(const uint8_t *src_ptr,
289                     int  src_stride,
290                     const uint8_t *ref_ptr,
291                     int  ref_stride,
292                     unsigned int *sad_array) {
293   sad_array[0] = vp9_sad8x8(src_ptr, src_stride,
294                             ref_ptr, ref_stride, 0x7fffffff);
295   sad_array[1] = vp9_sad8x8(src_ptr, src_stride,
296                             ref_ptr + 1, ref_stride, 0x7fffffff);
297   sad_array[2] = vp9_sad8x8(src_ptr, src_stride,
298                             ref_ptr + 2, ref_stride, 0x7fffffff);
299 }
300
301 void vp9_sad8x8x8_c(const uint8_t *src_ptr,
302                     int  src_stride,
303                     const uint8_t *ref_ptr,
304                     int  ref_stride,
305                     uint32_t *sad_array) {
306   sad_array[0] = vp9_sad8x8(src_ptr, src_stride,
307                             ref_ptr, ref_stride,
308                             0x7fffffff);
309   sad_array[1] = vp9_sad8x8(src_ptr, src_stride,
310                             ref_ptr + 1, ref_stride,
311                             0x7fffffff);
312   sad_array[2] = vp9_sad8x8(src_ptr, src_stride,
313                             ref_ptr + 2, ref_stride,
314                             0x7fffffff);
315   sad_array[3] = vp9_sad8x8(src_ptr, src_stride,
316                             ref_ptr + 3, ref_stride,
317                             0x7fffffff);
318   sad_array[4] = vp9_sad8x8(src_ptr, src_stride,
319                             ref_ptr + 4, ref_stride,
320                             0x7fffffff);
321   sad_array[5] = vp9_sad8x8(src_ptr, src_stride,
322                             ref_ptr + 5, ref_stride,
323                             0x7fffffff);
324   sad_array[6] = vp9_sad8x8(src_ptr, src_stride,
325                             ref_ptr + 6, ref_stride,
326                             0x7fffffff);
327   sad_array[7] = vp9_sad8x8(src_ptr, src_stride,
328                             ref_ptr + 7, ref_stride,
329                             0x7fffffff);
330 }
331
332 void vp9_sad8x16x3_c(const uint8_t *src_ptr,
333                      int  src_stride,
334                      const uint8_t *ref_ptr,
335                      int  ref_stride,
336                      unsigned int *sad_array) {
337   sad_array[0] = vp9_sad8x16(src_ptr, src_stride,
338                              ref_ptr, ref_stride, 0x7fffffff);
339   sad_array[1] = vp9_sad8x16(src_ptr, src_stride,
340                              ref_ptr + 1, ref_stride, 0x7fffffff);
341   sad_array[2] = vp9_sad8x16(src_ptr, src_stride,
342                              ref_ptr + 2, ref_stride, 0x7fffffff);
343 }
344
345 void vp9_sad8x16x8_c(const uint8_t *src_ptr,
346                      int  src_stride,
347                      const uint8_t *ref_ptr,
348                      int  ref_stride,
349                      uint32_t *sad_array) {
350   sad_array[0] = vp9_sad8x16(src_ptr, src_stride,
351                              ref_ptr, ref_stride,
352                              0x7fffffff);
353   sad_array[1] = vp9_sad8x16(src_ptr, src_stride,
354                              ref_ptr + 1, ref_stride,
355                              0x7fffffff);
356   sad_array[2] = vp9_sad8x16(src_ptr, src_stride,
357                              ref_ptr + 2, ref_stride,
358                              0x7fffffff);
359   sad_array[3] = vp9_sad8x16(src_ptr, src_stride,
360                              ref_ptr + 3, ref_stride,
361                              0x7fffffff);
362   sad_array[4] = vp9_sad8x16(src_ptr, src_stride,
363                              ref_ptr + 4, ref_stride,
364                              0x7fffffff);
365   sad_array[5] = vp9_sad8x16(src_ptr, src_stride,
366                              ref_ptr + 5, ref_stride,
367                              0x7fffffff);
368   sad_array[6] = vp9_sad8x16(src_ptr, src_stride,
369                              ref_ptr + 6, ref_stride,
370                              0x7fffffff);
371   sad_array[7] = vp9_sad8x16(src_ptr, src_stride,
372                              ref_ptr + 7, ref_stride,
373                              0x7fffffff);
374 }
375
376 void vp9_sad4x4x3_c(const uint8_t *src_ptr,
377                     int  src_stride,
378                     const uint8_t *ref_ptr,
379                     int  ref_stride,
380                     unsigned int *sad_array) {
381   sad_array[0] = vp9_sad4x4(src_ptr, src_stride,
382                             ref_ptr, ref_stride, 0x7fffffff);
383   sad_array[1] = vp9_sad4x4(src_ptr, src_stride,
384                             ref_ptr + 1, ref_stride, 0x7fffffff);
385   sad_array[2] = vp9_sad4x4(src_ptr, src_stride,
386                             ref_ptr + 2, ref_stride, 0x7fffffff);
387 }
388
389 void vp9_sad4x4x8_c(const uint8_t *src_ptr,
390                     int  src_stride,
391                     const uint8_t *ref_ptr,
392                     int  ref_stride,
393                     uint32_t *sad_array) {
394   sad_array[0] = vp9_sad4x4(src_ptr, src_stride,
395                             ref_ptr, ref_stride,
396                             0x7fffffff);
397   sad_array[1] = vp9_sad4x4(src_ptr, src_stride,
398                             ref_ptr + 1, ref_stride,
399                             0x7fffffff);
400   sad_array[2] = vp9_sad4x4(src_ptr, src_stride,
401                             ref_ptr + 2, ref_stride,
402                             0x7fffffff);
403   sad_array[3] = vp9_sad4x4(src_ptr, src_stride,
404                             ref_ptr + 3, ref_stride,
405                             0x7fffffff);
406   sad_array[4] = vp9_sad4x4(src_ptr, src_stride,
407                             ref_ptr + 4, ref_stride,
408                             0x7fffffff);
409   sad_array[5] = vp9_sad4x4(src_ptr, src_stride,
410                             ref_ptr + 5, ref_stride,
411                             0x7fffffff);
412   sad_array[6] = vp9_sad4x4(src_ptr, src_stride,
413                             ref_ptr + 6, ref_stride,
414                             0x7fffffff);
415   sad_array[7] = vp9_sad4x4(src_ptr, src_stride,
416                             ref_ptr + 7, ref_stride,
417                             0x7fffffff);
418 }
419
420 void vp9_sad64x64x4d_c(const uint8_t *src_ptr,
421                        int  src_stride,
422                        const uint8_t* const ref_ptr[],
423                        int  ref_stride,
424                        unsigned int *sad_array) {
425   sad_array[0] = vp9_sad64x64(src_ptr, src_stride,
426                               ref_ptr[0], ref_stride, 0x7fffffff);
427   sad_array[1] = vp9_sad64x64(src_ptr, src_stride,
428                               ref_ptr[1], ref_stride, 0x7fffffff);
429   sad_array[2] = vp9_sad64x64(src_ptr, src_stride,
430                               ref_ptr[2], ref_stride, 0x7fffffff);
431   sad_array[3] = vp9_sad64x64(src_ptr, src_stride,
432                               ref_ptr[3], ref_stride, 0x7fffffff);
433 }
434
435 void vp9_sad32x32x4d_c(const uint8_t *src_ptr,
436                        int  src_stride,
437                        const uint8_t* const ref_ptr[],
438                        int  ref_stride,
439                        unsigned int *sad_array) {
440   sad_array[0] = vp9_sad32x32(src_ptr, src_stride,
441                               ref_ptr[0], ref_stride, 0x7fffffff);
442   sad_array[1] = vp9_sad32x32(src_ptr, src_stride,
443                               ref_ptr[1], ref_stride, 0x7fffffff);
444   sad_array[2] = vp9_sad32x32(src_ptr, src_stride,
445                               ref_ptr[2], ref_stride, 0x7fffffff);
446   sad_array[3] = vp9_sad32x32(src_ptr, src_stride,
447                               ref_ptr[3], ref_stride, 0x7fffffff);
448 }
449
450 void vp9_sad16x16x4d_c(const uint8_t *src_ptr,
451                        int  src_stride,
452                        const uint8_t* const ref_ptr[],
453                        int  ref_stride,
454                        unsigned int *sad_array) {
455   sad_array[0] = vp9_sad16x16(src_ptr, src_stride,
456                               ref_ptr[0], ref_stride, 0x7fffffff);
457   sad_array[1] = vp9_sad16x16(src_ptr, src_stride,
458                               ref_ptr[1], ref_stride, 0x7fffffff);
459   sad_array[2] = vp9_sad16x16(src_ptr, src_stride,
460                               ref_ptr[2], ref_stride, 0x7fffffff);
461   sad_array[3] = vp9_sad16x16(src_ptr, src_stride,
462                               ref_ptr[3], ref_stride, 0x7fffffff);
463 }
464
465 void vp9_sad16x8x4d_c(const uint8_t *src_ptr,
466                       int  src_stride,
467                       const uint8_t* const ref_ptr[],
468                       int  ref_stride,
469                       unsigned int *sad_array) {
470   sad_array[0] = vp9_sad16x8(src_ptr, src_stride,
471                              ref_ptr[0], ref_stride, 0x7fffffff);
472   sad_array[1] = vp9_sad16x8(src_ptr, src_stride,
473                              ref_ptr[1], ref_stride, 0x7fffffff);
474   sad_array[2] = vp9_sad16x8(src_ptr, src_stride,
475                              ref_ptr[2], ref_stride, 0x7fffffff);
476   sad_array[3] = vp9_sad16x8(src_ptr, src_stride,
477                              ref_ptr[3], ref_stride, 0x7fffffff);
478 }
479
480 void vp9_sad8x8x4d_c(const uint8_t *src_ptr,
481                      int  src_stride,
482                      const uint8_t* const ref_ptr[],
483                      int  ref_stride,
484                      unsigned int *sad_array) {
485   sad_array[0] = vp9_sad8x8(src_ptr, src_stride,
486                             ref_ptr[0], ref_stride, 0x7fffffff);
487   sad_array[1] = vp9_sad8x8(src_ptr, src_stride,
488                             ref_ptr[1], ref_stride, 0x7fffffff);
489   sad_array[2] = vp9_sad8x8(src_ptr, src_stride,
490                             ref_ptr[2], ref_stride, 0x7fffffff);
491   sad_array[3] = vp9_sad8x8(src_ptr, src_stride,
492                             ref_ptr[3], ref_stride, 0x7fffffff);
493 }
494
495 void vp9_sad8x16x4d_c(const uint8_t *src_ptr,
496                       int  src_stride,
497                       const uint8_t* const ref_ptr[],
498                       int  ref_stride,
499                       unsigned int *sad_array) {
500   sad_array[0] = vp9_sad8x16(src_ptr, src_stride,
501                              ref_ptr[0], ref_stride, 0x7fffffff);
502   sad_array[1] = vp9_sad8x16(src_ptr, src_stride,
503                              ref_ptr[1], ref_stride, 0x7fffffff);
504   sad_array[2] = vp9_sad8x16(src_ptr, src_stride,
505                              ref_ptr[2], ref_stride, 0x7fffffff);
506   sad_array[3] = vp9_sad8x16(src_ptr, src_stride,
507                              ref_ptr[3], ref_stride, 0x7fffffff);
508 }
509
510 void vp9_sad8x4x4d_c(const uint8_t *src_ptr,
511                      int  src_stride,
512                      const uint8_t* const ref_ptr[],
513                      int  ref_stride,
514                      unsigned int *sad_array) {
515   sad_array[0] = vp9_sad8x4(src_ptr, src_stride,
516                             ref_ptr[0], ref_stride, 0x7fffffff);
517   sad_array[1] = vp9_sad8x4(src_ptr, src_stride,
518                             ref_ptr[1], ref_stride, 0x7fffffff);
519   sad_array[2] = vp9_sad8x4(src_ptr, src_stride,
520                             ref_ptr[2], ref_stride, 0x7fffffff);
521   sad_array[3] = vp9_sad8x4(src_ptr, src_stride,
522                             ref_ptr[3], ref_stride, 0x7fffffff);
523 }
524
525 void vp9_sad8x4x8_c(const uint8_t *src_ptr,
526                      int  src_stride,
527                      const uint8_t *ref_ptr,
528                      int  ref_stride,
529                      uint32_t *sad_array) {
530   sad_array[0] = vp9_sad8x4(src_ptr, src_stride,
531                              ref_ptr, ref_stride,
532                              0x7fffffff);
533   sad_array[1] = vp9_sad8x4(src_ptr, src_stride,
534                              ref_ptr + 1, ref_stride,
535                              0x7fffffff);
536   sad_array[2] = vp9_sad8x4(src_ptr, src_stride,
537                              ref_ptr + 2, ref_stride,
538                              0x7fffffff);
539   sad_array[3] = vp9_sad8x4(src_ptr, src_stride,
540                              ref_ptr + 3, ref_stride,
541                              0x7fffffff);
542   sad_array[4] = vp9_sad8x4(src_ptr, src_stride,
543                              ref_ptr + 4, ref_stride,
544                              0x7fffffff);
545   sad_array[5] = vp9_sad8x4(src_ptr, src_stride,
546                              ref_ptr + 5, ref_stride,
547                              0x7fffffff);
548   sad_array[6] = vp9_sad8x4(src_ptr, src_stride,
549                              ref_ptr + 6, ref_stride,
550                              0x7fffffff);
551   sad_array[7] = vp9_sad8x4(src_ptr, src_stride,
552                              ref_ptr + 7, ref_stride,
553                              0x7fffffff);
554 }
555
556 void vp9_sad4x8x4d_c(const uint8_t *src_ptr,
557                      int  src_stride,
558                      const uint8_t* const ref_ptr[],
559                      int  ref_stride,
560                      unsigned int *sad_array) {
561   sad_array[0] = vp9_sad4x8(src_ptr, src_stride,
562                             ref_ptr[0], ref_stride, 0x7fffffff);
563   sad_array[1] = vp9_sad4x8(src_ptr, src_stride,
564                             ref_ptr[1], ref_stride, 0x7fffffff);
565   sad_array[2] = vp9_sad4x8(src_ptr, src_stride,
566                             ref_ptr[2], ref_stride, 0x7fffffff);
567   sad_array[3] = vp9_sad4x8(src_ptr, src_stride,
568                             ref_ptr[3], ref_stride, 0x7fffffff);
569 }
570
571 void vp9_sad4x8x8_c(const uint8_t *src_ptr,
572                      int  src_stride,
573                      const uint8_t *ref_ptr,
574                      int  ref_stride,
575                      uint32_t *sad_array) {
576   sad_array[0] = vp9_sad4x8(src_ptr, src_stride,
577                              ref_ptr, ref_stride,
578                              0x7fffffff);
579   sad_array[1] = vp9_sad4x8(src_ptr, src_stride,
580                              ref_ptr + 1, ref_stride,
581                              0x7fffffff);
582   sad_array[2] = vp9_sad4x8(src_ptr, src_stride,
583                              ref_ptr + 2, ref_stride,
584                              0x7fffffff);
585   sad_array[3] = vp9_sad4x8(src_ptr, src_stride,
586                              ref_ptr + 3, ref_stride,
587                              0x7fffffff);
588   sad_array[4] = vp9_sad4x8(src_ptr, src_stride,
589                              ref_ptr + 4, ref_stride,
590                              0x7fffffff);
591   sad_array[5] = vp9_sad4x8(src_ptr, src_stride,
592                              ref_ptr + 5, ref_stride,
593                              0x7fffffff);
594   sad_array[6] = vp9_sad4x8(src_ptr, src_stride,
595                              ref_ptr + 6, ref_stride,
596                              0x7fffffff);
597   sad_array[7] = vp9_sad4x8(src_ptr, src_stride,
598                              ref_ptr + 7, ref_stride,
599                              0x7fffffff);
600 }
601
602 void vp9_sad4x4x4d_c(const uint8_t *src_ptr,
603                      int  src_stride,
604                      const uint8_t* const ref_ptr[],
605                      int  ref_stride,
606                      unsigned int *sad_array) {
607   sad_array[0] = vp9_sad4x4(src_ptr, src_stride,
608                             ref_ptr[0], ref_stride, 0x7fffffff);
609   sad_array[1] = vp9_sad4x4(src_ptr, src_stride,
610                             ref_ptr[1], ref_stride, 0x7fffffff);
611   sad_array[2] = vp9_sad4x4(src_ptr, src_stride,
612                             ref_ptr[2], ref_stride, 0x7fffffff);
613   sad_array[3] = vp9_sad4x4(src_ptr, src_stride,
614                             ref_ptr[3], ref_stride, 0x7fffffff);
615 }