32     const int A = (8 - x) * (8 - y);
 
   33     const int B = x * (8 - y);
 
   34     const int C = (8 - x) * y;
 
   43             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
   44             "dli        %[tmp0],    0x06                                \n\t" 
   45             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
   46             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t" 
   47             "mtc1       %[tmp0],    %[ftmp9]                            \n\t" 
   48             "pshufh     %[C],       %[C],           %[ftmp0]            \n\t" 
   49             "pshufh     %[D],       %[D],           %[ftmp0]            \n\t" 
   51             PTR_ADDU   "%[addr0],   %[src],         %[stride]           \n\t" 
   52             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
   53             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
   54             "gsldlc1    %[ftmp2],   0x08(%[src])                        \n\t" 
   55             "gsldrc1    %[ftmp2],   0x01(%[src])                        \n\t" 
   56             "gsldlc1    %[ftmp3],   0x07(%[addr0])                      \n\t" 
   57             "gsldrc1    %[ftmp3],   0x00(%[addr0])                      \n\t" 
   58             "gsldlc1    %[ftmp4],   0x08(%[addr0])                      \n\t" 
   59             "gsldrc1    %[ftmp4],   0x01(%[addr0])                      \n\t" 
   61             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]            \n\t" 
   62             "punpckhbh  %[ftmp6],   %[ftmp1],       %[ftmp0]            \n\t" 
   63             "punpcklbh  %[ftmp7],   %[ftmp2],       %[ftmp0]            \n\t" 
   64             "punpckhbh  %[ftmp8],   %[ftmp2],       %[ftmp0]            \n\t" 
   65             "pmullh     %[ftmp5],   %[ftmp5],       %[A]                \n\t" 
   66             "pmullh     %[ftmp7],   %[ftmp7],       %[B]                \n\t" 
   67             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp7]            \n\t" 
   68             "pmullh     %[ftmp6],   %[ftmp6],       %[A]                \n\t" 
   69             "pmullh     %[ftmp8],   %[ftmp8],       %[B]                \n\t" 
   70             "paddh      %[ftmp2],   %[ftmp6],       %[ftmp8]            \n\t" 
   72             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]            \n\t" 
   73             "punpckhbh  %[ftmp6],   %[ftmp3],       %[ftmp0]            \n\t" 
   74             "punpcklbh  %[ftmp7],   %[ftmp4],       %[ftmp0]            \n\t" 
   75             "punpckhbh  %[ftmp8],   %[ftmp4],       %[ftmp0]            \n\t" 
   76             "pmullh     %[ftmp5],   %[ftmp5],       %[C]                \n\t" 
   77             "pmullh     %[ftmp7],   %[ftmp7],       %[D]                \n\t" 
   78             "paddh      %[ftmp3],   %[ftmp5],       %[ftmp7]            \n\t" 
   79             "pmullh     %[ftmp6],   %[ftmp6],       %[C]                \n\t" 
   80             "pmullh     %[ftmp8],   %[ftmp8],       %[D]                \n\t" 
   81             "paddh      %[ftmp4],   %[ftmp6],       %[ftmp8]            \n\t" 
   83             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
   84             "paddh      %[ftmp2],   %[ftmp2],       %[ftmp4]            \n\t" 
   85             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
   86             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
   87             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp9]            \n\t" 
   88             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp9]            \n\t" 
   89             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
   90             "addi       %[h],       %[h],           -0x01               \n\t" 
   91             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
   92             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
   93             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
   95             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
   96               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
   97               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
   98               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
   99               [ftmp8]
"=&f"(ftmp[8]),        [ftmp9]
"=&f"(ftmp[9]),
 
  101               [addr0]
