32     int A = 64, 
B, 
C, 
D, 
E;
 
   40             MMI_ULDC1(%[ftmp0], %[
src], 0x00)
 
   41             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
   42             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
   43             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
   44             MMI_ULDC1(%[ftmp2], %[
src], 0x00)
 
   45             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
   46             MMI_ULDC1(%[ftmp3], %[
src], 0x00)
 
   47             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
   49             "addi       %[h],       %[h],           -0x04              \n\t" 
   51             MMI_SDC1(%[ftmp0], %[dst], 0x00)
 
   52             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
   53             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
   54             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
   55             MMI_SDC1(%[ftmp2], %[dst], 0x00)
 
   56             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
   57             MMI_SDC1(%[ftmp3], %[dst], 0x00)
 
   58             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
   60             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
   61               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
   62               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
   75             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t" 
   76             "dli        %[tmp0],    0x06                               \n\t" 
   77             "pshufh     %[A],       %[A],           %[ftmp0]           \n\t" 
   78             "pshufh     %[B],       %[B],           %[ftmp0]           \n\t" 
   79             "mtc1       %[tmp0],    %[ftmp9]                           \n\t" 
   80             "pshufh     %[C],       %[C],           %[ftmp0]           \n\t" 
   81             "pshufh     %[D],       %[D],           %[ftmp0]           \n\t" 
   84             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
   85             MMI_ULDC1(%[ftmp2], %[
src], 0x01)
 
   86             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
   87             MMI_ULDC1(%[ftmp3], %[
src], 0x00)
 
   88             MMI_ULDC1(%[ftmp4], %[
src], 0x01)
 
   89             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
   90             MMI_ULDC1(%[ftmp10], %[
src], 0x00)
 
   91             MMI_ULDC1(%[ftmp11], %[
src], 0x01)
 
   92             "addi       %[h],       %[h],           -0x02              \n\t" 
   94             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]           \n\t" 
   95             "punpckhbh  %[ftmp6],   %[ftmp1],       %[ftmp0]           \n\t" 
   96             "punpcklbh  %[ftmp7],   %[ftmp2],       %[ftmp0]           \n\t" 
   97             "punpckhbh  %[ftmp8],   %[ftmp2],       %[ftmp0]           \n\t" 
   98             "pmullh     %[ftmp5],   %[ftmp5],       %[A]               \n\t" 
   99             "pmullh     %[ftmp7],   %[ftmp7],       %[B]               \n\t" 
  100             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp7]           \n\t" 
  101             "pmullh     %[ftmp6],   %[ftmp6],       %[A]               \n\t" 
  102             "pmullh     %[ftmp8],   %[ftmp8],       %[B]               \n\t" 
  103             "paddh      %[ftmp2],   %[ftmp6],       %[ftmp8]           \n\t" 
  104             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]           \n\t" 
  105             "punpckhbh  %[ftmp6],   %[ftmp3],       %[ftmp0]           \n\t" 
  106             "punpcklbh  %[ftmp7],   %[ftmp4],       %[ftmp0]           \n\t" 
  107             "punpckhbh  %[ftmp8],   %[ftmp4],       %[ftmp0]           \n\t" 
  108             "pmullh     %[ftmp5],   %[ftmp5],       %[C]               \n\t" 
  109             "pmullh     %[ftmp7],   %[ftmp7],       %[D]               \n\t" 
  110             "paddh      %[ftmp5],   %[ftmp5],       %[ftmp7]           \n\t" 
  111             "pmullh     %[ftmp6],   %[ftmp6],       %[C]               \n\t" 
  112             "pmullh     %[ftmp8],   %[ftmp8],       %[D]               \n\t" 
  113             "paddh      %[ftmp6],   %[ftmp6],       %[ftmp8]           \n\t" 
  114             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp5]           \n\t" 
  115             "paddh      %[ftmp2],   %[ftmp2],       %[ftmp6]           \n\t" 
  116             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]        \n\t" 
  117             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]        \n\t" 
  118             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp9]           \n\t" 
  119             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp9]           \n\t" 
  120             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]           \n\t" 
  122             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]           \n\t" 
  123             "punpckhbh  %[ftmp6],   %[ftmp3],       %[ftmp0]           \n\t" 
  124             "punpcklbh  %[ftmp7],   %[ftmp4],       %[ftmp0]           \n\t" 
  125             "punpckhbh  %[ftmp8],   %[ftmp4],       %[ftmp0]           \n\t" 
  126             "pmullh     %[ftmp5],   %[ftmp5],       %[A]               \n\t" 
  127             "pmullh     %[ftmp7],   %[ftmp7],       %[B]               \n\t" 
  128             "paddh      %[ftmp3],   %[ftmp5],       %[ftmp7]           \n\t" 
  129             "pmullh     %[ftmp6],   %[ftmp6],       %[A]               \n\t" 
  130             "pmullh     %[ftmp8],   %[ftmp8],       %[B]               \n\t" 
  131             "paddh      %[ftmp4],   %[ftmp6],       %[ftmp8]           \n\t" 
  132             "punpcklbh  %[ftmp5],   %[ftmp10],      %[ftmp0]           \n\t" 
  133             "punpckhbh  %[ftmp6],   %[ftmp10],      %[ftmp0]           \n\t" 
  134             "punpcklbh  %[ftmp7],   %[ftmp11],      %[ftmp0]           \n\t" 
  135             "punpckhbh  %[ftmp8],   %[ftmp11],      %[ftmp0]           \n\t" 
  136             "pmullh     %[ftmp5],   %[ftmp5],       %[C]               \n\t" 
  137             "pmullh     %[ftmp7],   %[ftmp7],       %[D]               \n\t" 
  138             "paddh      %[ftmp5],   %[ftmp5],       %[ftmp7]           \n\t" 
  139             "pmullh     %[ftmp6],   %[ftmp6],       %[C]               \n\t" 
  140             "pmullh     %[ftmp8],   %[ftmp8],       %[D]               \n\t" 
  141             "paddh      %[ftmp6],   %[ftmp6],       %[ftmp8]           \n\t" 
  142             "paddh      %[ftmp3],   %[ftmp3],       %[ftmp5]           \n\t" 
  143             "paddh      %[ftmp4],   %[ftmp4],       %[ftmp6]           \n\t" 
  144             "paddh      %[ftmp3],   %[ftmp3],       %[ff_pw_32]        \n\t" 
  145             "paddh      %[ftmp4],   %[ftmp4],       %[ff_pw_32]        \n\t" 
  146             "psrlh      %[ftmp3],   %[ftmp3],       %[ftmp9]           \n\t" 
  147             "psrlh      %[ftmp4],   %[ftmp4],       %[ftmp9]           \n\t" 
  148             "packushb   %[ftmp3],   %[ftmp3],       %[ftmp4]           \n\t" 
  150             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
  151             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
  152             MMI_SDC1(%[ftmp3], %[dst], 0x00)
 
  153             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
  155             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  156               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  157               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  158               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  159               [ftmp8]
