19b35249446b07f40ac5fcc3205f2c048616efacchkuang/*
29b35249446b07f40ac5fcc3205f2c048616efacchkuang *  Copyright (c) 2013 The WebM project authors. All Rights Reserved.
39b35249446b07f40ac5fcc3205f2c048616efacchkuang *
49b35249446b07f40ac5fcc3205f2c048616efacchkuang *  Use of this source code is governed by a BSD-style license
59b35249446b07f40ac5fcc3205f2c048616efacchkuang *  that can be found in the LICENSE file in the root of the source
69b35249446b07f40ac5fcc3205f2c048616efacchkuang *  tree. An additional intellectual property rights grant can be found
79b35249446b07f40ac5fcc3205f2c048616efacchkuang *  in the file PATENTS.  All contributing project authors may
89b35249446b07f40ac5fcc3205f2c048616efacchkuang *  be found in the AUTHORS file in the root of the source tree.
99b35249446b07f40ac5fcc3205f2c048616efacchkuang */
109b35249446b07f40ac5fcc3205f2c048616efacchkuang#include <stdlib.h>
119b35249446b07f40ac5fcc3205f2c048616efacchkuang
129b35249446b07f40ac5fcc3205f2c048616efacchkuang#include "./vp9_rtcd.h"
139b35249446b07f40ac5fcc3205f2c048616efacchkuang#include "vp9/common/vp9_common.h"
149b35249446b07f40ac5fcc3205f2c048616efacchkuang#include "vp9/common/mips/dspr2/vp9_common_dspr2.h"
159b35249446b07f40ac5fcc3205f2c048616efacchkuang
169b35249446b07f40ac5fcc3205f2c048616efacchkuang#if HAVE_DSPR2
179b35249446b07f40ac5fcc3205f2c048616efacchkuangvoid vp9_h_predictor_16x16_dspr2(uint8_t *dst, ptrdiff_t stride,
189b35249446b07f40ac5fcc3205f2c048616efacchkuang                                 const uint8_t *above, const uint8_t *left) {
199b35249446b07f40ac5fcc3205f2c048616efacchkuang  int32_t  tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
209b35249446b07f40ac5fcc3205f2c048616efacchkuang  int32_t  tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16;
219b35249446b07f40ac5fcc3205f2c048616efacchkuang
229b35249446b07f40ac5fcc3205f2c048616efacchkuang  __asm__ __volatile__ (
239b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp1],      (%[left])                    \n\t"
249b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp2],      1(%[left])                   \n\t"
259b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp3],      2(%[left])                   \n\t"
269b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp4],      3(%[left])                   \n\t"
279b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp5],      4(%[left])                   \n\t"
289b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp6],      5(%[left])                   \n\t"
299b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp7],      6(%[left])                   \n\t"
309b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp8],      7(%[left])                   \n\t"
319b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp9],      8(%[left])                   \n\t"
329b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp10],     9(%[left])                   \n\t"
339b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp11],     10(%[left])                  \n\t"
349b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp12],     11(%[left])                  \n\t"
359b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp13],     12(%[left])                  \n\t"
369b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp14],     13(%[left])                  \n\t"
379b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp15],     14(%[left])                  \n\t"
389b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lb         %[tmp16],     15(%[left])                  \n\t"
399b35249446b07f40ac5fcc3205f2c048616efacchkuang
409b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp1],      %[tmp1]                      \n\t"
419b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp2],      %[tmp2]                      \n\t"
429b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp3],      %[tmp3]                      \n\t"
439b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp4],      %[tmp4]                      \n\t"
449b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp5],      %[tmp5]                      \n\t"
459b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp6],      %[tmp6]                      \n\t"
469b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp7],      %[tmp7]                      \n\t"
479b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp8],      %[tmp8]                      \n\t"
489b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp9],      %[tmp9]                      \n\t"
499b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp10],     %[tmp10]                     \n\t"
509b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp11],     %[tmp11]                     \n\t"
519b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp12],     %[tmp12]                     \n\t"
529b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp13],     %[tmp13]                     \n\t"
539b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp14],     %[tmp14]                     \n\t"
549b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp15],     %[tmp15]                     \n\t"
559b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb   %[tmp16],     %[tmp16]                     \n\t"
569b35249446b07f40ac5fcc3205f2c048616efacchkuang
579b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp1],      (%[dst])                     \n\t"
589b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp1],      4(%[dst])                    \n\t"
599b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp1],      8(%[dst])                    \n\t"
609b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp1],      12(%[dst])                   \n\t"
619b35249446b07f40ac5fcc3205f2c048616efacchkuang
629b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
639b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp2],      (%[dst])                     \n\t"
649b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp2],      4(%[dst])                    \n\t"
659b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp2],      8(%[dst])                    \n\t"
669b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp2],      12(%[dst])                   \n\t"
679b35249446b07f40ac5fcc3205f2c048616efacchkuang
689b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
699b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp3],      (%[dst])                     \n\t"
709b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp3],      4(%[dst])                    \n\t"
719b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp3],      8(%[dst])                    \n\t"
729b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp3],      12(%[dst])                   \n\t"
739b35249446b07f40ac5fcc3205f2c048616efacchkuang
749b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
759b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp4],      (%[dst])                     \n\t"
769b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp4],      4(%[dst])                    \n\t"
779b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp4],      8(%[dst])                    \n\t"
789b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp4],      12(%[dst])                   \n\t"
799b35249446b07f40ac5fcc3205f2c048616efacchkuang
809b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
819b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp5],      (%[dst])                     \n\t"
829b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp5],      4(%[dst])                    \n\t"
839b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp5],      8(%[dst])                    \n\t"
849b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp5],      12(%[dst])                   \n\t"
859b35249446b07f40ac5fcc3205f2c048616efacchkuang
869b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
879b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp6],      (%[dst])                     \n\t"
889b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp6],      4(%[dst])                    \n\t"
899b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp6],      8(%[dst])                    \n\t"
909b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp6],      12(%[dst])                   \n\t"
919b35249446b07f40ac5fcc3205f2c048616efacchkuang
929b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
939b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp7],      (%[dst])                     \n\t"
949b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp7],      4(%[dst])                    \n\t"
959b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp7],      8(%[dst])                    \n\t"
969b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp7],      12(%[dst])                   \n\t"
979b35249446b07f40ac5fcc3205f2c048616efacchkuang
989b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
999b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp8],      (%[dst])                     \n\t"
1009b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp8],      4(%[dst])                    \n\t"
1019b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp8],      8(%[dst])                    \n\t"
1029b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp8],      12(%[dst])                   \n\t"
1039b35249446b07f40ac5fcc3205f2c048616efacchkuang
1049b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1059b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp9],      (%[dst])                     \n\t"
1069b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp9],      4(%[dst])                    \n\t"
1079b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp9],      8(%[dst])                    \n\t"
1089b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp9],      12(%[dst])                   \n\t"
1099b35249446b07f40ac5fcc3205f2c048616efacchkuang
1109b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1119b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp10],     (%[dst])                     \n\t"
1129b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp10],     4(%[dst])                    \n\t"
1139b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp10],     8(%[dst])                    \n\t"
1149b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp10],     12(%[dst])                   \n\t"
1159b35249446b07f40ac5fcc3205f2c048616efacchkuang
1169b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1179b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp11],     (%[dst])                     \n\t"
1189b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp11],     4(%[dst])                    \n\t"
1199b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp11],     8(%[dst])                    \n\t"
1209b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp11],     12(%[dst])                   \n\t"
1219b35249446b07f40ac5fcc3205f2c048616efacchkuang
1229b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1239b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp12],     (%[dst])                     \n\t"
1249b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp12],     4(%[dst])                    \n\t"
1259b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp12],     8(%[dst])                    \n\t"
1269b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp12],     12(%[dst])                   \n\t"
1279b35249446b07f40ac5fcc3205f2c048616efacchkuang
1289b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1299b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp13],     (%[dst])                     \n\t"
1309b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp13],     4(%[dst])                    \n\t"
1319b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp13],     8(%[dst])                    \n\t"
1329b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp13],     12(%[dst])                   \n\t"
1339b35249446b07f40ac5fcc3205f2c048616efacchkuang
1349b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1359b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp14],     (%[dst])                     \n\t"
1369b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp14],     4(%[dst])                    \n\t"
1379b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp14],     8(%[dst])                    \n\t"
1389b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp14],     12(%[dst])                   \n\t"
1399b35249446b07f40ac5fcc3205f2c048616efacchkuang
1409b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1419b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp15],     (%[dst])                     \n\t"
1429b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp15],     4(%[dst])                    \n\t"
1439b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp15],     8(%[dst])                    \n\t"
1449b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp15],     12(%[dst])                   \n\t"
1459b35249446b07f40ac5fcc3205f2c048616efacchkuang
1469b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add        %[dst],       %[dst],         %[stride]    \n\t"
1479b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp16],     (%[dst])                     \n\t"
1489b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp16],     4(%[dst])                    \n\t"
1499b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp16],     8(%[dst])                    \n\t"
1509b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw         %[tmp16],     12(%[dst])                   \n\t"
1519b35249446b07f40ac5fcc3205f2c048616efacchkuang
1529b35249446b07f40ac5fcc3205f2c048616efacchkuang      : [tmp1] "=&r" (tmp1),   [tmp2] "=&r" (tmp2),
1539b35249446b07f40ac5fcc3205f2c048616efacchkuang        [tmp3] "=&r" (tmp3),   [tmp4] "=&r" (tmp4),
1549b35249446b07f40ac5fcc3205f2c048616efacchkuang        [tmp5] "=&r" (tmp5),   [tmp7] "=&r" (tmp7),
1559b35249446b07f40ac5fcc3205f2c048616efacchkuang        [tmp6] "=&r" (tmp6),   [tmp8] "=&r" (tmp8),
1569b35249446b07f40ac5fcc3205f2c048616efacchkuang        [tmp9] "=&r" (tmp9),   [tmp10] "=&r" (tmp10),
1579b35249446b07f40ac5fcc3205f2c048616efacchkuang        [tmp11] "=&r" (tmp11), [tmp12] "=&r" (tmp12),
1589b35249446b07f40ac5fcc3205f2c048616efacchkuang        [tmp13] "=&r" (tmp13), [tmp14] "=&r" (tmp14),
1599b35249446b07f40ac5fcc3205f2c048616efacchkuang        [tmp15] "=&r" (tmp15), [tmp16] "=&r" (tmp16)
1609b35249446b07f40ac5fcc3205f2c048616efacchkuang      : [left] "r" (left), [dst] "r" (dst), [stride] "r" (stride)
1619b35249446b07f40ac5fcc3205f2c048616efacchkuang  );
1629b35249446b07f40ac5fcc3205f2c048616efacchkuang}
1639b35249446b07f40ac5fcc3205f2c048616efacchkuang
1649b35249446b07f40ac5fcc3205f2c048616efacchkuangvoid vp9_dc_predictor_16x16_dspr2(uint8_t *dst, ptrdiff_t stride,
1659b35249446b07f40ac5fcc3205f2c048616efacchkuang                                  const uint8_t *above, const uint8_t *left) {
1669b35249446b07f40ac5fcc3205f2c048616efacchkuang  int32_t  expected_dc;
1679b35249446b07f40ac5fcc3205f2c048616efacchkuang  int32_t  average;
1689b35249446b07f40ac5fcc3205f2c048616efacchkuang  int32_t  tmp, above1, above_l1, above_r1, left1, left_r1, left_l1;
1699b35249446b07f40ac5fcc3205f2c048616efacchkuang  int32_t  above2, left2;
1709b35249446b07f40ac5fcc3205f2c048616efacchkuang
1719b35249446b07f40ac5fcc3205f2c048616efacchkuang  __asm__ __volatile__ (
1729b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[above1],           (%[above])                    \n\t"
1739b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[above2],           4(%[above])                   \n\t"
1749b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[left1],            (%[left])                     \n\t"
1759b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[left2],            4(%[left])                    \n\t"
1769b35249446b07f40ac5fcc3205f2c048616efacchkuang
1779b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[above_l1],         %[above1]                     \n\t"
1789b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[above_r1],         %[above1]                     \n\t"
1799b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[left_l1],          %[left1]                      \n\t"
1809b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[left_r1],          %[left1]                      \n\t"
1819b35249446b07f40ac5fcc3205f2c048616efacchkuang
1829b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[above_r1],     %[above_l1]  \n\t"
1839b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_l1]   \n\t"
1849b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_r1]   \n\t"
1859b35249446b07f40ac5fcc3205f2c048616efacchkuang
1869b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[above_l1],         %[above2]                     \n\t"
1879b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[above_r1],         %[above2]                     \n\t"
1889b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[left_l1],          %[left2]                      \n\t"
1899b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[left_r1],          %[left2]                      \n\t"
1909b35249446b07f40ac5fcc3205f2c048616efacchkuang
1919b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[above_l1]  \n\t"
1929b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[above_r1]  \n\t"
1939b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_l1]   \n\t"
1949b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_r1]   \n\t"
1959b35249446b07f40ac5fcc3205f2c048616efacchkuang
1969b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[above1],           8(%[above])                   \n\t"
1979b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[above2],           12(%[above])                  \n\t"
1989b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[left1],            8(%[left])                    \n\t"
1999b35249446b07f40ac5fcc3205f2c048616efacchkuang      "lw              %[left2],            12(%[left])                   \n\t"
2009b35249446b07f40ac5fcc3205f2c048616efacchkuang
2019b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[above_l1],         %[above1]                     \n\t"
2029b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[above_r1],         %[above1]                     \n\t"
2039b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[left_l1],          %[left1]                      \n\t"
2049b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[left_r1],          %[left1]                      \n\t"
2059b35249446b07f40ac5fcc3205f2c048616efacchkuang
2069b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[above_l1]  \n\t"
2079b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[above_r1]  \n\t"
2089b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_l1]   \n\t"
2099b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_r1]   \n\t"
2109b35249446b07f40ac5fcc3205f2c048616efacchkuang
2119b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[above_l1],         %[above2]                     \n\t"
2129b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[above_r1],         %[above2]                     \n\t"
2139b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbl   %[left_l1],          %[left2]                      \n\t"
2149b35249446b07f40ac5fcc3205f2c048616efacchkuang      "preceu.ph.qbr   %[left_r1],          %[left2]                      \n\t"
2159b35249446b07f40ac5fcc3205f2c048616efacchkuang
2169b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[above_l1]  \n\t"
2179b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[above_r1]  \n\t"
2189b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_l1]   \n\t"
2199b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[average],      %[left_r1]   \n\t"
2209b35249446b07f40ac5fcc3205f2c048616efacchkuang
2219b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addiu           %[average],          %[average],      16           \n\t"
2229b35249446b07f40ac5fcc3205f2c048616efacchkuang      "srl             %[tmp],              %[average],      16           \n\t"
2239b35249446b07f40ac5fcc3205f2c048616efacchkuang      "addu.ph         %[average],          %[tmp],          %[average]   \n\t"
2249b35249446b07f40ac5fcc3205f2c048616efacchkuang      "srl             %[expected_dc],      %[average],      5            \n\t"
2259b35249446b07f40ac5fcc3205f2c048616efacchkuang      "replv.qb        %[expected_dc],      %[expected_dc]                \n\t"
2269b35249446b07f40ac5fcc3205f2c048616efacchkuang
2279b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2289b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2299b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2309b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2319b35249446b07f40ac5fcc3205f2c048616efacchkuang
2329b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2339b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2349b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2359b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2369b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2379b35249446b07f40ac5fcc3205f2c048616efacchkuang
2389b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2399b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2409b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2419b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2429b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2439b35249446b07f40ac5fcc3205f2c048616efacchkuang
2449b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2459b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2469b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2479b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2489b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2499b35249446b07f40ac5fcc3205f2c048616efacchkuang
2509b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2519b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2529b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2539b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2549b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2559b35249446b07f40ac5fcc3205f2c048616efacchkuang
2569b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2579b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2589b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2599b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2609b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2619b35249446b07f40ac5fcc3205f2c048616efacchkuang
2629b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2639b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2649b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2659b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2669b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2679b35249446b07f40ac5fcc3205f2c048616efacchkuang
2689b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2699b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2709b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2719b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2729b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2739b35249446b07f40ac5fcc3205f2c048616efacchkuang
2749b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2759b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2769b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2779b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2789b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2799b35249446b07f40ac5fcc3205f2c048616efacchkuang
2809b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2819b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2829b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2839b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2849b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2859b35249446b07f40ac5fcc3205f2c048616efacchkuang
2869b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2879b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2889b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2899b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2909b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2919b35249446b07f40ac5fcc3205f2c048616efacchkuang
2929b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2939b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
2949b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
2959b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
2969b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
2979b35249446b07f40ac5fcc3205f2c048616efacchkuang
2989b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
2999b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
3009b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
3019b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
3029b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
3039b35249446b07f40ac5fcc3205f2c048616efacchkuang
3049b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
3059b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
3069b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
3079b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
3089b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
3099b35249446b07f40ac5fcc3205f2c048616efacchkuang
3109b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
3119b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
3129b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
3139b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
3149b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
3159b35249446b07f40ac5fcc3205f2c048616efacchkuang
3169b35249446b07f40ac5fcc3205f2c048616efacchkuang      "add             %[dst],              %[dst],          %[stride]    \n\t"
3179b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      (%[dst])                      \n\t"
3189b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      4(%[dst])                     \n\t"
3199b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      8(%[dst])                     \n\t"
3209b35249446b07f40ac5fcc3205f2c048616efacchkuang      "sw              %[expected_dc],      12(%[dst])                    \n\t"
3219b35249446b07f40ac5fcc3205f2c048616efacchkuang
3229b35249446b07f40ac5fcc3205f2c048616efacchkuang      : [left1] "=&r" (left1), [above1] "=&r" (above1),
3239b35249446b07f40ac5fcc3205f2c048616efacchkuang        [left_l1] "=&r" (left_l1), [above_l1] "=&r" (above_l1),
3249b35249446b07f40ac5fcc3205f2c048616efacchkuang        [left_r1] "=&r" (left_r1), [above_r1] "=&r" (above_r1),
3259b35249446b07f40ac5fcc3205f2c048616efacchkuang        [above2] "=&r" (above2), [left2] "=&r" (left2),
3269b35249446b07f40ac5fcc3205f2c048616efacchkuang        [average] "=&r" (average), [tmp] "=&r" (tmp),
3279b35249446b07f40ac5fcc3205f2c048616efacchkuang        [expected_dc] "=&r" (expected_dc)
3289b35249446b07f40ac5fcc3205f2c048616efacchkuang      : [above] "r" (above), [left] "r" (left),
3299b35249446b07f40ac5fcc3205f2c048616efacchkuang        [dst] "r" (dst), [stride] "r" (stride)
3309b35249446b07f40ac5fcc3205f2c048616efacchkuang  );
3319b35249446b07f40ac5fcc3205f2c048616efacchkuang}
3329b35249446b07f40ac5fcc3205f2c048616efacchkuang#endif  // #if HAVE_DSPR2
333