"=&r"(addr[0]),
 
  102               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  105               [
A]
"f"(
A),                    [B]
"f"(B),
 
  110         const int step = C ? stride : 1;
 
  113             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  114             "dli        %[tmp0],    0x06                                \n\t" 
  115             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  116             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t" 
  117             "mtc1       %[tmp0],    %[ftmp7]                            \n\t" 
  119             PTR_ADDU   "%[addr0],   %[src],         %[step]             \n\t" 
  120             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
  121             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
  122             "gsldlc1    %[ftmp2],   0x07(%[addr0])                      \n\t" 
  123             "gsldrc1    %[ftmp2],   0x00(%[addr0])                      \n\t" 
  125             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  126             "punpckhbh  %[ftmp4],   %[ftmp1],       %[ftmp0]            \n\t" 
  127             "punpcklbh  %[ftmp5],   %[ftmp2],       %[ftmp0]            \n\t" 
  128             "punpckhbh  %[ftmp6],   %[ftmp2],       %[ftmp0]            \n\t" 
  129             "pmullh     %[ftmp3],   %[ftmp3],       %[A]                \n\t" 
  130             "pmullh     %[ftmp5],   %[ftmp5],       %[E]                \n\t" 
  131             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp5]            \n\t" 
  132             "pmullh     %[ftmp4],   %[ftmp4],       %[A]                \n\t" 
  133             "pmullh     %[ftmp6],   %[ftmp6],       %[E]                \n\t" 
  134             "paddh      %[ftmp2],   %[ftmp4],       %[ftmp6]            \n\t" 
  136             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  137             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
  138             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]            \n\t" 
  139             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp7]            \n\t" 
  140             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  141             "addi       %[h],       %[h],           -0x01               \n\t" 
  142             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  143             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  144             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  146             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  147               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  148               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  149               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  151               [addr0]
"=&r"(addr[0]),
 
  152               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  161             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  162             "dli        %[tmp0],    0x06                                \n\t" 
  163             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  164             "mtc1       %[tmp0],    %[ftmp4]                            \n\t" 
  166             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
  167             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
  168             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  169             "punpckhbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  170             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  171             "pmullh     %[ftmp2],   %[ftmp3],       %[A]                \n\t" 
  172             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  173             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
  174             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp4]            \n\t" 
  175             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp4]            \n\t" 
  176             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  177             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  178             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  180             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  181             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
  182             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
  183             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  184             "punpckhbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  185             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  186             "pmullh     %[ftmp2],   %[ftmp3],       %[A]                \n\t" 
  187             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  188             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
  189             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp4]            \n\t" 
  190             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp4]            \n\t" 
  191             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  192             "addi       %[h],       %[h],           -0x02               \n\t" 
  193             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  195             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  196             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  198             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  199               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  200               [ftmp4]