"=&f"(ftmp[8]),        [ftmp9]
"=&f"(ftmp[9]),
 
  160               [ftmp10]
"=&f"(ftmp[10]),      [ftmp11]
"=&f"(ftmp[11]),
 
  162               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  165               [
A]
"f"(
A),                    [
B]
"f"(
B),
 
  175             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t" 
  176             "dli        %[tmp0],    0x06                               \n\t" 
  177             "pshufh     %[A],       %[A],           %[ftmp0]           \n\t" 
  178             "pshufh     %[E],       %[E],           %[ftmp0]           \n\t" 
  179             "mtc1       %[tmp0],    %[ftmp7]                           \n\t" 
  182             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
  183             MMI_ULDC1(%[ftmp2], %[
src], 0x01)
 
  184             "addi       %[h],       %[h],           -0x01              \n\t" 
  185             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
  187             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]           \n\t" 
  188             "punpckhbh  %[ftmp4],   %[ftmp1],       %[ftmp0]           \n\t" 
  189             "punpcklbh  %[ftmp5],   %[ftmp2],       %[ftmp0]           \n\t" 
  190             "punpckhbh  %[ftmp6],   %[ftmp2],       %[ftmp0]           \n\t" 
  191             "pmullh     %[ftmp3],   %[ftmp3],       %[A]               \n\t" 
  192             "pmullh     %[ftmp5],   %[ftmp5],       %[E]               \n\t" 
  193             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp5]           \n\t" 
  194             "pmullh     %[ftmp4],   %[ftmp4],       %[A]               \n\t" 
  195             "pmullh     %[ftmp6],   %[ftmp6],       %[E]               \n\t" 
  196             "paddh      %[ftmp2],   %[ftmp4],       %[ftmp6]           \n\t" 
  198             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]        \n\t" 
  199             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]        \n\t" 
  200             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]           \n\t" 
  201             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp7]           \n\t" 
  202             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]           \n\t" 
  203             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
  204             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
  206             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  207               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  208               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  209               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  211               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  224             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]           \n\t" 
  225             "dli        %[tmp0],    0x06                               \n\t" 
  226             "pshufh     %[A],       %[A],           %[ftmp0]           \n\t" 
  227             "pshufh     %[E],       %[E],           %[ftmp0]           \n\t" 
  228             "mtc1       %[tmp0],    %[ftmp7]                           \n\t" 
  231             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
  232             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
  233             MMI_ULDC1(%[ftmp2], %[
src], 0x00)
 
  234             PTR_ADDU   "%[src],     %[src],         %[stride]          \n\t" 
  235             MMI_ULDC1(%[ftmp8], %[
src], 0x00)
 
  236             "addi       %[h],       %[h],           -0x02              \n\t" 
  238             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]           \n\t" 
  239             "punpckhbh  %[ftmp4],   %[ftmp1],       %[ftmp0]           \n\t" 
  240             "punpcklbh  %[ftmp5],   %[ftmp2],       %[ftmp0]           \n\t" 
  241             "punpckhbh  %[ftmp6],   %[ftmp2],       %[ftmp0]           \n\t" 
  242             "pmullh     %[ftmp3],   %[ftmp3],       %[A]               \n\t" 
  243             "pmullh     %[ftmp5],   %[ftmp5],       %[E]               \n\t" 
  244             "paddh      %[ftmp3],   %[ftmp3],       %[ftmp5]           \n\t" 
  245             "pmullh     %[ftmp4],   %[ftmp4],       %[A]               \n\t" 
  246             "pmullh     %[ftmp6],   %[ftmp6],       %[E]               \n\t" 
  247             "paddh      %[ftmp4],   %[ftmp4],       %[ftmp6]           \n\t" 
  248             "paddh      %[ftmp3],   %[ftmp3],       %[ff_pw_32]        \n\t" 
  249             "paddh      %[ftmp4],   %[ftmp4],       %[ff_pw_32]        \n\t" 
  250             "psrlh      %[ftmp3],   %[ftmp3],       %[ftmp7]           \n\t" 
  251             "psrlh      %[ftmp4],   %[ftmp4],       %[ftmp7]           \n\t" 
  252             "packushb   %[ftmp1],   %[ftmp3],       %[ftmp4]           \n\t" 
  254             "punpcklbh  %[ftmp3],   %[ftmp2],       %[ftmp0]           \n\t" 
  255             "punpckhbh  %[ftmp4],   %[ftmp2],       %[ftmp0]           \n\t" 
  256             "punpcklbh  %[ftmp5],   %[ftmp8],       %[ftmp0]           \n\t" 
  257             "punpckhbh  %[ftmp6],   %[ftmp8],       %[ftmp0]           \n\t" 
  258             "pmullh     %[ftmp3],   %[ftmp3],       %[A]               \n\t" 
  259             "pmullh     %[ftmp5],   %[ftmp5],       %[E]               \n\t" 
  260             "paddh      %[ftmp3],   %[ftmp3],       %[ftmp5]           \n\t" 
  261             "pmullh     %[ftmp4],   %[ftmp4],       %[A]               \n\t" 
  262             "pmullh     %[ftmp6],   %[ftmp6],       %[E]               \n\t" 
  263             "paddh      %[ftmp4],   %[ftmp4],       %[ftmp6]           \n\t" 
  264             "paddh      %[ftmp3],   %[ftmp3],       %[ff_pw_32]        \n\t" 
  265             "paddh      %[ftmp4],   %[ftmp4],       %[ff_pw_32]        \n\t" 
  266             "psrlh      %[ftmp3],   %[ftmp3],       %[ftmp7]           \n\t" 
  267             "psrlh      %[ftmp4],   %[ftmp4],       %[ftmp7]           \n\t" 
  268             "packushb   %[ftmp2],   %[ftmp3],       %[ftmp4]           \n\t" 
  270             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
  271             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
  272             MMI_SDC1(%[ftmp2], %[dst], 0x00)
 
  273             PTR_ADDU   "%[dst],     %[dst],         %[stride]          \n\t" 
  275             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  276               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  277               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  278               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  279               [ftmp8]