"=&f"(ftmp[4]),
 
  202               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  214     const int A = (8 - x) * (8 - y);
 
  215     const int B = x * (8 - y);
 
  216     const int C = (8 - x) * y;
 
  225             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  226             "dli        %[tmp0],    0x06                                \n\t" 
  227             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  228             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t" 
  229             "mtc1       %[tmp0],    %[ftmp9]                            \n\t" 
  230             "pshufh     %[C],       %[C],           %[ftmp0]            \n\t" 
  231             "pshufh     %[D],       %[D],           %[ftmp0]            \n\t" 
  233             PTR_ADDU   "%[addr0],   %[src],         %[stride]           \n\t" 
  234             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
  235             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
  236             "gsldlc1    %[ftmp2],   0x08(%[src])                        \n\t" 
  237             "gsldrc1    %[ftmp2],   0x01(%[src])                        \n\t" 
  238             "gsldlc1    %[ftmp3],   0x07(%[addr0])                      \n\t" 
  239             "gsldrc1    %[ftmp3],   0x00(%[addr0])                      \n\t" 
  240             "gsldlc1    %[ftmp4],   0x08(%[addr0])                      \n\t" 
  241             "gsldrc1    %[ftmp4],   0x01(%[addr0])                      \n\t" 
  243             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]            \n\t" 
  244             "punpckhbh  %[ftmp6],   %[ftmp1],       %[ftmp0]            \n\t" 
  245             "punpcklbh  %[ftmp7],   %[ftmp2],       %[ftmp0]            \n\t" 
  246             "punpckhbh  %[ftmp8],   %[ftmp2],       %[ftmp0]            \n\t" 
  247             "pmullh     %[ftmp5],   %[ftmp5],       %[A]                \n\t" 
  248             "pmullh     %[ftmp7],   %[ftmp7],       %[B]                \n\t" 
  249             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp7]            \n\t" 
  250             "pmullh     %[ftmp6],   %[ftmp6],       %[A]                \n\t" 
  251             "pmullh     %[ftmp8],   %[ftmp8],       %[B]                \n\t" 
  252             "paddh      %[ftmp2],   %[ftmp6],       %[ftmp8]            \n\t" 
  254             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]            \n\t" 
  255             "punpckhbh  %[ftmp6],   %[ftmp3],       %[ftmp0]            \n\t" 
  256             "punpcklbh  %[ftmp7],   %[ftmp4],       %[ftmp0]            \n\t" 
  257             "punpckhbh  %[ftmp8],   %[ftmp4],       %[ftmp0]            \n\t" 
  258             "pmullh     %[ftmp5],   %[ftmp5],       %[C]                \n\t" 
  259             "pmullh     %[ftmp7],   %[ftmp7],       %[D]                \n\t" 
  260             "paddh      %[ftmp3],   %[ftmp5],       %[ftmp7]            \n\t" 
  261             "pmullh     %[ftmp6],   %[ftmp6],       %[C]                \n\t" 
  262             "pmullh     %[ftmp8],   %[ftmp8],       %[D]                \n\t" 
  263             "paddh      %[ftmp4],   %[ftmp6],       %[ftmp8]            \n\t" 
  265             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
  266             "paddh      %[ftmp2],   %[ftmp2],       %[ftmp4]            \n\t" 
  267             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  268             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
  269             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp9]            \n\t" 
  270             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp9]            \n\t" 
  271             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  272             "ldc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  273             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  274             "addi       %[h],       %[h],           -0x01               \n\t" 
  275             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  276             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  277             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  279             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  280               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  281               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  282               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  283               [ftmp8]
"=&f"(ftmp[8]),        [ftmp9]
"=&f"(ftmp[9]),
 
  285               [addr0]
"=&r"(addr[0]),
 
  286               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  289               [
A]
"f"(
A),                    [B]
"f"(B),
 
  294         const int step = C ? stride : 1;
 
  297             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  298             "dli        %[tmp0],    0x06                                \n\t" 
  299             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  300             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t" 
  301             "mtc1       %[tmp0],    %[ftmp7]                            \n\t" 
  303             PTR_ADDU   "%[addr0],   %[src],         %[step]             \n\t" 
  304             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
  305             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
  306             "gsldlc1    %[ftmp2],   0x07(%[addr0])                      \n\t" 
  307             "gsldrc1    %[ftmp2],   0x00(%[addr0])                      \n\t" 
  309             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  310             "punpckhbh  %[ftmp4],   %[ftmp1],       %[ftmp0]            \n\t" 
  311             "punpcklbh  %[ftmp5],   %[ftmp2],       %[ftmp0]            \n\t" 
  312             "punpckhbh  %[ftmp6],   %[ftmp2],       %[ftmp0]            \n\t" 
  313             "pmullh     %[ftmp3],   %[ftmp3],       %[A]                \n\t" 
  314             "pmullh     %[ftmp5],   %[ftmp5],       %[E]                \n\t" 
  315             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp5]            \n\t" 
  316             "pmullh     %[ftmp4],   %[ftmp4],       %[A]                \n\t" 
  317             "pmullh     %[ftmp6],   %[ftmp6],       %[E]                \n\t" 
  318             "paddh      %[ftmp2],   %[ftmp4],       %[ftmp6]            \n\t" 
  320             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  321             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
  322             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]            \n\t" 
  323             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp7]            \n\t" 
  324             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  325             "ldc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  326             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  327             "addi       %[h],       %[h],           -0x01               \n\t" 
  328             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  329             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  330             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  332             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  333               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  334               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  335               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  337               [addr0]