"=&f"(ftmp[8]),        [tmp0]
"=&r"(
tmp[0]),
 
  280               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  293     int A = 64, 
B, 
C, 
D, 
E;
 
  301             MMI_ULDC1(%[ftmp0], %[
src], 0x00)
 
  302             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  303             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
  304             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  305             MMI_LDC1(%[ftmp2], %[dst], 0x00)
 
  306             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  307             MMI_LDC1(%[ftmp3], %[dst], 0x00)
 
  308             PTR_SUBU   "%[dst],     %[dst],         %[stride]           \n\t" 
  309             "pavgb      %[ftmp0],   %[ftmp0],       %[ftmp2]            \n\t" 
  310             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
  311             MMI_SDC1(%[ftmp0], %[dst], 0x00)
 
  312             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  313             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
  314             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  315             "addi       %[h],       %[h],           -0x02               \n\t" 
  317             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  318               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  319               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  331             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t" 
  332             "dli        %[tmp0],    0x06                           \n\t" 
  333             "pshufh     %[A],       %[A],           %[ftmp0]       \n\t" 
  334             "pshufh     %[B],       %[B],           %[ftmp0]       \n\t" 
  335             "mtc1       %[tmp0],    %[ftmp9]                       \n\t" 
  336             "pshufh     %[C],       %[C],           %[ftmp0]       \n\t" 
  337             "pshufh     %[D],       %[D],           %[ftmp0]       \n\t" 
  340             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
  341             MMI_ULDC1(%[ftmp2], %[
src], 0x01)
 
  342             PTR_ADDU   "%[src],     %[src],         %[stride]      \n\t" 
  343             MMI_ULDC1(%[ftmp3], %[
src], 0x00)
 
  344             MMI_ULDC1(%[ftmp4], %[
src], 0x01)
 
  345             "addi       %[h],       %[h],           -0x01          \n\t" 
  347             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]       \n\t" 
  348             "punpckhbh  %[ftmp6],   %[ftmp1],       %[ftmp0]       \n\t" 
  349             "punpcklbh  %[ftmp7],   %[ftmp2],       %[ftmp0]       \n\t" 
  350             "punpckhbh  %[ftmp8],   %[ftmp2],       %[ftmp0]       \n\t" 
  351             "pmullh     %[ftmp5],   %[ftmp5],       %[A]           \n\t" 
  352             "pmullh     %[ftmp7],   %[ftmp7],       %[B]           \n\t" 
  353             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp7]       \n\t" 
  354             "pmullh     %[ftmp6],   %[ftmp6],       %[A]           \n\t" 
  355             "pmullh     %[ftmp8],   %[ftmp8],       %[B]           \n\t" 
  356             "paddh      %[ftmp2],   %[ftmp6],       %[ftmp8]       \n\t" 
  358             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]       \n\t" 
  359             "punpckhbh  %[ftmp6],   %[ftmp3],       %[ftmp0]       \n\t" 
  360             "punpcklbh  %[ftmp7],   %[ftmp4],       %[ftmp0]       \n\t" 
  361             "punpckhbh  %[ftmp8],   %[ftmp4],       %[ftmp0]       \n\t" 
  362             "pmullh     %[ftmp5],   %[ftmp5],       %[C]           \n\t" 
  363             "pmullh     %[ftmp7],   %[ftmp7],       %[D]           \n\t" 
  364             "paddh      %[ftmp3],   %[ftmp5],       %[ftmp7]       \n\t" 
  365             "pmullh     %[ftmp6],   %[ftmp6],       %[C]           \n\t" 
  366             "pmullh     %[ftmp8],   %[ftmp8],       %[D]           \n\t" 
  367             "paddh      %[ftmp4],   %[ftmp6],       %[ftmp8]       \n\t" 
  369             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp3]       \n\t" 
  370             "paddh      %[ftmp2],   %[ftmp2],       %[ftmp4]       \n\t" 
  371             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]    \n\t" 
  372             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]    \n\t" 
  373             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp9]       \n\t" 
  374             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp9]       \n\t" 
  375             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]       \n\t" 
  376             MMI_LDC1(%[ftmp2], %[dst], 0x00)
 
  377             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]       \n\t" 
  378             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
  379             PTR_ADDU   "%[dst],     %[dst],         %[stride]      \n\t" 
  381             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  382               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  383               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  384               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  385               [ftmp8]
"=&f"(ftmp[8]),        [ftmp9]
"=&f"(ftmp[9]),
 
  387               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  390               [
A]
"f"(
A),                    [
B]
"f"(
B),
 
  399             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t" 
  400             "dli        %[tmp0],    0x06                           \n\t" 
  401             "pshufh     %[A],       %[A],           %[ftmp0]       \n\t" 
  402             "pshufh     %[E],       %[E],           %[ftmp0]       \n\t" 
  403             "mtc1       %[tmp0],    %[ftmp7]                       \n\t" 
  406             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
  407             MMI_ULDC1(%[ftmp2], %[
src], 0x01)
 
  408             PTR_ADDU   "%[src],     %[src],         %[stride]      \n\t" 
  409             "addi       %[h],       %[h],           -0x01          \n\t" 
  411             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]       \n\t" 
  412             "punpckhbh  %[ftmp4],   %[ftmp1],       %[ftmp0]       \n\t" 
  413             "punpcklbh  %[ftmp5],   %[ftmp2],       %[ftmp0]       \n\t" 
  414             "punpckhbh  %[ftmp6],   %[ftmp2],       %[ftmp0]       \n\t" 
  415             "pmullh     %[ftmp3],   %[ftmp3],       %[A]           \n\t" 
  416             "pmullh     %[ftmp5],   %[ftmp5],       %[E]           \n\t" 
  417             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp5]       \n\t" 
  418             "pmullh     %[ftmp4],   %[ftmp4],       %[A]           \n\t" 
  419             "pmullh     %[ftmp6],   %[ftmp6],       %[E]           \n\t" 
  420             "paddh      %[ftmp2],   %[ftmp4],       %[ftmp6]       \n\t" 
  422             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]    \n\t" 
  423             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]    \n\t" 
  424             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]       \n\t" 
  425             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp7]       \n\t" 
  426             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]       \n\t" 
  427             MMI_LDC1(%[ftmp2], %[dst], 0x00)
 
  428             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]       \n\t" 
  429             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
  430             PTR_ADDU   "%[dst],     %[dst],         %[stride]      \n\t" 
  432             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  433               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  434               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  435               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  437               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  449             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]       \n\t" 
  450             "dli        %[tmp0],    0x06                           \n\t" 
  451             "pshufh     %[A],       %[A],           %[ftmp0]       \n\t" 
  452             "pshufh     %[E],       %[E],           %[ftmp0]       \n\t" 
  453             "mtc1       %[tmp0],    %[ftmp7]                       \n\t" 
  456             MMI_ULDC1(%[ftmp1], %[
src], 0x00)
 
  457             PTR_ADDU   "%[src],     %[src],         %[stride]      \n\t" 
  458             MMI_ULDC1(%[ftmp2], %[
src], 0x00)
 
  459             "addi       %[h],       %[h],           -0x01          \n\t" 
  461             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]       \n\t" 
  462             "punpckhbh  %[ftmp4],   %[ftmp1],       %[ftmp0]       \n\t" 
  463             "punpcklbh  %[ftmp5],   %[ftmp2],       %[ftmp0]       \n\t" 
  464             "punpckhbh  %[ftmp6],   %[ftmp2],       %[ftmp0]       \n\t" 
  465             "pmullh     %[ftmp3],   %[ftmp3],       %[A]           \n\t" 
  466             "pmullh     %[ftmp5],   %[ftmp5],       %[E]           \n\t" 
  467             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp5]       \n\t" 
  468             "pmullh     %[ftmp4],   %[ftmp4],       %[A]           \n\t" 
  469             "pmullh     %[ftmp6],   %[ftmp6],       %[E]           \n\t" 
  470             "paddh      %[ftmp2],   %[ftmp4],       %[ftmp6]       \n\t" 
  472             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]    \n\t" 
  473             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]    \n\t" 
  474             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]       \n\t" 
  475             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp7]       \n\t" 
  476             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]       \n\t" 
  477             MMI_LDC1(%[ftmp2], %[dst], 0x00)
 
  478             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]       \n\t" 
  479             MMI_SDC1(%[ftmp1], %[dst], 0x00)
 
  480             PTR_ADDU   "%[dst],     %[dst],         %[stride]      \n\t" 
  482             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  483               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  484               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  485               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  487               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  500     const int A = (8 - x) * (8 - y);
 
  501     const int B = x * (8 - y);
 
  502     const int C = (8 - x) * y;
 
  512             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  513             "dli        %[tmp0],    0x06                                \n\t" 
  514             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  515             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t" 
  516             "mtc1       %[tmp0],    %[ftmp7]                            \n\t" 
  517             "pshufh     %[C],       %[C],           %[ftmp0]            \n\t" 
  518             "pshufh     %[D],       %[D],           %[ftmp0]            \n\t" 
  521             MMI_ULWC1(%[ftmp1], %[
src], 0x00)
 
  522             MMI_ULWC1(%[ftmp2], %[
src], 0x01)
 
  523             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  524             MMI_ULWC1(%[ftmp3], %[
src], 0x00)
 
  525             MMI_ULWC1(%[ftmp4], %[
src], 0x01)
 
  527             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]            \n\t" 
  528             "punpcklbh  %[ftmp6],   %[ftmp2],       %[ftmp0]            \n\t" 
  529             "pmullh     %[ftmp5],   %[ftmp5],       %[A]                \n\t" 
  530             "pmullh     %[ftmp6],   %[ftmp6],       %[B]                \n\t" 
  531             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp6]            \n\t" 
  532             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]            \n\t" 
  533             "punpcklbh  %[ftmp6],   %[ftmp4],       %[ftmp0]            \n\t" 
  534             "pmullh     %[ftmp5],   %[ftmp5],       %[C]                \n\t" 
  535             "pmullh     %[ftmp6],   %[ftmp6],       %[D]                \n\t" 
  536             "paddh      %[ftmp2],   %[ftmp5],       %[ftmp6]            \n\t" 
  537             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  538             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  539             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]            \n\t" 
  540             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  542             "addi       %[h],       %[h],           -0x01               \n\t" 
  543             MMI_SWC1(%[ftmp1], %[dst], 0x00)
 
  544             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  546             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  547               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  548               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  549               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  552               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  555               [
A]
"f"(
A),                    [
B]
"f"(
B),
 
  562             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  563             "dli        %[tmp0],    0x06                                \n\t" 
  564             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  565             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t" 
  566             "mtc1       %[tmp0],    %[ftmp5]                            \n\t" 
  569             MMI_ULWC1(%[ftmp1], %[
src], 0x00)
 
  570             PTR_ADDU   "%[addr0],   %[src],         %[step]             \n\t" 
  571             MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
 
  572             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  573             "addi       %[h],       %[h],           -0x01               \n\t" 
  574             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  575             "punpcklbh  %[ftmp4],   %[ftmp2],       %[ftmp0]            \n\t" 
  576             "pmullh     %[ftmp3],   %[ftmp3],       %[A]                \n\t" 
  577             "pmullh     %[ftmp4],   %[ftmp4],       %[E]                \n\t" 
  578             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp4]            \n\t" 
  579             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  580             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp5]            \n\t" 
  581             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  582             MMI_SWC1(%[ftmp1], %[dst], 0x00)
 
  583             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  585             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  586               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  587               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  590               [addr0]