"=&r"(addr[0]),
 
  338               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  347             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  348             "dli        %[tmp0],    0x06                                \n\t" 
  349             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  350             "mtc1       %[tmp0],    %[ftmp4]                            \n\t" 
  352             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
  353             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
  354             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  355             "punpckhbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  356             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  357             "pmullh     %[ftmp2],   %[ftmp3],       %[A]                \n\t" 
  358             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  359             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
  360             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp4]            \n\t" 
  361             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp4]            \n\t" 
  362             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  363             "ldc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  364             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  365             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  366             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  367             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  369             "gsldlc1    %[ftmp1],   0x07(%[src])                        \n\t" 
  370             "gsldrc1    %[ftmp1],   0x00(%[src])                        \n\t" 
  371             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  372             "punpckhbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  373             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  374             "pmullh     %[ftmp2],   %[ftmp3],       %[A]                \n\t" 
  375             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  376             "paddh      %[ftmp2],   %[ftmp2],       %[ff_pw_32]         \n\t" 
  377             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp4]            \n\t" 
  378             "psrlh      %[ftmp2],   %[ftmp2],       %[ftmp4]            \n\t" 
  379             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  380             "ldc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  381             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  382             "addi       %[h],       %[h],           -0x02               \n\t" 
  383             "sdc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  385             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  386             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  388             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  389               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  390               [ftmp4]
"=&f"(ftmp[4]),
 
  392               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  404     const int A = (8 - x) * (8 - y);
 
  405     const int B = x * (8 - y);
 
  406     const int C = (8 - x) *  y;
 
  416             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  417             "dli        %[tmp0],    0x06                                \n\t" 
  418             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  419             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t" 
  420             "mtc1       %[tmp0],    %[ftmp7]                            \n\t" 
  421             "pshufh     %[C],       %[C],           %[ftmp0]            \n\t" 
  422             "pshufh     %[D],       %[D],           %[ftmp0]            \n\t" 
  424             PTR_ADDU   "%[addr0],   %[src],         %[stride]           \n\t" 
  425             "uld        %[low32],   0x00(%[src])                        \n\t" 
  426             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  427             "uld        %[low32],   0x01(%[src])                        \n\t" 
  428             "mtc1       %[low32],   %[ftmp2]                            \n\t" 
  429             "uld        %[low32],   0x00(%[addr0])                      \n\t" 
  430             "mtc1       %[low32],   %[ftmp3]                            \n\t" 
  431             "uld        %[low32],   0x01(%[addr0])                      \n\t" 
  432             "mtc1       %[low32],   %[ftmp4]                            \n\t" 
  434             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]            \n\t" 
  435             "punpcklbh  %[ftmp6],   %[ftmp2],       %[ftmp0]            \n\t" 
  436             "pmullh     %[ftmp5],   %[ftmp5],       %[A]                \n\t" 
  437             "pmullh     %[ftmp6],   %[ftmp6],       %[B]                \n\t" 
  438             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp6]            \n\t" 
  440             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]            \n\t" 
  441             "punpcklbh  %[ftmp6],   %[ftmp4],       %[ftmp0]            \n\t" 
  442             "pmullh     %[ftmp5],   %[ftmp5],       %[C]                \n\t" 
  443             "pmullh     %[ftmp6],   %[ftmp6],       %[D]                \n\t" 
  444             "paddh      %[ftmp2],   %[ftmp5],       %[ftmp6]            \n\t" 
  446             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  447             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  448             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]            \n\t" 
  449             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  450             "addi       %[h],       %[h],           -0x01               \n\t" 
  451             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  452             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  453             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  455             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  456               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  457               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  458               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  460               [addr0]
"=&r"(addr[0]),
 
  461               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  465               [A]
"f"(A),                    [
B]
"f"(
B),
 
  470         const int step = C ? stride : 1;
 
  473             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  474             "dli        %[tmp0],    0x06                                \n\t" 
  475             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  476             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t" 
  477             "mtc1       %[tmp0],    %[ftmp5]                            \n\t" 
  479             PTR_ADDU   "%[addr0],   %[src],         %[step]             \n\t" 
  480             "uld        %[low32],   0x00(%[src])                        \n\t" 
  481             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  482             "uld        %[low32],   0x00(%[addr0])                      \n\t" 
  483             "mtc1       %[low32],   %[ftmp2]                            \n\t" 
  485             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  486             "punpcklbh  %[ftmp4],   %[ftmp2],       %[ftmp0]            \n\t" 
  487             "pmullh     %[ftmp3],   %[ftmp3],       %[A]                \n\t" 
  488             "pmullh     %[ftmp4],   %[ftmp4],       %[E]                \n\t" 
  489             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp4]            \n\t" 
  491             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  492             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp5]            \n\t" 
  493             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  494             "addi       %[h],       %[h],           -0x01               \n\t" 
  495             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  496             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  497             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  499             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  500               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  501               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  503               [addr0]
"=&r"(addr[0]),
 
  504               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  514             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  515             "dli        %[tmp0],    0x06                                \n\t" 
  516             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  517             "mtc1       %[tmp0],    %[ftmp3]                            \n\t" 
  519             "uld        %[low32],   0x00(%[src])                        \n\t" 
  520             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  521             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  522             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  523             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  524             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
  525             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  526             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  527             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  528             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  530             "uld        %[low32],   0x00(%[src])                        \n\t" 
  531             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  532             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  533             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  534             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  535             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
  536             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  537             "addi       %[h],       %[h],           -0x02               \n\t" 
  538             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  540             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  541             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  543             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  544               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  546               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
  559     const int A = (8 - x) *(8 - y);
 
  560     const int B = x * (8 - y);
 
  561     const int C = (8 - x) * y;
 
  571             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  572             "dli        %[tmp0],    0x06                                \n\t" 
  573             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  574             "pshufh     %[B],       %[B],           %[ftmp0]            \n\t" 
  575             "mtc1       %[tmp0],    %[ftmp7]                            \n\t" 
  576             "pshufh     %[C],       %[C],           %[ftmp0]            \n\t" 
  577             "pshufh     %[D],       %[D],           %[ftmp0]            \n\t" 
  579             PTR_ADDU   "%[addr0],   %[src],         %[stride]           \n\t" 
  580             "uld        %[low32],   0x00(%[src])                        \n\t" 
  581             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  582             "uld        %[low32],   0x01(%[src])                        \n\t" 
  583             "mtc1       %[low32],   %[ftmp2]                            \n\t" 
  584             "uld        %[low32],   0x00(%[addr0])                      \n\t" 
  585             "mtc1       %[low32],   %[ftmp3]                            \n\t" 
  586             "uld        %[low32],   0x01(%[addr0])                      \n\t" 
  587             "mtc1       %[low32],   %[ftmp4]                            \n\t" 
  589             "punpcklbh  %[ftmp5],   %[ftmp1],       %[ftmp0]            \n\t" 
  590             "punpcklbh  %[ftmp6],   %[ftmp2],       %[ftmp0]            \n\t" 
  591             "pmullh     %[ftmp5],   %[ftmp5],       %[A]                \n\t" 
  592             "pmullh     %[ftmp6],   %[ftmp6],       %[B]                \n\t" 
  593             "paddh      %[ftmp1],   %[ftmp5],       %[ftmp6]            \n\t" 
  595             "punpcklbh  %[ftmp5],   %[ftmp3],       %[ftmp0]            \n\t" 
  596             "punpcklbh  %[ftmp6],   %[ftmp4],       %[ftmp0]            \n\t" 
  597             "pmullh     %[ftmp5],   %[ftmp5],       %[C]                \n\t" 
  598             "pmullh     %[ftmp6],   %[ftmp6],       %[D]                \n\t" 
  599             "paddh      %[ftmp2],   %[ftmp5],       %[ftmp6]            \n\t" 
  601             "paddh      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  602             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  603             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp7]            \n\t" 
  604             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  605             "lwc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  606             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  607             "addi       %[h],       %[h],           -0x01               \n\t" 
  608             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  609             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  610             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  612             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  613               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  614               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  615               [ftmp6]
"=&f"(ftmp[6]),        [ftmp7]
"=&f"(ftmp[7]),
 
  617               [addr0]
"=&r"(addr[0]),
 
  618               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  622               [A]