"=&r"(addr[0]),
 
  591               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  601             MMI_ULWC1(%[ftmp0], %[
src], 0x00)
 
  602             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  603             MMI_ULWC1(%[ftmp1], %[
src], 0x00)
 
  604             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  605             "addi       %[h],       %[h],           -0x02               \n\t" 
  606             MMI_SWC1(%[ftmp0], %[dst], 0x00)
 
  607             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  608             MMI_SWC1(%[ftmp1], %[dst], 0x00)
 
  609             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  611             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  612               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  624     const int A = (8 - x) *(8 - y);
 
  625     const int B = x * (8 - y);
 
  626     const int C = (8 - x) * y;
 
  636             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  637             "dli        %[tmp0],    0x06                                \n\t" 
  638             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  639             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t" 
  640             "mtc1       %[tmp0],    %[ftmp7]                            \n\t" 
  641             "pshufh     %[C],       %[C],           %[ftmp0]            \n\t" 
  642             "pshufh     %[D],       %[D],           %[ftmp0]            \n\t" 
  645             MMI_ULWC1(%[ftmp1], %[
src], 0x00)
 
  646             MMI_ULWC1(%[ftmp2], %[
src], 0x01)
 
  647             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  648             MMI_ULWC1(%[ftmp3], %[
src], 0x00)
 
  649             MMI_ULWC1(%[ftmp4], %[
src], 0x01)
 
  651             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]            \n\t" 
  652             "punpcklbh  %[ftmp6],   %[ftmp2],       %[ftmp0]            \n\t" 
  653             "pmullh     %[ftmp5],   %[ftmp5],       %[A]                \n\t" 
  654             "pmullh     %[ftmp6],   %[ftmp6],       %[B]                \n\t" 
  655             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp6]            \n\t" 
  656             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]            \n\t" 
  657             "punpcklbh  %[ftmp6],   %[ftmp4],       %[ftmp0]            \n\t" 
  658             "pmullh     %[ftmp5],   %[ftmp5],       %[C]                \n\t" 
  659             "pmullh     %[ftmp6],   %[ftmp6],       %[D]                \n\t" 
  660             "paddh      %[ftmp2],   %[ftmp5],       %[ftmp6]            \n\t" 
  661             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  662             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  663             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]            \n\t" 
  664             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  665             MMI_LWC1(%[ftmp2], %[dst], 0x00)
 
  666             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  668             "addi       %[h],       %[h],           -0x01               \n\t" 
  669             MMI_SWC1(%[ftmp1], %[dst], 0x00)
 
  670             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  672             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  673               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  674               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  675               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  678               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  681               [
A]
"f"(
A),                    [
B]
"f"(
B),
 
  688             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  689             "dli        %[tmp0],    0x06                                \n\t" 
  690             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  691             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t" 
  692             "mtc1       %[tmp0],    %[ftmp5]                            \n\t" 
  695             MMI_ULWC1(%[ftmp1], %[
src], 0x00)
 
  696             PTR_ADDU   "%[addr0],   %[src],         %[step]             \n\t" 
  697             MMI_ULWC1(%[ftmp2], %[addr0], 0x00)
 
  698             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  699             "addi       %[h],       %[h],           -0x01               \n\t" 
  700             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  701             "punpcklbh  %[ftmp4],   %[ftmp2],       %[ftmp0]            \n\t" 
  702             "pmullh     %[ftmp3],   %[ftmp3],       %[A]                \n\t" 
  703             "pmullh     %[ftmp4],   %[ftmp4],       %[E]                \n\t" 
  704             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp4]            \n\t" 
  705             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  706             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp5]            \n\t" 
  707             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  708             MMI_LWC1(%[ftmp2], %[dst], 0x00)
 
  709             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  710             MMI_SWC1(%[ftmp1], %[dst], 0x00)
 
  711             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  713             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  714               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  715               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  718               [addr0]
"=&r"(addr[0]),
 
  719               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  729             MMI_ULWC1(%[ftmp0], %[
src], 0x00)
 
  730             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  731             MMI_ULWC1(%[ftmp1], %[
src], 0x00)
 
  732             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  733             "addi       %[h],       %[h],           -0x02               \n\t" 
  734             MMI_LWC1(%[ftmp2], %[dst], 0x00)
 
  735             "pavgb      %[ftmp0],   %[ftmp0],       %[ftmp2]            \n\t" 
  736             MMI_SWC1(%[ftmp0], %[dst], 0x00)
 
  737             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  738             MMI_LWC1(%[ftmp3], %[dst], 0x00)
 
  739             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
  740             MMI_SWC1(%[ftmp1], %[dst], 0x00)
 
  741             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  743             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  744               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  745               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),