"f"(A),                    [
B]
"f"(
B),
 
  627         const int step = C ? stride : 1;
 
  630             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  631             "dli        %[tmp0],    0x06                                \n\t" 
  632             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  633             "pshufh     %[E],       %[E],           %[ftmp0]            \n\t" 
  634             "mtc1       %[tmp0],    %[ftmp5]                            \n\t" 
  636             PTR_ADDU   "%[addr0],   %[src],         %[step]             \n\t" 
  637             "uld        %[low32],   0x00(%[src])                        \n\t" 
  638             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  639             "uld        %[low32],   0x00(%[addr0])                      \n\t" 
  640             "mtc1       %[low32],   %[ftmp2]                            \n\t" 
  642             "punpcklbh  %[ftmp3],   %[ftmp1],       %[ftmp0]            \n\t" 
  643             "punpcklbh  %[ftmp4],   %[ftmp2],       %[ftmp0]            \n\t" 
  644             "pmullh     %[ftmp3],   %[ftmp3],       %[A]                \n\t" 
  645             "pmullh     %[ftmp4],   %[ftmp4],       %[E]                \n\t" 
  646             "paddh      %[ftmp1],   %[ftmp3],       %[ftmp4]            \n\t" 
  648             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  649             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp5]            \n\t" 
  650             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  651             "lwc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  652             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  653             "addi       %[h],       %[h],           -0x01               \n\t" 
  654             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  655             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  656             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  658             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  659               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  660               [ftmp4]
"=&f"(ftmp[4]),        [ftmp5]
"=&f"(ftmp[5]),
 
  662               [addr0]
"=&r"(addr[0]),
 
  663               [dst]
"+&r"(dst),              [src]
"+&r"(src),
 
  673             "xor        %[ftmp0],   %[ftmp0],       %[ftmp0]            \n\t" 
  674             "dli        %[tmp0],    0x06                                \n\t" 
  675             "pshufh     %[A],       %[A],           %[ftmp0]            \n\t" 
  676             "mtc1       %[tmp0],    %[ftmp3]                            \n\t" 
  678             "uld        %[low32],   0x00(%[src])                        \n\t" 
  679             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  680             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  681             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  682             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  683             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
  684             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  685             "lwc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  686             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  687             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  688             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  689             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  691             "uld        %[low32],   0x00(%[src])                        \n\t" 
  692             "mtc1       %[low32],   %[ftmp1]                            \n\t" 
  693             "punpcklbh  %[ftmp2],   %[ftmp1],       %[ftmp0]            \n\t" 
  694             "pmullh     %[ftmp1],   %[ftmp2],       %[A]                \n\t" 
  695             "paddh      %[ftmp1],   %[ftmp1],       %[ff_pw_32]         \n\t" 
  696             "psrlh      %[ftmp1],   %[ftmp1],       %[ftmp3]            \n\t" 
  697             "packushb   %[ftmp1],   %[ftmp1],       %[ftmp0]            \n\t" 
  698             "lwc1       %[ftmp2],   0x00(%[dst])                        \n\t" 
  699             "pavgb      %[ftmp1],   %[ftmp1],       %[ftmp2]            \n\t" 
  700             "addi       %[h],       %[h],           -0x02               \n\t" 
  701             "swc1       %[ftmp1],   0x00(%[dst])                        \n\t" 
  703             PTR_ADDU   "%[src],     %[src],         %[stride]           \n\t" 
  704             PTR_ADDU   "%[dst],     %[dst],         %[stride]           \n\t" 
  706             : [ftmp0]
"=&f"(ftmp[0]),        [ftmp1]
"=&f"(ftmp[1]),
 
  707               [ftmp2]
"=&f"(ftmp[2]),        [ftmp3]
"=&f"(ftmp[3]),
 
  709               [dst]
"+&r"(dst),              [
src]
"+&r"(
src),
 
MIPS assembly defines from sys/asm.h but rewritten for use with C inline assembly (rather than from w...
 
void ff_avg_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
 
void ff_put_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
 
void ff_avg_h264_chroma_mc4_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)
 
GLint GLenum GLboolean GLsizei stride
 
void ff_put_h264_chroma_mc8_mmi(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y)