61 #if HAVE_INLINE_ASM && HAVE_MIPSFPU 
   62 #if !HAVE_MIPS32R6 && !HAVE_MIPS64R6 
   64 static void ff_mpadsp_apply_window_mips_float(
float *synth_buf, 
float *
window,
 
   65                                int *dither_state, 
float *
samples, ptrdiff_t incr)
 
   67     register const float *
w, *w2, *p;
 
   72     int incr1 = incr << 2;
 
   74     float in1, in2, in3, in4, in5, in6, in7, in8;
 
   78     memcpy(synth_buf + 512, synth_buf, 32 * 
sizeof(*synth_buf));
 
   87         "lwc1    %[sum],      0(%[dither_state])                            \t\n" 
   88         "sll     %[t_sample], %[incr1],     5                               \t\n" 
   89         "sub     %[t_sample], %[t_sample],  %[incr1]                        \n\t" 
   91         "lwc1    %[in1],      0(%[window])                                  \t\n" 
   92         "lwc1    %[in2],      16*4(%[synth_buf])                            \t\n" 
   93         "sw      $zero,       0(%[dither_state])                            \t\n" 
   94         "lwc1    %[in3],      64*4(%[window])                               \t\n" 
   95         "lwc1    %[in4],      80*4(%[synth_buf])                            \t\n" 
   96         PTR_ADDU "%[samples2],%[samples],   %[t_sample]                     \t\n" 
   97         "madd.s  %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
   98         "lwc1    %[in5],      128*4(%[window])                              \t\n" 
   99         "lwc1    %[in6],      144*4(%[synth_buf])                           \t\n" 
  100         "lwc1    %[in7],      192*4(%[window])                              \t\n" 
  101         "madd.s  %[sum],      %[sum],       %[in3], %[in4]                  \t\n" 
  102         "lwc1    %[in8],      208*4(%[synth_buf])                           \t\n" 
  103         "lwc1    %[in1],      256*4(%[window])                              \t\n" 
  104         "lwc1    %[in2],      272*4(%[synth_buf])                           \t\n" 
  105         "madd.s  %[sum],      %[sum],       %[in5], %[in6]                  \t\n" 
  106         "lwc1    %[in3],      320*4(%[window])                              \t\n" 
  107         "lwc1    %[in4],      336*4(%[synth_buf])                           \t\n" 
  108         "lwc1    %[in5],      384*4(%[window])                              \t\n" 
  109         "madd.s  %[sum],      %[sum],       %[in7], %[in8]                  \t\n" 
  110         "lwc1    %[in6],      400*4(%[synth_buf])                           \t\n" 
  111         "lwc1    %[in7],      448*4(%[window])                              \t\n" 
  112         "lwc1    %[in8],      464*4(%[synth_buf])                           \t\n" 
  113         "madd.s  %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  114         "lwc1    %[in1],      32*4(%[window])                               \t\n" 
  115         "lwc1    %[in2],      48*4(%[synth_buf])                            \t\n" 
  116         "madd.s  %[sum],      %[sum],       %[in3], %[in4]                  \t\n" 
  117         "lwc1    %[in3],      96*4(%[window])                               \t\n" 
  118         "lwc1    %[in4],      112*4(%[synth_buf])                           \t\n" 
  119         "madd.s  %[sum],      %[sum],       %[in5], %[in6]                  \t\n" 
  120         "lwc1    %[in5],      160*4(%[window])                              \t\n" 
  121         "lwc1    %[in6],      176*4(%[synth_buf])                           \t\n" 
  122         "madd.s  %[sum],      %[sum],       %[in7], %[in8]                  \t\n" 
  123         "lwc1    %[in7],      224*4(%[window])                              \t\n" 
  124         "lwc1    %[in8],      240*4(%[synth_buf])                           \t\n" 
  125         "nmsub.s %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  126         "lwc1    %[in1],      288*4(%[window])                              \t\n" 
  127         "lwc1    %[in2],      304*4(%[synth_buf])                           \t\n" 
  128         "nmsub.s %[sum],      %[sum],       %[in3], %[in4]                  \t\n" 
  129         "lwc1    %[in3],      352*4(%[window])                              \t\n" 
  130         "lwc1    %[in4],      368*4(%[synth_buf])                           \t\n" 
  131         "nmsub.s %[sum],      %[sum],       %[in5], %[in6]                  \t\n" 
  132         "lwc1    %[in5],      416*4(%[window])                              \t\n" 
  133         "lwc1    %[in6],      432*4(%[synth_buf])                           \t\n" 
  134         "nmsub.s %[sum],      %[sum],       %[in7], %[in8]                  \t\n" 
  135         "lwc1    %[in7],      480*4(%[window])                              \t\n" 
  136         "lwc1    %[in8],      496*4(%[synth_buf])                           \t\n" 
  137         "nmsub.s %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  139         "nmsub.s %[sum],      %[sum],       %[in3], %[in4]                  \t\n" 
  140         PTR_ADDU "%[w2],      %[window],    124                             \t\n" 
  142         PTR_ADDIU "%[p2],     %[synth_buf], 188                             \t\n" 
  143         "nmsub.s %[sum],      %[sum],       %[in5], %[in6]                  \t\n" 
  144         "nmsub.s %[sum],      %[sum],       %[in7], %[in8]                  \t\n" 
  145         "swc1    %[sum],      0(%[samples])                                 \t\n" 
  146         PTR_ADDU "%[samples], %[samples],   %[incr1]                        \t\n" 
  151         "ff_mpadsp_apply_window_loop%=:                                     \t\n" 
  152         "lwc1    %[in1],      0(%[w])                                       \t\n" 
  153         "lwc1    %[in2],      0(%[p])                                       \t\n" 
  154         "lwc1    %[in3],      0(%[w2])                                      \t\n" 
  155         "lwc1    %[in4],      64*4(%[w])                                    \t\n" 
  156         "lwc1    %[in5],      64*4(%[p])                                    \t\n" 
  157         "lwc1    %[in6],      64*4(%[w2])                                   \t\n" 
  158         "mul.s   %[sum],      %[in1],       %[in2]                          \t\n" 
  159         "mul.s   %[sum2],     %[in2],       %[in3]                          \t\n" 
  160         "lwc1    %[in1],      128*4(%[w])                                   \t\n" 
  161         "lwc1    %[in2],      128*4(%[p])                                   \t\n" 
  162         "madd.s  %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  163         "nmadd.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  164         "lwc1    %[in3],      128*4(%[w2])                                  \t\n" 
  165         "lwc1    %[in4],      192*4(%[w])                                   \t\n" 
  166         "madd.s  %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  167         "lwc1    %[in5],      192*4(%[p])                                   \t\n" 
  168         "lwc1    %[in6],      192*4(%[w2])                                  \t\n" 
  169         "nmsub.s %[sum2],     %[sum2],      %[in2], %[in3]                  \t\n" 
  170         "lwc1    %[in1],      256*4(%[w])                                   \t\n" 
  171         "lwc1    %[in2],      256*4(%[p])                                   \t\n" 
  172         "madd.s  %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  173         "nmsub.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  174         "lwc1    %[in3],      256*4(%[w2])                                  \t\n" 
  175         "lwc1    %[in4],      320*4(%[w])                                   \t\n" 
  176         "madd.s  %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  177         "lwc1    %[in5],      320*4(%[p])                                   \t\n" 
  178         "lwc1    %[in6],      320*4(%[w2])                                  \t\n" 
  179         "nmsub.s %[sum2],     %[sum2],      %[in2], %[in3]                  \t\n" 
  180         "lwc1    %[in1],      384*4(%[w])                                   \t\n" 
  181         "lwc1    %[in2],      384*4(%[p])                                   \t\n" 
  182         "madd.s  %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  183         "nmsub.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  184         "lwc1    %[in3],      384*4(%[w2])                                  \t\n" 
  185         "lwc1    %[in4],      448*4(%[w])                                   \t\n" 
  186         "madd.s  %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  187         "lwc1    %[in5],      448*4(%[p])                                   \t\n" 
  188         "lwc1    %[in6],      448*4(%[w2])                                  \t\n" 
  189         "nmsub.s %[sum2],     %[sum2],      %[in2], %[in3]                  \t\n" 
  190         "madd.s  %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  191         "lwc1    %[in1],      32*4(%[w])                                    \t\n" 
  192         "lwc1    %[in2],      0(%[p2])                                      \t\n" 
  193         "nmsub.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  194         "lwc1    %[in3],      32*4(%[w2])                                   \t\n" 
  195         "lwc1    %[in4],      96*4(%[w])                                    \t\n" 
  196         "lwc1    %[in5],      64*4(%[p2])                                   \t\n" 
  197         "nmsub.s %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  198         "lwc1    %[in6],      96*4(%[w2])                                   \t\n" 
  199         "nmsub.s %[sum2],     %[sum2],      %[in2], %[in3]                  \t\n" 
  200         "lwc1    %[in1],      160*4(%[w])                                   \t\n" 
  201         "nmsub.s %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  202         "lwc1    %[in2],      128*4(%[p2])                                  \t\n" 
  203         "nmsub.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  204         "lwc1    %[in3],      160*4(%[w2])                                  \t\n" 
  205         "lwc1    %[in4],      224*4(%[w])                                   \t\n" 
  206         "lwc1    %[in5],      192*4(%[p2])                                  \t\n" 
  207         "nmsub.s %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  208         "lwc1    %[in6],      224*4(%[w2])                                  \t\n" 
  209         "nmsub.s %[sum2],     %[sum2],      %[in2], %[in3]                  \t\n" 
  210         "lwc1    %[in1],      288*4(%[w])                                   \t\n" 
  211         "nmsub.s %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  212         "lwc1    %[in2],      256*4(%[p2])                                  \t\n" 
  213         "nmsub.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  214         "lwc1    %[in3],      288*4(%[w2])                                  \t\n" 
  215         "lwc1    %[in4],      352*4(%[w])                                   \t\n" 
  216         "lwc1    %[in5],      320*4(%[p2])                                  \t\n" 
  217         "nmsub.s %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  218         "lwc1    %[in6],      352*4(%[w2])                                  \t\n" 
  219         "nmsub.s %[sum2],     %[sum2],      %[in2], %[in3]                  \t\n" 
  220         "lwc1    %[in1],      416*4(%[w])                                   \t\n" 
  221         "nmsub.s %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  222         "lwc1    %[in2],      384*4(%[p2])                                  \t\n" 
  223         "nmsub.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  224         "lwc1    %[in3],      416*4(%[w2])                                  \t\n" 
  225         "lwc1    %[in4],      480*4(%[w])                                   \t\n" 
  226         "lwc1    %[in5],      448*4(%[p2])                                  \t\n" 
  227         "nmsub.s %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  228         "lwc1    %[in6],      480*4(%[w2])                                  \t\n" 
  229         "nmsub.s %[sum2],     %[sum2],      %[in2], %[in3]                  \t\n" 
  231         "nmsub.s %[sum],      %[sum],       %[in4], %[in5]                  \t\n" 
  233         "nmsub.s %[sum2],     %[sum2],      %[in5], %[in6]                  \t\n" 
  234         "addu    %[j],        %[j],         4                               \t\n" 
  236         "swc1    %[sum],      0(%[samples])                                 \t\n" 
  238         "swc1    %[sum2],     0(%[samples2])                                \t\n" 
  239         PTR_ADDU "%[samples], %[samples],   %[incr1]                        \t\n" 
  240         PTR_SUBU "%[samples2],%[samples2],  %[incr1]                        \t\n" 
  241         "bne     %[j],        64,           ff_mpadsp_apply_window_loop%=   \t\n" 
  243         "lwc1    %[in1],      48*4(%[window])                               \t\n" 
  244         "lwc1    %[in2],      32*4(%[synth_buf])                            \t\n" 
  245         "lwc1    %[in3],      112*4(%[window])                              \t\n" 
  246         "lwc1    %[in4],      96*4(%[synth_buf])                            \t\n" 
  247         "lwc1    %[in5],      176*4(%[window])                              \t\n" 
  248         "lwc1    %[in6],      160*4(%[synth_buf])                           \t\n" 
  249         "mul.s   %[sum],      %[in1],       %[in2]                          \t\n" 
  250         "lwc1    %[in7],      240*4(%[window])                              \t\n" 
  251         "lwc1    %[in8],      224*4(%[synth_buf])                           \t\n" 
  252         "lwc1    %[in1],      304*4(%[window])                              \t\n" 
  253         "nmadd.s %[sum],      %[sum],       %[in3], %[in4]                  \t\n" 
  254         "lwc1    %[in2],      288*4(%[synth_buf])                           \t\n" 
  255         "lwc1    %[in3],      368*4(%[window])                              \t\n" 
  256         "lwc1    %[in4],      352*4(%[synth_buf])                           \t\n" 
  257         "nmsub.s %[sum],      %[sum],       %[in5], %[in6]                  \t\n" 
  258         "nmsub.s %[sum],      %[sum],       %[in7], %[in8]                  \t\n" 
  259         "lwc1    %[in5],      432*4(%[window])                              \t\n" 
  260         "lwc1    %[in6],      416*4(%[synth_buf])                           \t\n" 
  261         "nmsub.s %[sum],      %[sum],       %[in1], %[in2]                  \t\n" 
  262         "lwc1    %[in7],      496*4(%[window])                              \t\n" 
  263         "lwc1    %[in8],      480*4(%[synth_buf])                           \t\n" 
  264         "nmsub.s %[sum],      %[sum],       %[in3], %[in4]                  \t\n" 
  265         "nmsub.s %[sum],      %[sum],       %[in5], %[in6]                  \t\n" 
  266         "nmsub.s %[sum],      %[sum],       %[in7], %[in8]                  \t\n" 
  267         "swc1    %[sum],      0(%[samples])                                 \t\n" 
  269         : [sum] 
"=&f" (sum), [sum2] 
"=&f" (sum2),
 
  270           [w2] 
"=&r" (w2),   [
w] 
"=&r" (
w),
 
  271           [p] 
"=&r" (p), [p2] 
"=&r" (p2), [j] 
"=&r" (j),
 
  273           [in1] 
"=&f" (in1), [in2] 
"=&f" (in2),
 
  274           [in3] 
"=&f" (in3), [in4] 
"=&f" (in4),
 
  275           [in5] 
"=&f" (in5), [in6] 
"=&f" (in6),
 
  276           [in7] 
"=&f" (in7), [in8] 
"=&f" (in8),
 
  277           [t_sample] 
"=&r" (t_sample)
 
  279           [dither_state] 
"r" (dither_state), [incr1] 
"r" (incr1)
 
  284 static void ff_dct32_mips_float(
float *
out, 
const float *
tab)
 
  286     float val0 , val1 , val2 , val3 , val4 , val5 , val6 , val7,
 
  287           val8 , val9 , val10, val11, val12, val13, val14, val15,
 
  288           val16, val17, val18, val19, val20, val21, val22, val23,
 
  289           val24, val25, val26, val27, val28, val29, val30, val31;
 
  290     float fTmp1, fTmp2, fTmp3, fTmp4, fTmp5, fTmp6, fTmp8, fTmp9;
 
  291     float f1, f2, f3, f4, f5, f6, f7;
 
  293     f1 = 0.50241928618815570551;
 
  294     f2 = 0.50060299823519630134;
 
  295     f3 = 10.19000812354805681150;
 
  296     f4 = 5.10114861868916385802;
 
  297     f5 = 0.67480834145500574602;
 
  298     f6 = 0.74453627100229844977;
 
  299     f7 = 0.50979557910415916894;
 
  304         "lwc1       %[fTmp1],       0*4(%[tab])                             \n\t" 
  305         "lwc1       %[fTmp2],       31*4(%[tab])                            \n\t" 
  306         "lwc1       %[fTmp3],       15*4(%[tab])                            \n\t" 
  307         "lwc1       %[fTmp4],       16*4(%[tab])                            \n\t" 
  308         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  309         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  310         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  311         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  312         "mul.s      %[fTmp8],       %[fTmp8],       %[f2]                   \n\t" 
  313         "add.s      %[val0],        %[fTmp5],       %[fTmp6]                \n\t" 
  314         "sub.s      %[val15],       %[fTmp5],       %[fTmp6]                \n\t" 
  315         "lwc1       %[fTmp1],       7*4(%[tab])                             \n\t" 
  316         "lwc1       %[fTmp2],       24*4(%[tab])                            \n\t" 
  317         "madd.s     %[val16],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  318         "nmsub.s    %[val31],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  319         "mul.s      %[val15],       %[val15],       %[f1]                   \n\t" 
  320         "lwc1       %[fTmp3],       8*4(%[tab])                             \n\t" 
  321         "lwc1       %[fTmp4],       23*4(%[tab])                            \n\t" 
  322         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  323         "mul.s      %[val31],       %[val31],       %[f1]                   \n\t" 
  324         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  325         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  326         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  327         "add.s      %[val7],        %[fTmp5],       %[fTmp6]                \n\t" 
  328         "sub.s      %[val8],        %[fTmp5],       %[fTmp6]                \n\t" 
  329         "mul.s      %[fTmp8],       %[fTmp8],       %[f5]                   \n\t" 
  330         "sub.s      %[fTmp2],       %[val0],        %[val7]                 \n\t" 
  331         "mul.s      %[val8],        %[val8],        %[f4]                   \n\t" 
  332         "madd.s     %[val23],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  333         "nmsub.s    %[val24],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  334         "add.s      %[val0],        %[val0],        %[val7]                 \n\t" 
  335         "mul.s      %[val7],        %[f7],          %[fTmp2]                \n\t" 
  336         "sub.s      %[fTmp2],       %[val15],       %[val8]                 \n\t" 
  337         "add.s      %[val8],        %[val15],       %[val8]                 \n\t" 
  338         "mul.s      %[val24],       %[val24],       %[f4]                   \n\t" 
  339         "sub.s      %[fTmp3],       %[val16],       %[val23]                \n\t" 
  340         "add.s      %[val16],       %[val16],       %[val23]                \n\t" 
  341         "mul.s      %[val15],       %[f7],          %[fTmp2]                \n\t" 
  342         "sub.s      %[fTmp4],       %[val31],       %[val24]                \n\t" 
  343         "mul.s      %[val23],       %[f7],          %[fTmp3]                \n\t" 
  344         "add.s      %[val24],       %[val31],       %[val24]                \n\t" 
  345         "mul.s      %[val31],       %[f7],          %[fTmp4]                \n\t" 
  347         : [fTmp1]  
"=&f" (fTmp1),  [fTmp2] 
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3),
 
  348           [fTmp4]  
"=&f" (fTmp4),  [fTmp5] 
"=&f" (fTmp5), [fTmp6] 
"=&f" (fTmp6),
 
  349           [fTmp8] 
"=&f" (fTmp8), [fTmp9] 
"=&f" (fTmp9),
 
  350           [val0]  
"=&f" (val0),  [val7]  
"=&f" (val7),
 
  351           [val8]  
"=&f" (val8),  [val15] 
"=&f" (val15),
 
  352           [val16] 
"=&f" (val16), [val23] 
"=&f" (val23),
 
  353           [val24] 
"=&f" (val24), [val31] 
"=&f" (val31)
 
  354         : [
tab] 
"r" (
tab), [f1]
"f"(f1), [f2]
"f"(f2), [f3]
"f"(f3),
 
  355           [f4]
"f"(f4), [f5]
"f"(f5), [f6]
"f"(f6), [f7]
"f"(f7)
 
  359     f1 = 0.64682178335999012954;
 
  360     f2 = 0.53104259108978417447;
 
  361     f3 = 1.48416461631416627724;
 
  362     f4 = 0.78815462345125022473;
 
  363     f5 = 0.55310389603444452782;
 
  364     f6 = 1.16943993343288495515;
 
  365     f7 = 2.56291544774150617881;
 
  367         "lwc1       %[fTmp1],       3*4(%[tab])                             \n\t" 
  368         "lwc1       %[fTmp2],       28*4(%[tab])                            \n\t" 
  369         "lwc1       %[fTmp3],       12*4(%[tab])                            \n\t" 
  370         "lwc1       %[fTmp4],       19*4(%[tab])                            \n\t" 
  371         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  372         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  373         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  374         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  375         "mul.s      %[fTmp8],       %[fTmp8],       %[f2]                   \n\t" 
  376         "add.s      %[val3],        %[fTmp5],       %[fTmp6]                \n\t" 
  377         "sub.s      %[val12],       %[fTmp5],       %[fTmp6]                \n\t" 
  378         "lwc1       %[fTmp1],       4*4(%[tab])                             \n\t" 
  379         "lwc1       %[fTmp2],       27*4(%[tab])                            \n\t" 
  380         "madd.s     %[val19],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  381         "nmsub.s    %[val28],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  382         "mul.s      %[val12],       %[val12],       %[f1]                   \n\t" 
  383         "lwc1       %[fTmp3],       11*4(%[tab])                            \n\t" 
  384         "lwc1       %[fTmp4],       20*4(%[tab])                            \n\t" 
  385         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  386         "mul.s      %[val28],       %[val28],       %[f1]                   \n\t" 
  387         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  388         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  389         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  390         "mul.s      %[fTmp8],       %[fTmp8],       %[f5]                   \n\t" 
  391         "add.s      %[val4],        %[fTmp5],       %[fTmp6]                \n\t" 
  392         "sub.s      %[val11],       %[fTmp5],       %[fTmp6]                \n\t" 
  393         "madd.s     %[val20],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  394         "nmsub.s    %[val27],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  395         "mul.s      %[val11],       %[val11],       %[f4]                   \n\t" 
  396         "sub.s      %[fTmp2],       %[val3],        %[val4]                 \n\t" 
  397         "add.s      %[val3],        %[val3],        %[val4]                 \n\t" 
  398         "sub.s      %[fTmp4],       %[val19],       %[val20]                \n\t" 
  399         "mul.s      %[val27],       %[val27],       %[f4]                   \n\t" 
  400         "sub.s      %[fTmp3],       %[val12],       %[val11]                \n\t" 
  401         "mul.s      %[val4],        %[f7],          %[fTmp2]                \n\t" 
  402         "add.s      %[val11],       %[val12],       %[val11]                \n\t" 
  403         "add.s      %[val19],       %[val19],       %[val20]                \n\t" 
  404         "mul.s      %[val20],       %[f7],          %[fTmp4]                \n\t" 
  405         "mul.s      %[val12],       %[f7],          %[fTmp3]                \n\t" 
  406         "sub.s      %[fTmp2],       %[val28],       %[val27]                \n\t" 
  407         "add.s      %[val27],       %[val28],       %[val27]                \n\t" 
  408         "mul.s      %[val28],       %[f7],          %[fTmp2]                \n\t" 
  410         : [fTmp1]  
"=&f" (fTmp1),  [fTmp2]  
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3),
 
  411           [fTmp4]  
"=&f" (fTmp4),  [fTmp5]  
"=&f" (fTmp5), [fTmp6] 
"=&f" (fTmp6),
 
  412           [fTmp8]  
"=&f" (fTmp8), [fTmp9] 
"=&f" (fTmp9),
 
  413           [val3]  
"=&f" (val3),  [val4]  
"=&f" (val4),
 
  414           [val11] 
"=&f" (val11), [val12] 
"=&f" (val12),
 
  415           [val19] 
"=&f" (val19), [val20] 
"=&f" (val20),
 
  416           [val27] 
"=&f" (val27), [val28] 
"=&f" (val28)
 
  417         : [
tab] 
"r" (
tab), [f1]
"f"(f1), [f2]
"f"(f2), [f3]
"f"(f3),
 
  418           [f4]
"f"(f4), [f5]
"f"(f5), [f6]
"f"(f6), [f7]
"f"(f7)
 
  422     f1 = 0.54119610014619698439;
 
  424         "sub.s      %[fTmp2],       %[val0],        %[val3]                 \n\t" 
  425         "add.s      %[val0],        %[val0],        %[val3]                 \n\t" 
  426         "sub.s      %[fTmp3],       %[val7],        %[val4]                 \n\t" 
  427         "add.s      %[val4],        %[val7],        %[val4]                 \n\t" 
  428         "sub.s      %[fTmp4],       %[val8],        %[val11]                \n\t" 
  429         "mul.s      %[val3],        %[f1],          %[fTmp2]                \n\t" 
  430         "add.s      %[val8],        %[val8],        %[val11]                \n\t" 
  431         "mul.s      %[val7],        %[f1],          %[fTmp3]                \n\t" 
  432         "sub.s      %[fTmp2],       %[val15],       %[val12]                \n\t" 
  433         "mul.s      %[val11],       %[f1],          %[fTmp4]                \n\t" 
  434         "add.s      %[val12],       %[val15],       %[val12]                \n\t" 
  435         "mul.s      %[val15],       %[f1],          %[fTmp2]                \n\t" 
  437         : [val0]  
"+&f" (val0),   [val3] 
"+&f" (val3),
 
  438           [val4]  
"+&f" (val4),   [val7] 
"+&f" (val7),
 
  439           [val8]  
"+&f" (val8),   [val11] 
"+&f" (val11),
 
  440           [val12] 
"+&f" (val12),  [val15] 
"+&f" (val15),
 
  441           [fTmp2] 
"=&f" (fTmp2),
 
  442           [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4)
 
  447         "sub.s      %[fTmp2],       %[val16],       %[val19]                \n\t" 
  448         "add.s      %[val16],       %[val16],       %[val19]                \n\t" 
  449         "sub.s      %[fTmp3],       %[val23],       %[val20]                \n\t" 
  450         "add.s      %[val20],       %[val23],       %[val20]                \n\t" 
  451         "sub.s      %[fTmp4],       %[val24],       %[val27]                \n\t" 
  452         "mul.s      %[val19],       %[f1],          %[fTmp2]                \n\t" 
  453         "add.s      %[val24],       %[val24],       %[val27]                \n\t" 
  454         "mul.s      %[val23],       %[f1],          %[fTmp3]                \n\t" 
  455         "sub.s      %[fTmp2],       %[val31],       %[val28]                \n\t" 
  456         "mul.s      %[val27],       %[f1],          %[fTmp4]                \n\t" 
  457         "add.s      %[val28],       %[val31],       %[val28]                \n\t" 
  458         "mul.s      %[val31],       %[f1],          %[fTmp2]                \n\t" 
  460         : [fTmp2] 
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4),
 
  461           [val16] 
"+&f" (val16), [val19] 
"+&f" (val19), [val20] 
"+&f" (val20),
 
  462           [val23] 
"+&f" (val23), [val24] 
"+&f" (val24), [val27] 
"+&f" (val27),
 
  463           [val28] 
"+&f" (val28), [val31] 
"+&f" (val31)
 
  467     f1 = 0.52249861493968888062;
 
  468     f2 = 0.50547095989754365998;
 
  469     f3 = 3.40760841846871878570;
 
  470     f4 = 1.72244709823833392782;
 
  471     f5 = 0.62250412303566481615;
 
  472     f6 = 0.83934964541552703873;
 
  473     f7 = 0.60134488693504528054;
 
  475         "lwc1       %[fTmp1],       1*4(%[tab])                             \n\t" 
  476         "lwc1       %[fTmp2],       30*4(%[tab])                            \n\t" 
  477         "lwc1       %[fTmp3],       14*4(%[tab])                            \n\t" 
  478         "lwc1       %[fTmp4],       17*4(%[tab])                            \n\t" 
  479         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  480         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  481         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  482         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  483         "mul.s      %[fTmp8],       %[fTmp8],       %[f2]                   \n\t" 
  484         "add.s      %[val1],        %[fTmp5],       %[fTmp6]                \n\t" 
  485         "sub.s      %[val14],       %[fTmp5],       %[fTmp6]                \n\t" 
  486         "lwc1       %[fTmp1],       6*4(%[tab])                             \n\t" 
  487         "lwc1       %[fTmp2],       25*4(%[tab])                            \n\t" 
  488         "madd.s     %[val17],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  489         "nmsub.s    %[val30],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  490         "mul.s      %[val14],       %[val14],       %[f1]                   \n\t" 
  491         "lwc1       %[fTmp3],       9*4(%[tab])                             \n\t" 
  492         "lwc1       %[fTmp4],       22*4(%[tab])                            \n\t" 
  493         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  494         "mul.s      %[val30],       %[val30],       %[f1]                   \n\t" 
  495         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  496         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  497         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  498         "add.s      %[val6],        %[fTmp5],       %[fTmp6]                \n\t" 
  499         "sub.s      %[val9],        %[fTmp5],       %[fTmp6]                \n\t" 
  500         "mul.s      %[fTmp8],       %[fTmp8],       %[f5]                   \n\t" 
  501         "sub.s      %[fTmp2],       %[val1],        %[val6]                 \n\t" 
  502         "add.s      %[val1],        %[val1],        %[val6]                 \n\t" 
  503         "mul.s      %[val9],        %[val9],        %[f4]                   \n\t" 
  504         "madd.s     %[val22],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  505         "nmsub.s    %[val25],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  506         "mul.s      %[val6],        %[f7],          %[fTmp2]                \n\t" 
  507         "sub.s      %[fTmp2],       %[val14],       %[val9]                 \n\t" 
  508         "add.s      %[val9],        %[val14],       %[val9]                 \n\t" 
  509         "mul.s      %[val25],       %[val25],       %[f4]                   \n\t" 
  510         "sub.s      %[fTmp3],       %[val17],       %[val22]                \n\t" 
  511         "add.s      %[val17],       %[val17],       %[val22]                \n\t" 
  512         "mul.s      %[val14],       %[f7],          %[fTmp2]                \n\t" 
  513         "sub.s      %[fTmp2],       %[val30],       %[val25]                \n\t" 
  514         "mul.s      %[val22],       %[f7],          %[fTmp3]                \n\t" 
  515         "add.s      %[val25],       %[val30],       %[val25]                \n\t" 
  516         "mul.s      %[val30],       %[f7],          %[fTmp2]                \n\t" 
  518         : [fTmp1]  
"=&f" (fTmp1),  [fTmp2]  
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3),
 
  519           [fTmp4]  
"=&f" (fTmp4),  [fTmp5]  
"=&f" (fTmp5), [fTmp6] 
"=&f" (fTmp6),
 
  520           [fTmp8]  
"=&f" (fTmp8), [fTmp9] 
"=&f" (fTmp9),
 
  521           [val1]  
"=&f" (val1),  [val6]  
"=&f" (val6),
 
  522           [val9]  
"=&f" (val9),  [val14] 
"=&f" (val14),
 
  523           [val17] 
"=&f" (val17), [val22] 
"=&f" (val22),
 
  524           [val25] 
"=&f" (val25), [val30] 
"=&f" (val30)
 
  525         : [
tab] 
"r" (
tab), [f1]
"f"(f1), [f2]
"f"(f2), [f3]
"f"(f3),
 
  526           [f4]
"f"(f4), [f5]
"f"(f5), [f6]
"f"(f6), [f7]
"f"(f7)
 
  530     f1 = 0.56694403481635770368;
 
  531     f2 = 0.51544730992262454697;
 
  532     f3 = 2.05778100995341155085;
 
  533     f4 = 1.06067768599034747134;
 
  534     f5 = 0.58293496820613387367;
 
  535     f6 = 0.97256823786196069369;
 
  536     f7 = 0.89997622313641570463;
 
  538         "lwc1       %[fTmp1],       2*4(%[tab])                             \n\t" 
  539         "lwc1       %[fTmp2],       29*4(%[tab])                            \n\t" 
  540         "lwc1       %[fTmp3],       13*4(%[tab])                            \n\t" 
  541         "lwc1       %[fTmp4],       18*4(%[tab])                            \n\t" 
  542         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  543         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  544         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  545         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  546         "mul.s      %[fTmp8],       %[fTmp8],       %[f2]                   \n\t" 
  547         "add.s      %[val2],        %[fTmp5],       %[fTmp6]                \n\t" 
  548         "sub.s      %[val13],       %[fTmp5],       %[fTmp6]                \n\t" 
  549         "lwc1       %[fTmp1],       5*4(%[tab])                             \n\t" 
  550         "lwc1       %[fTmp2],       26*4(%[tab])                            \n\t" 
  551         "madd.s     %[val18],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  552         "nmsub.s    %[val29],       %[fTmp8],       %[fTmp9],   %[f3]       \n\t" 
  553         "mul.s      %[val13],       %[val13],       %[f1]                   \n\t" 
  554         "lwc1       %[fTmp3],       10*4(%[tab])                            \n\t" 
  555         "lwc1       %[fTmp4],       21*4(%[tab])                            \n\t" 
  556         "mul.s      %[val29],       %[val29],       %[f1]                   \n\t" 
  557         "add.s      %[fTmp5],       %[fTmp1],       %[fTmp2]                \n\t" 
  558         "sub.s      %[fTmp8],       %[fTmp1],       %[fTmp2]                \n\t" 
  559         "add.s      %[fTmp6],       %[fTmp3],       %[fTmp4]                \n\t" 
  560         "sub.s      %[fTmp9],       %[fTmp3],       %[fTmp4]                \n\t" 
  561         "add.s      %[val5],        %[fTmp5],       %[fTmp6]                \n\t" 
  562         "sub.s      %[val10],       %[fTmp5],       %[fTmp6]                \n\t" 
  563         "mul.s      %[fTmp8],       %[fTmp8],       %[f5]                   \n\t" 
  564         "sub.s      %[fTmp2],       %[val2],        %[val5]                 \n\t" 
  565         "mul.s      %[val10],       %[val10],       %[f4]                   \n\t" 
  566         "madd.s     %[val21],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  567         "nmsub.s    %[val26],       %[fTmp8],       %[fTmp9],   %[f6]       \n\t" 
  568         "add.s      %[val2],        %[val2],        %[val5]                 \n\t" 
  569         "mul.s      %[val5],        %[f7],          %[fTmp2]                \n\t" 
  570         "sub.s      %[fTmp3],       %[val13],       %[val10]                \n\t" 
  571         "add.s      %[val10],       %[val13],       %[val10]                \n\t" 
  572         "mul.s      %[val26],       %[val26],       %[f4]                   \n\t" 
  573         "sub.s      %[fTmp4],       %[val18],       %[val21]                \n\t" 
  574         "add.s      %[val18],       %[val18],       %[val21]                \n\t" 
  575         "mul.s      %[val13],       %[f7],          %[fTmp3]                \n\t" 
  576         "sub.s      %[fTmp2],       %[val29],       %[val26]                \n\t" 
  577         "add.s      %[val26],       %[val29],       %[val26]                \n\t" 
  578         "mul.s      %[val21],       %[f7],          %[fTmp4]                \n\t" 
  579         "mul.s      %[val29],       %[f7],          %[fTmp2]                \n\t" 
  581         : [fTmp1]  
"=&f" (fTmp1),  [fTmp2]  
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3),
 
  582           [fTmp4]  
"=&f" (fTmp4),  [fTmp5]  
"=&f" (fTmp5), [fTmp6] 
"=&f" (fTmp6),
 
  583           [fTmp8]  
"=&f" (fTmp8), [fTmp9] 
"=&f" (fTmp9),
 
  584           [val2]  
"=&f" (val2),  [val5]  
"=&f" (val5),
 
  585           [val10] 
"=&f" (val10), [val13] 
"=&f" (val13),
 
  586           [val18] 
"=&f" (val18), [val21] 
"=&f" (val21),
 
  587           [val26] 
"=&f" (val26), [val29] 
"=&f" (val29)
 
  588         : [
tab] 
"r" (
tab), [f1]
"f"(f1), [f2]
"f"(f2), [f3]
"f"(f3),
 
  589           [f4]
"f"(f4), [f5]
"f"(f5), [f6]
"f"(f6), [f7]
"f"(f7)
 
  593     f1 = 1.30656296487637652785;
 
  595         "sub.s      %[fTmp2],       %[val1],        %[val2]                 \n\t" 
  596         "add.s      %[val1],        %[val1],        %[val2]                 \n\t" 
  597         "sub.s      %[fTmp3],       %[val6],        %[val5]                 \n\t" 
  598         "add.s      %[val5],        %[val6],        %[val5]                 \n\t" 
  599         "sub.s      %[fTmp4],       %[val9],        %[val10]                \n\t" 
  600         "mul.s      %[val2],        %[f1],          %[fTmp2]                \n\t" 
  601         "add.s      %[val9],        %[val9],        %[val10]                \n\t" 
  602         "mul.s      %[val6],        %[f1],          %[fTmp3]                \n\t" 
  603         "sub.s      %[fTmp2],       %[val14],       %[val13]                \n\t" 
  604         "mul.s      %[val10],       %[f1],          %[fTmp4]                \n\t" 
  605         "add.s      %[val13],       %[val14],       %[val13]                \n\t" 
  606         "mul.s      %[val14],       %[f1],          %[fTmp2]                \n\t" 
  608         : [fTmp2] 
"=&f" (fTmp2),
 
  609           [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4),
 
  610           [val1]  
"+&f" (val1),  [val2]  
"+&f" (val2),
 
  611           [val5]  
"+&f" (val5),  [val6]  
"+&f" (val6),
 
  612           [val9]  
"+&f" (val9),  [val10] 
"+&f" (val10),
 
  613           [val13] 
"+&f" (val13), [val14] 
"+&f" (val14)
 
  618         "sub.s      %[fTmp2],       %[val17],       %[val18]                \n\t" 
  619         "add.s      %[val17],       %[val17],       %[val18]                \n\t" 
  620         "sub.s      %[fTmp3],       %[val22],       %[val21]                \n\t" 
  621         "add.s      %[val21],       %[val22],       %[val21]                \n\t" 
  622         "sub.s      %[fTmp4],       %[val25],       %[val26]                \n\t" 
  623         "mul.s      %[val18],       %[f1],          %[fTmp2]                \n\t" 
  624         "add.s      %[val25],       %[val25],       %[val26]                \n\t" 
  625         "mul.s      %[val22],       %[f1],          %[fTmp3]                \n\t" 
  626         "sub.s      %[fTmp2],       %[val30],       %[val29]                \n\t" 
  627         "mul.s      %[val26],       %[f1],          %[fTmp4]                \n\t" 
  628         "add.s      %[val29],       %[val30],       %[val29]                \n\t" 
  629         "mul.s      %[val30],       %[f1],          %[fTmp2]                \n\t" 
  631         : [fTmp2] 
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4),
 
  632           [val17] 
"+&f" (val17), [val18] 
"+&f" (val18), [val21] 
"+&f" (val21),
 
  633           [val22] 
"+&f" (val22), [val25] 
"+&f" (val25), [val26] 
"+&f" (val26),
 
  634           [val29] 
"+&f" (val29), [val30] 
"+&f" (val30)
 
  638     f1 = 0.70710678118654752439;
 
  640         "sub.s      %[fTmp2],       %[val0],        %[val1]                 \n\t" 
  641         "add.s      %[val0],        %[val0],        %[val1]                 \n\t" 
  642         "sub.s      %[fTmp3],       %[val3],        %[val2]                 \n\t" 
  643         "add.s      %[val2],        %[val3],        %[val2]                 \n\t" 
  644         "sub.s      %[fTmp4],       %[val4],        %[val5]                 \n\t" 
  645         "mul.s      %[val1],        %[f1],          %[fTmp2]                \n\t" 
  646         "swc1       %[val0],        0(%[out])                               \n\t" 
  647         "mul.s      %[val3],        %[fTmp3],       %[f1]                   \n\t" 
  648         "add.s      %[val4],        %[val4],        %[val5]                 \n\t" 
  649         "mul.s      %[val5],        %[f1],          %[fTmp4]                \n\t" 
  650         "swc1       %[val1],        16*4(%[out])                            \n\t" 
  651         "sub.s      %[fTmp2],       %[val7],        %[val6]                 \n\t" 
  652         "add.s      %[val2],        %[val2],        %[val3]                 \n\t" 
  653         "swc1       %[val3],        24*4(%[out])                            \n\t" 
  654         "add.s      %[val6],        %[val7],        %[val6]                 \n\t" 
  655         "mul.s      %[val7],        %[f1],          %[fTmp2]                \n\t" 
  656         "swc1       %[val2],        8*4(%[out])                             \n\t" 
  657         "add.s      %[val6],        %[val6],        %[val7]                 \n\t" 
  658         "swc1       %[val7],        28*4(%[out])                            \n\t" 
  659         "add.s      %[val4],        %[val4],        %[val6]                 \n\t" 
  660         "add.s      %[val6],        %[val6],        %[val5]                 \n\t" 
  661         "add.s      %[val5],        %[val5],        %[val7]                 \n\t" 
  662         "swc1       %[val4],        4*4(%[out])                             \n\t" 
  663         "swc1       %[val5],        20*4(%[out])                            \n\t" 
  664         "swc1       %[val6],        12*4(%[out])                            \n\t" 
  666         : [fTmp2] 
"=&f" (fTmp2),
 
  667           [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4),
 
  668           [val0] 
"+&f" (val0), [val1] 
"+&f" (val1),
 
  669           [val2] 
"+&f" (val2), [val3] 
"+&f" (val3),
 
  670           [val4] 
"+&f" (val4), [val5] 
"+&f" (val5),
 
  671           [val6] 
"+&f" (val6), [val7] 
"+&f" (val7)
 
  672         : [
out] 
"r" (
out), [f1]
"f"(f1)
 
  676         "sub.s      %[fTmp2],       %[val8],        %[val9]                 \n\t" 
  677         "add.s      %[val8],        %[val8],        %[val9]                 \n\t" 
  678         "sub.s      %[fTmp3],       %[val11],       %[val10]                \n\t" 
  679         "add.s      %[val10],       %[val11],       %[val10]                \n\t" 
  680         "sub.s      %[fTmp4],       %[val12],       %[val13]                \n\t" 
  681         "mul.s      %[val9],        %[f1],          %[fTmp2]                \n\t" 
  682         "add.s      %[val12],       %[val12],       %[val13]                \n\t" 
  683         "mul.s      %[val11],       %[f1],          %[fTmp3]                \n\t" 
  684         "sub.s      %[fTmp2],       %[val15],       %[val14]                \n\t" 
  685         "mul.s      %[val13],       %[f1],          %[fTmp4]                \n\t" 
  686         "add.s      %[val14],       %[val15],       %[val14]                \n\t" 
  687         "add.s      %[val10],       %[val10],       %[val11]                \n\t" 
  688         "mul.s      %[val15],       %[f1],          %[fTmp2]                \n\t" 
  689         "add.s      %[val14],       %[val14],       %[val15]                \n\t" 
  690         "add.s      %[val12],       %[val12],       %[val14]                \n\t" 
  691         "add.s      %[val14],       %[val14],       %[val13]                \n\t" 
  692         "add.s      %[val13],       %[val13],       %[val15]                \n\t" 
  693         "add.s      %[val8],        %[val8],        %[val12]                \n\t" 
  694         "add.s      %[val12],       %[val12],       %[val10]                \n\t" 
  695         "add.s      %[val10],       %[val10],       %[val14]                \n\t" 
  696         "add.s      %[val14],       %[val14],       %[val9]                 \n\t" 
  697         "add.s      %[val9],        %[val9],        %[val13]                \n\t" 
  698         "add.s      %[val13],       %[val13],       %[val11]                \n\t" 
  699         "add.s      %[val11],       %[val11],       %[val15]                \n\t" 
  700         "swc1       %[val8],         2*4(%[out])                            \n\t" 
  701         "swc1       %[val9],        18*4(%[out])                            \n\t" 
  702         "swc1       %[val10],       10*4(%[out])                            \n\t" 
  703         "swc1       %[val11],       26*4(%[out])                            \n\t" 
  704         "swc1       %[val12],        6*4(%[out])                            \n\t" 
  705         "swc1       %[val13],       22*4(%[out])                            \n\t" 
  706         "swc1       %[val14],       14*4(%[out])                            \n\t" 
  707         "swc1       %[val15],       30*4(%[out])                            \n\t" 
  709         : [fTmp2] 
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4),
 
  710           [val8]  
"+&f" (val8),  [val9]  
"+&f" (val9),  [val10] 
"+&f" (val10),
 
  711           [val11] 
"+&f" (val11), [val12] 
"+&f" (val12), [val13] 
"+&f" (val13),
 
  712           [val14] 
"+&f" (val14), [val15] 
"+&f" (val15)
 
  713         : [f1] 
"f" (f1), [
out] 
"r" (
out)
 
  717         "sub.s      %[fTmp2],       %[val16],       %[val17]                \n\t" 
  718         "add.s      %[val16],       %[val16],       %[val17]                \n\t" 
  719         "sub.s      %[fTmp3],       %[val19],       %[val18]                \n\t" 
  720         "add.s      %[val18],       %[val19],       %[val18]                \n\t" 
  721         "sub.s      %[fTmp4],       %[val20],       %[val21]                \n\t" 
  722         "mul.s      %[val17],       %[f1],          %[fTmp2]                \n\t" 
  723         "add.s      %[val20],       %[val20],       %[val21]                \n\t" 
  724         "mul.s      %[val19],       %[f1],          %[fTmp3]                \n\t" 
  725         "sub.s      %[fTmp2],       %[val23],       %[val22]                \n\t" 
  726         "mul.s      %[val21],       %[f1],          %[fTmp4]                \n\t" 
  727         "add.s      %[val22],       %[val23],       %[val22]                \n\t" 
  728         "add.s      %[val18],       %[val18],       %[val19]                \n\t" 
  729         "mul.s      %[val23],       %[f1],          %[fTmp2]                \n\t" 
  730         "add.s      %[val22],       %[val22],       %[val23]                \n\t" 
  731         "add.s      %[val20],       %[val20],       %[val22]                \n\t" 
  732         "add.s      %[val22],       %[val22],       %[val21]                \n\t" 
  733         "add.s      %[val21],       %[val21],       %[val23]                \n\t" 
  735         : [fTmp2] 
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4),
 
  736           [val16] 
"+&f" (val16), [val17] 
"+&f" (val17), [val18] 
"+&f" (val18),
 
  737           [val19] 
"+&f" (val19), [val20] 
"+&f" (val20), [val21] 
"+&f" (val21),
 
  738           [val22] 
"+&f" (val22), [val23] 
"+&f" (val23)
 
  743         "sub.s      %[fTmp2],       %[val24],       %[val25]                \n\t" 
  744         "add.s      %[val24],       %[val24],       %[val25]                \n\t" 
  745         "sub.s      %[fTmp3],       %[val27],       %[val26]                \n\t" 
  746         "add.s      %[val26],       %[val27],       %[val26]                \n\t" 
  747         "sub.s      %[fTmp4],       %[val28],       %[val29]                \n\t" 
  748         "mul.s      %[val25],       %[f1],          %[fTmp2]                \n\t" 
  749         "add.s      %[val28],       %[val28],       %[val29]                \n\t" 
  750         "mul.s      %[val27],       %[f1],          %[fTmp3]                \n\t" 
  751         "sub.s      %[fTmp2],       %[val31],       %[val30]                \n\t" 
  752         "mul.s      %[val29],       %[f1],          %[fTmp4]                \n\t" 
  753         "add.s      %[val30],       %[val31],       %[val30]                \n\t" 
  754         "add.s      %[val26],       %[val26],       %[val27]                \n\t" 
  755         "mul.s      %[val31],       %[f1],          %[fTmp2]                \n\t" 
  756         "add.s      %[val30],       %[val30],       %[val31]                \n\t" 
  757         "add.s      %[val28],       %[val28],       %[val30]                \n\t" 
  758         "add.s      %[val30],       %[val30],       %[val29]                \n\t" 
  759         "add.s      %[val29],       %[val29],       %[val31]                \n\t" 
  760         "add.s      %[val24],       %[val24],       %[val28]                \n\t" 
  761         "add.s      %[val28],       %[val28],       %[val26]                \n\t" 
  762         "add.s      %[val26],       %[val26],       %[val30]                \n\t" 
  763         "add.s      %[val30],       %[val30],       %[val25]                \n\t" 
  764         "add.s      %[val25],       %[val25],       %[val29]                \n\t" 
  765         "add.s      %[val29],       %[val29],       %[val27]                \n\t" 
  766         "add.s      %[val27],       %[val27],       %[val31]                \n\t" 
  768         : [fTmp2] 
"=&f" (fTmp2), [fTmp3] 
"=&f" (fTmp3), [fTmp4] 
"=&f" (fTmp4),
 
  769           [val24] 
"+&f" (val24), [val25] 
"+&f" (val25), [val26] 
"+&f" (val26),
 
  770           [val27] 
"+&f" (val27), [val28] 
"+&f" (val28), [val29] 
"+&f" (val29),
 
  771           [val30] 
"+&f" (val30), [val31] 
"+&f" (val31)
 
  775     out[ 1] = val16 + val24;
 
  776     out[17] = val17 + val25;
 
  777     out[ 9] = val18 + val26;
 
  778     out[25] = val19 + val27;
 
  779     out[ 5] = val20 + val28;
 
  780     out[21] = val21 + val29;
 
  781     out[13] = val22 + val30;
 
  782     out[29] = val23 + val31;
 
  783     out[ 3] = val24 + val20;
 
  784     out[19] = val25 + val21;
 
  785     out[11] = val26 + val22;
 
  786     out[27] = val27 + val23;
 
  787     out[ 7] = val28 + val18;
 
  788     out[23] = val29 + val19;
 
  789     out[15] = val30 + val17;
 
  793 static void imdct36_mips_float(
float *
out, 
float *buf, 
float *in, 
float *
win)
 
  798     float in1, in2, in3, in4, in5, in6;
 
  799     float out1, out2, out3, out4, out5;
 
  800     float f1, f2, f3, f4, f5, f6, f7, f8, f9;
 
  812         "lwc1   %[in1],  17*4(%[in])                                    \t\n" 
  813         "lwc1   %[in2],  16*4(%[in])                                    \t\n" 
  814         "lwc1   %[in3],  15*4(%[in])                                    \t\n" 
  815         "lwc1   %[in4],  14*4(%[in])                                    \t\n" 
  816         "lwc1   %[in5],  13*4(%[in])                                    \t\n" 
  817         "lwc1   %[in6],  12*4(%[in])                                    \t\n" 
  818         "add.s  %[out1], %[in1],  %[in2]                                \t\n" 
  819         "add.s  %[out2], %[in2],  %[in3]                                \t\n" 
  820         "add.s  %[out3], %[in3],  %[in4]                                \t\n" 
  821         "add.s  %[out4], %[in4],  %[in5]                                \t\n" 
  822         "add.s  %[out5], %[in5],  %[in6]                                \t\n" 
  823         "lwc1   %[in1],  11*4(%[in])                                    \t\n" 
  824         "swc1   %[out2], 16*4(%[in])                                    \t\n" 
  825         "add.s  %[out1], %[out1], %[out3]                               \t\n" 
  826         "swc1   %[out4], 14*4(%[in])                                    \t\n" 
  827         "add.s  %[out3], %[out3], %[out5]                               \t\n" 
  828         "lwc1   %[in2],  10*4(%[in])                                    \t\n" 
  829         "lwc1   %[in3],  9*4(%[in])                                     \t\n" 
  830         "swc1   %[out1], 17*4(%[in])                                    \t\n" 
  831         "lwc1   %[in4],  8*4(%[in])                                     \t\n" 
  832         "swc1   %[out3], 15*4(%[in])                                    \t\n" 
  833         "add.s  %[out1], %[in6],  %[in1]                                \t\n" 
  834         "add.s  %[out2], %[in1],  %[in2]                                \t\n" 
  835         "add.s  %[out3], %[in2],  %[in3]                                \t\n" 
  836         "add.s  %[out4], %[in3],  %[in4]                                \t\n" 
  837         "lwc1   %[in5],  7*4(%[in])                                     \t\n" 
  838         "swc1   %[out1], 12*4(%[in])                                    \t\n" 
  839         "add.s  %[out5], %[out5], %[out2]                               \t\n" 
  840         "swc1   %[out3], 10*4(%[in])                                    \t\n" 
  841         "add.s  %[out2], %[out2], %[out4]                               \t\n" 
  842         "lwc1   %[in6],  6*4(%[in])                                     \t\n" 
  843         "lwc1   %[in1],  5*4(%[in])                                     \t\n" 
  844         "swc1   %[out5], 13*4(%[in])                                    \t\n" 
  845         "lwc1   %[in2],  4*4(%[in])                                     \t\n" 
  846         "swc1   %[out2], 11*4(%[in])                                    \t\n" 
  847         "add.s  %[out5], %[in4],  %[in5]                                \t\n" 
  848         "add.s  %[out1], %[in5],  %[in6]                                \t\n" 
  849         "add.s  %[out2], %[in6],  %[in1]                                \t\n" 
  850         "add.s  %[out3], %[in1],  %[in2]                                \t\n" 
  851         "lwc1   %[in3],  3*4(%[in])                                     \t\n" 
  852         "swc1   %[out5], 8*4(%[in])                                     \t\n" 
  853         "add.s  %[out4], %[out4], %[out1]                               \t\n" 
  854         "swc1   %[out2], 6*4(%[in])                                     \t\n" 
  855         "add.s  %[out1], %[out1], %[out3]                               \t\n" 
  856         "lwc1   %[in4],  2*4(%[in])                                     \t\n" 
  857         "lwc1   %[in5],  1*4(%[in])                                     \t\n" 
  858         "swc1   %[out4], 9*4(%[in])                                     \t\n" 
  859         "lwc1   %[in6],  0(%[in])                                       \t\n" 
  860         "swc1   %[out1], 7*4(%[in])                                     \t\n" 
  861         "add.s  %[out4], %[in2],  %[in3]                                \t\n" 
  862         "add.s  %[out5], %[in3],  %[in4]                                \t\n" 
  863         "add.s  %[out1], %[in4],  %[in5]                                \t\n" 
  864         "add.s  %[out2], %[in5],  %[in6]                                \t\n" 
  865         "swc1   %[out4], 4*4(%[in])                                     \t\n" 
  866         "add.s  %[out3], %[out3], %[out5]                               \t\n" 
  867         "swc1   %[out1], 2*4(%[in])                                     \t\n" 
  868         "add.s  %[out5], %[out5], %[out2]                               \t\n" 
  869         "swc1   %[out2], 1*4(%[in])                                     \t\n" 
  870         "swc1   %[out3], 5*4(%[in])                                     \t\n" 
  871         "swc1   %[out5], 3*4(%[in])                                     \t\n" 
  873         : [in1] 
"=&f" (in1), [in2] 
"=&f" (in2),
 
  874           [in3] 
"=&f" (in3), [in4] 
"=&f" (in4),
 
  875           [in5] 
"=&f" (in5), [in6] 
"=&f" (in6),
 
  876           [out1] 
"=&f" (out1), [out2] 
"=&f" (out2),
 
  877           [out3] 
"=&f" (out3), [out4] 
"=&f" (out4),
 
  885     f2 = 0.93969262078590838405;
 
  886     f3 = -0.76604444311897803520;
 
  887     f4 = -0.17364817766693034885;
 
  888     f5 = -0.86602540378443864676;
 
  889     f6 = 0.98480775301220805936;
 
  890     f7 = -0.34202014332566873304;
 
  891     f8 = 0.86602540378443864676;
 
  892     f9 = -0.64278760968653932632;
 
  894         "lwc1    %[in1],  8*4(%[in])                                    \t\n" 
  895         "lwc1    %[in2],  16*4(%[in])                                   \t\n" 
  896         "lwc1    %[in3],  4*4(%[in])                                    \t\n" 
  897         "lwc1    %[in4],  0(%[in])                                      \t\n" 
  898         "lwc1    %[in5],  12*4(%[in])                                   \t\n" 
  899         "add.s   %[t2],   %[in1],  %[in2]                               \t\n" 
  900         "add.s   %[t0],   %[in1],  %[in3]                               \t\n" 
  901         "madd.s  %[t3],   %[in4],  %[in5], %[f1]                        \t\n" 
  902         "sub.s   %[t1],   %[in4],  %[in5]                               \t\n" 
  903         "sub.s   %[t2],   %[t2],   %[in3]                               \t\n" 
  904         "mul.s   %[t0],   %[t0],   %[f2]                                \t\n" 
  905         "nmsub.s %[out1], %[t1],   %[t2],  %[f1]                        \t\n" 
  906         "add.s   %[out2], %[t1],   %[t2]                                \t\n" 
  907         "add.s   %[t2],   %[in2],  %[in3]                               \t\n" 
  908         "sub.s   %[t1],   %[in1],  %[in2]                               \t\n" 
  909         "sub.s   %[out3], %[t3],   %[t0]                                \t\n" 
  910         "swc1    %[out1], 6*4(%[tmp])                                   \t\n" 
  911         "swc1    %[out2], 16*4(%[tmp])                                  \t\n" 
  912         "mul.s   %[t2],   %[t2],   %[f3]                                \t\n" 
  913         "mul.s   %[t1],   %[t1],   %[f4]                                \t\n" 
  914         "add.s   %[out1], %[t3],   %[t0]                                \t\n" 
  915         "lwc1    %[in1],  10*4(%[in])                                   \t\n" 
  916         "lwc1    %[in2],  14*4(%[in])                                   \t\n" 
  917         "sub.s   %[out3], %[out3], %[t2]                                \t\n" 
  918         "add.s   %[out2], %[t3],   %[t2]                                \t\n" 
  919         "add.s   %[out1], %[out1], %[t1]                                \t\n" 
  920         "lwc1    %[in3],  2*4(%[in])                                    \t\n" 
  921         "lwc1    %[in4],  6*4(%[in])                                    \t\n" 
  922         "swc1    %[out3], 10*4(%[tmp])                                  \t\n" 
  923         "sub.s   %[out2], %[out2], %[t1]                                \t\n" 
  924         "swc1    %[out1], 2*4(%[tmp])                                   \t\n" 
  925         "add.s   %[out1], %[in1],  %[in2]                               \t\n" 
  926         "add.s   %[t2],   %[in1],  %[in3]                               \t\n" 
  927         "sub.s   %[t3],   %[in1],  %[in2]                               \t\n" 
  928         "swc1    %[out2], 14*4(%[tmp])                                  \t\n" 
  929         "sub.s   %[out1], %[out1], %[in3]                               \t\n" 
  930         "mul.s   %[t2],   %[t2],   %[f6]                                \t\n" 
  931         "mul.s   %[t3],   %[t3],   %[f7]                                \t\n" 
  932         "mul.s   %[t0],   %[in4],  %[f8]                                \t\n" 
  933         "mul.s   %[out1], %[out1], %[f5]                                \t\n" 
  934         "add.s   %[t1],   %[in2],  %[in3]                               \t\n" 
  935         "add.s   %[out2], %[t2],   %[t3]                                \t\n" 
  936         "lwc1    %[in1],  9*4(%[in])                                    \t\n" 
  937         "swc1    %[out1], 4*4(%[tmp])                                   \t\n" 
  938         "mul.s   %[t1],   %[t1],   %[f9]                                \t\n" 
  939         "lwc1    %[in2],  17*4(%[in])                                   \t\n" 
  940         "add.s   %[out2], %[out2], %[t0]                                \t\n" 
  941         "lwc1    %[in3],  5*4(%[in])                                    \t\n" 
  942         "lwc1    %[in4],  1*4(%[in])                                    \t\n" 
  943         "add.s   %[out3], %[t2],   %[t1]                                \t\n" 
  944         "sub.s   %[out1], %[t3],   %[t1]                                \t\n" 
  945         "swc1    %[out2], 0(%[tmp])                                     \t\n" 
  946         "lwc1    %[in5],  13*4(%[in])                                   \t\n" 
  947         "add.s   %[t2],   %[in1],  %[in2]                               \t\n" 
  948         "sub.s   %[out3], %[out3], %[t0]                                \t\n" 
  949         "sub.s   %[out1], %[out1], %[t0]                                \t\n" 
  950         "add.s   %[t0],   %[in1],  %[in3]                               \t\n" 
  951         "madd.s  %[t3],   %[in4],  %[in5], %[f1]                        \t\n" 
  952         "sub.s   %[t2],   %[t2],   %[in3]                               \t\n" 
  953         "swc1    %[out3], 12*4(%[tmp])                                  \t\n" 
  954         "swc1    %[out1], 8*4(%[tmp])                                   \t\n" 
  955         "sub.s   %[t1],   %[in4],  %[in5]                               \t\n" 
  956         "mul.s   %[t0],   %[t0],   %[f2]                                \t\n" 
  957         "nmsub.s %[out1], %[t1],   %[t2],  %[f1]                        \t\n" 
  958         "add.s   %[out2], %[t1],   %[t2]                                \t\n" 
  959         "add.s   %[t2],   %[in2],  %[in3]                               \t\n" 
  960         "sub.s   %[t1],   %[in1],  %[in2]                               \t\n" 
  961         "sub.s   %[out3], %[t3],   %[t0]                                \t\n" 
  962         "swc1    %[out1], 7*4(%[tmp])                                   \t\n" 
  963         "swc1    %[out2], 17*4(%[tmp])                                  \t\n" 
  964         "mul.s   %[t2],   %[t2],   %[f3]                                \t\n" 
  965         "mul.s   %[t1],   %[t1],   %[f4]                                \t\n" 
  966         "add.s   %[out1], %[t3],   %[t0]                                \t\n" 
  967         "lwc1    %[in1],  11*4(%[in])                                   \t\n" 
  968         "lwc1    %[in2],  15*4(%[in])                                   \t\n" 
  969         "sub.s   %[out3], %[out3], %[t2]                                \t\n" 
  970         "add.s   %[out2], %[t3],   %[t2]                                \t\n" 
  971         "add.s   %[out1], %[out1], %[t1]                                \t\n" 
  972         "lwc1    %[in3],  3*4(%[in])                                    \t\n" 
  973         "lwc1    %[in4],  7*4(%[in])                                    \t\n" 
  974         "swc1    %[out3], 11*4(%[tmp])                                  \t\n" 
  975         "sub.s   %[out2], %[out2], %[t1]                                \t\n" 
  976         "swc1    %[out1], 3*4(%[tmp])                                   \t\n" 
  977         "add.s   %[out3], %[in1],  %[in2]                               \t\n" 
  978         "add.s   %[t2],   %[in1],  %[in3]                               \t\n" 
  979         "sub.s   %[t3],   %[in1],  %[in2]                               \t\n" 
  980         "swc1    %[out2], 15*4(%[tmp])                                  \t\n" 
  981         "mul.s   %[t0],   %[in4],  %[f8]                                \t\n" 
  982         "sub.s   %[out3], %[out3], %[in3]                               \t\n" 
  983         "mul.s   %[t2],   %[t2],   %[f6]                                \t\n" 
  984         "mul.s   %[t3],   %[t3],   %[f7]                                \t\n" 
  985         "add.s   %[t1],   %[in2],  %[in3]                               \t\n" 
  986         "mul.s   %[out3], %[out3], %[f5]                                \t\n" 
  987         "add.s   %[out1], %[t2],   %[t3]                                \t\n" 
  988         "mul.s   %[t1],   %[t1],   %[f9]                                \t\n" 
  989         "swc1    %[out3], 5*4(%[tmp])                                   \t\n" 
  990         "add.s   %[out1], %[out1], %[t0]                                \t\n" 
  991         "add.s   %[out2], %[t2],   %[t1]                                \t\n" 
  992         "sub.s   %[out3], %[t3],   %[t1]                                \t\n" 
  993         "swc1    %[out1], 1*4(%[tmp])                                   \t\n" 
  994         "sub.s   %[out2], %[out2], %[t0]                                \t\n" 
  995         "sub.s   %[out3], %[out3], %[t0]                                \t\n" 
  996         "swc1    %[out2], 13*4(%[tmp])                                  \t\n" 
  997         "swc1    %[out3], 9*4(%[tmp])                                   \t\n" 
 1001           [in1] 
"=&f" (in1), [in2] 
"=&f" (in2),
 
 1002           [in3] 
"=&f" (in3), [in4] 
"=&f" (in4),
 
 1003           [in5] 
"=&f" (in5), [out1] 
"=&f" (out1),
 
 1004           [out2] 
"=&f" (out2), [out3] 
"=&f" (out3)
 
 1005         : [in] 
"r" (in), [
tmp] 
"r" (
tmp), [f1]
"f"(f1), [f2]
"f"(f2),
 
 1006           [f3]
"f"(f3), [f4]
"f"(f4), [f5]
"f"(f5), [f6]
"f"(f6),
 
 1007           [f7]
"f"(f7), [f8]
"f"(f8), [f9]
"f"(f9)
 
 1012     f1 = 0.50190991877167369479;
 
 1013     f2 = 5.73685662283492756461;
 
 1014     f3 = 0.51763809020504152469;
 
 1015     f4 = 1.93185165257813657349;
 
 1016     f5 = 0.55168895948124587824;
 
 1017     f6 = 1.18310079157624925896;
 
 1018     f7 = 0.61038729438072803416;
 
 1019     f8 = 0.87172339781054900991;
 
 1020     f9 = 0.70710678118654752439;
 
 1022         "lwc1   %[in1],  2*4(%[tmp])                                    \t\n" 
 1023         "lwc1   %[in2],  0(%[tmp])                                      \t\n" 
 1024         "lwc1   %[in3],  3*4(%[tmp])                                    \t\n" 
 1025         "lwc1   %[in4],  1*4(%[tmp])                                    \t\n" 
 1026         "add.s  %[s0],   %[in1], %[in2]                                 \t\n" 
 1027         "sub.s  %[s2],   %[in1], %[in2]                                 \t\n" 
 1028         "add.s  %[s1],   %[in3], %[in4]                                 \t\n" 
 1029         "sub.s  %[s3],   %[in3], %[in4]                                 \t\n" 
 1030         "lwc1   %[in1],  9*4(%[win])                                    \t\n" 
 1031         "lwc1   %[in2],  4*9*4(%[buf])                                  \t\n" 
 1032         "lwc1   %[in3],  8*4(%[win])                                    \t\n" 
 1033         "mul.s  %[s1],   %[s1],  %[f1]                                  \t\n" 
 1034         "mul.s  %[s3],   %[s3],  %[f2]                                  \t\n" 
 1035         "lwc1   %[in4],  4*8*4(%[buf])                                  \t\n" 
 1036         "lwc1   %[in5],  29*4(%[win])                                   \t\n" 
 1037         "lwc1   %[in6],  28*4(%[win])                                   \t\n" 
 1038         "add.s  %[t0],   %[s0],  %[s1]                                  \t\n" 
 1039         "sub.s  %[t1],   %[s0],  %[s1]                                  \t\n" 
 1040         "mul.s  %[out3], %[in5], %[t0]                                  \t\n" 
 1041         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1042         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1043         "mul.s  %[out4], %[in6], %[t0]                                  \t\n" 
 1044         "add.s  %[t0],   %[s2],  %[s3]                                  \t\n" 
 1045         "swc1   %[out3], 4*9*4(%[buf])                                  \t\n" 
 1046         "swc1   %[out1], 288*4(%[out])                                  \t\n" 
 1047         "swc1   %[out2], 256*4(%[out])                                  \t\n" 
 1048         "swc1   %[out4], 4*8*4(%[buf])                                  \t\n" 
 1049         "sub.s  %[t1],   %[s2],  %[s3]                                  \t\n" 
 1050         "lwc1   %[in1],  17*4(%[win])                                   \t\n" 
 1051         "lwc1   %[in2],  4*17*4(%[buf])                                 \t\n" 
 1052         "lwc1   %[in3],  0(%[win])                                      \t\n" 
 1053         "lwc1   %[in4],  0(%[buf])                                      \t\n" 
 1054         "lwc1   %[in5],  37*4(%[win])                                   \t\n" 
 1055         "lwc1   %[in6],  20*4(%[win])                                   \t\n" 
 1056         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1057         "lwc1   %[in1],  6*4(%[tmp])                                    \t\n" 
 1058         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1059         "mul.s  %[out3], %[t0],  %[in5]                                 \t\n" 
 1060         "mul.s  %[out4], %[t0],  %[in6]                                 \t\n" 
 1061         "swc1   %[out1], 544*4(%[out])                                  \t\n" 
 1062         "lwc1   %[in2],  4*4(%[tmp])                                    \t\n" 
 1063         "swc1   %[out2], 0(%[out])                                      \t\n" 
 1064         "swc1   %[out3], 4*17*4(%[buf])                                 \t\n" 
 1065         "swc1   %[out4], 0(%[buf])                                      \t\n" 
 1066         "lwc1   %[in3],  7*4(%[tmp])                                    \t\n" 
 1067         "add.s  %[s0],   %[in1], %[in2]                                 \t\n" 
 1068         "sub.s  %[s2],   %[in1], %[in2]                                 \t\n" 
 1069         "lwc1   %[in4],  5*4(%[tmp])                                    \t\n" 
 1070         "add.s  %[s1],   %[in3], %[in4]                                 \t\n" 
 1071         "sub.s  %[s3],   %[in3], %[in4]                                 \t\n" 
 1072         "lwc1   %[in1],  10*4(%[win])                                   \t\n" 
 1073         "lwc1   %[in2],  4*10*4(%[buf])                                 \t\n" 
 1074         "lwc1   %[in3],  7*4(%[win])                                    \t\n" 
 1075         "mul.s  %[s1],   %[s1],  %[f3]                                  \t\n" 
 1076         "mul.s  %[s3],   %[s3],  %[f4]                                  \t\n" 
 1077         "add.s  %[t0],   %[s0],  %[s1]                                  \t\n" 
 1078         "sub.s  %[t1],   %[s0],  %[s1]                                  \t\n" 
 1079         "lwc1   %[in4],  4*7*4(%[buf])                                  \t\n" 
 1080         "lwc1   %[in5],  30*4(%[win])                                   \t\n" 
 1081         "lwc1   %[in6],  27*4(%[win])                                   \t\n" 
 1082         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1083         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1084         "mul.s  %[out3], %[t0],  %[in5]                                 \t\n" 
 1085         "mul.s  %[out4], %[t0],  %[in6]                                 \t\n" 
 1086         "add.s  %[t0],   %[s2],  %[s3]                                  \t\n" 
 1087         "swc1   %[out1], 320*4(%[out])                                  \t\n" 
 1088         "swc1   %[out2], 224*4(%[out])                                  \t\n" 
 1089         "swc1   %[out3], 4*10*4(%[buf])                                 \t\n" 
 1090         "swc1   %[out4], 4*7*4(%[buf])                                  \t\n" 
 1091         "sub.s  %[t1],   %[s2],  %[s3]                                  \t\n" 
 1092         "lwc1   %[in1],  16*4(%[win])                                   \t\n" 
 1093         "lwc1   %[in2],  4*16*4(%[buf])                                 \t\n" 
 1094         "lwc1   %[in3],  1*4(%[win])                                    \t\n" 
 1095         "lwc1   %[in4],  4*1*4(%[buf])                                  \t\n" 
 1096         "lwc1   %[in5],  36*4(%[win])                                   \t\n" 
 1097         "lwc1   %[in6],  21*4(%[win])                                   \t\n" 
 1098         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1099         "lwc1   %[in1],  10*4(%[tmp])                                   \t\n" 
 1100         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1101         "mul.s  %[out3], %[in5], %[t0]                                  \t\n" 
 1102         "mul.s  %[out4], %[in6], %[t0]                                  \t\n" 
 1103         "swc1   %[out1], 512*4(%[out])                                  \t\n" 
 1104         "lwc1   %[in2],  8*4(%[tmp])                                    \t\n" 
 1105         "swc1   %[out2], 32*4(%[out])                                   \t\n" 
 1106         "swc1   %[out3], 4*16*4(%[buf])                                 \t\n" 
 1107         "swc1   %[out4], 4*1*4(%[buf])                                  \t\n" 
 1108         "add.s  %[s0],   %[in1], %[in2]                                 \t\n" 
 1109         "sub.s  %[s2],   %[in1], %[in2]                                 \t\n" 
 1110         "lwc1   %[in3],  11*4(%[tmp])                                   \t\n" 
 1111         "lwc1   %[in4],  9*4(%[tmp])                                    \t\n" 
 1112         "add.s  %[s1],   %[in3], %[in4]                                 \t\n" 
 1113         "sub.s  %[s3],   %[in3], %[in4]                                 \t\n" 
 1114         "lwc1   %[in1],  11*4(%[win])                                   \t\n" 
 1115         "lwc1   %[in2],  4*11*4(%[buf])                                 \t\n" 
 1116         "lwc1   %[in3],  6*4(%[win])                                    \t\n" 
 1117         "mul.s  %[s1],   %[s1],  %[f5]                                  \t\n" 
 1118         "mul.s  %[s3],   %[s3],  %[f6]                                  \t\n" 
 1119         "lwc1   %[in4],  4*6*4(%[buf])                                  \t\n" 
 1120         "lwc1   %[in5],  31*4(%[win])                                   \t\n" 
 1121         "lwc1   %[in6],  26*4(%[win])                                   \t\n" 
 1122         "add.s  %[t0],   %[s0],  %[s1]                                  \t\n" 
 1123         "sub.s  %[t1],   %[s0],  %[s1]                                  \t\n" 
 1124         "mul.s  %[out3], %[t0],  %[in5]                                 \t\n" 
 1125         "mul.s  %[out4], %[t0],  %[in6]                                 \t\n" 
 1126         "add.s  %[t0],   %[s2],  %[s3]                                  \t\n" 
 1127         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1128         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1129         "swc1   %[out3], 4*11*4(%[buf])                                 \t\n" 
 1130         "swc1   %[out4], 4*6*4(%[buf])                                  \t\n" 
 1131         "sub.s  %[t1],   %[s2],  %[s3]                                  \t\n" 
 1132         "swc1   %[out1], 352*4(%[out])                                  \t\n" 
 1133         "swc1   %[out2], 192*4(%[out])                                  \t\n" 
 1134         "lwc1   %[in1],  15*4(%[win])                                   \t\n" 
 1135         "lwc1   %[in2],  4*15*4(%[buf])                                 \t\n" 
 1136         "lwc1   %[in3],  2*4(%[win])                                    \t\n" 
 1137         "lwc1   %[in4],  4*2*4(%[buf])                                  \t\n" 
 1138         "lwc1   %[in5],  35*4(%[win])                                   \t\n" 
 1139         "lwc1   %[in6],  22*4(%[win])                                   \t\n" 
 1140         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1141         "lwc1   %[in1],  14*4(%[tmp])                                   \t\n" 
 1142         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1143         "mul.s  %[out3], %[t0],  %[in5]                                 \t\n" 
 1144         "mul.s  %[out4], %[t0],  %[in6]                                 \t\n" 
 1145         "swc1   %[out1], 480*4(%[out])                                  \t\n" 
 1146         "lwc1   %[in2],  12*4(%[tmp])                                   \t\n" 
 1147         "swc1   %[out2], 64*4(%[out])                                   \t\n" 
 1148         "swc1   %[out3], 4*15*4(%[buf])                                 \t\n" 
 1149         "swc1   %[out4], 4*2*4(%[buf])                                  \t\n" 
 1150         "lwc1   %[in3],  15*4(%[tmp])                                   \t\n" 
 1151         "add.s  %[s0],   %[in1], %[in2]                                 \t\n" 
 1152         "sub.s  %[s2],   %[in1], %[in2]                                 \t\n" 
 1153         "lwc1   %[in4],  13*4(%[tmp])                                   \t\n" 
 1154         "add.s  %[s1],   %[in3], %[in4]                                 \t\n" 
 1155         "sub.s  %[s3],   %[in3], %[in4]                                 \t\n" 
 1156         "lwc1   %[in1],  12*4(%[win])                                   \t\n" 
 1157         "lwc1   %[in2],  4*12*4(%[buf])                                 \t\n" 
 1158         "lwc1   %[in3],  5*4(%[win])                                    \t\n" 
 1159         "mul.s  %[s1],   %[s1],  %[f7]                                  \t\n" 
 1160         "mul.s  %[s3],   %[s3],  %[f8]                                  \t\n" 
 1161         "lwc1   %[in4],  4*5*4(%[buf])                                  \t\n" 
 1162         "lwc1   %[in5],  32*4(%[win])                                   \t\n" 
 1163         "lwc1   %[in6],  25*4(%[win])                                   \t\n" 
 1164         "add.s  %[t0],   %[s0],  %[s1]                                  \t\n" 
 1165         "sub.s  %[t1],   %[s0],  %[s1]                                  \t\n" 
 1166         "lwc1   %[s0],   16*4(%[tmp])                                   \t\n" 
 1167         "lwc1   %[s1],   17*4(%[tmp])                                   \t\n" 
 1168         "mul.s  %[out3], %[t0],  %[in5]                                 \t\n" 
 1169         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1170         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1171         "mul.s  %[out4], %[t0],  %[in6]                                 \t\n" 
 1172         "add.s  %[t0],   %[s2],  %[s3]                                  \t\n" 
 1173         "swc1   %[out3], 4*12*4(%[buf])                                 \t\n" 
 1174         "swc1   %[out1], 384*4(%[out])                                  \t\n" 
 1175         "swc1   %[out2], 160*4(%[out])                                  \t\n" 
 1176         "swc1   %[out4], 4*5*4(%[buf])                                  \t\n" 
 1177         "sub.s  %[t1],   %[s2],  %[s3]                                  \t\n" 
 1178         "lwc1   %[in1],  14*4(%[win])                                   \t\n" 
 1179         "lwc1   %[in2],  4*14*4(%[buf])                                 \t\n" 
 1180         "lwc1   %[in3],  3*4(%[win])                                    \t\n" 
 1181         "lwc1   %[in4],  4*3*4(%[buf])                                  \t\n" 
 1182         "lwc1   %[in5],  34*4(%[win])                                   \t\n" 
 1183         "lwc1   %[in6],  23*4(%[win])                                   \t\n" 
 1184         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1185         "mul.s  %[s1],   %[s1],  %[f9]                                  \t\n" 
 1186         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1187         "mul.s  %[out3], %[in5], %[t0]                                  \t\n" 
 1188         "mul.s  %[out4], %[in6], %[t0]                                  \t\n" 
 1189         "swc1   %[out1], 448*4(%[out])                                  \t\n" 
 1190         "add.s  %[t0],   %[s0],  %[s1]                                  \t\n" 
 1191         "swc1   %[out2], 96*4(%[out])                                   \t\n" 
 1192         "swc1   %[out3], 4*14*4(%[buf])                                 \t\n" 
 1193         "swc1   %[out4], 4*3*4(%[buf])                                  \t\n" 
 1194         "sub.s  %[t1],   %[s0],  %[s1]                                  \t\n" 
 1195         "lwc1   %[in1],  13*4(%[win])                                   \t\n" 
 1196         "lwc1   %[in2],  4*13*4(%[buf])                                 \t\n" 
 1197         "lwc1   %[in3],  4*4(%[win])                                    \t\n" 
 1198         "lwc1   %[in4],  4*4*4(%[buf])                                  \t\n" 
 1199         "lwc1   %[in5],  33*4(%[win])                                   \t\n" 
 1200         "lwc1   %[in6],  24*4(%[win])                                   \t\n" 
 1201         "madd.s %[out1], %[in2], %[in1], %[t1]                          \t\n" 
 1202         "madd.s %[out2], %[in4], %[in3], %[t1]                          \t\n" 
 1203         "mul.s  %[out3], %[t0],  %[in5]                                 \t\n" 
 1204         "mul.s  %[out4], %[t0],  %[in6]                                 \t\n" 
 1205         "swc1   %[out1], 416*4(%[out])                                  \t\n" 
 1206         "swc1   %[out2], 128*4(%[out])                                  \t\n" 
 1207         "swc1   %[out3], 4*13*4(%[buf])                                 \t\n" 
 1208         "swc1   %[out4], 4*4*4(%[buf])                                  \t\n" 
 1210         : [in1] 
"=&f" (in1), [in2] 
"=&f" (in2),
 
 1211           [in3] 
"=&f" (in3), [in4] 
"=&f" (in4),
 
 1212           [in5] 
"=&f" (in5), [in6] 
"=&f" (in6),
 
 1213           [out1] 
"=&f" (out1), [out2] 
"=&f" (out2),
 
 1214           [out3] 
"=&f" (out3), [out4] 
"=&f" (out4),
 
 1219           [buf] 
"r" (buf), [
out] 
"r" (
out),
 
 1220           [f1]
"f"(f1), [f2]
"f"(f2), [f3]
"f"(f3), [f4]
"f"(f4),
 
 1221           [f5]
"f"(f5), [f6]
"f"(f6), [f7]
"f"(f7), [f8]
"f"(f8), [f9]
"f"(f9)
 
 1226 static void ff_imdct36_blocks_mips_float(
float *
out, 
float *buf, 
float *in,
 
 1227                                int count, 
int switch_point, 
int block_type)
 
 1230     for (j=0 ; j < count; j++) {
 
 1234         int win_idx = (switch_point && j < 2) ? 0 : block_type;
 
 1237         imdct36_mips_float(
out, buf, in, 
win);
 
 1240         buf += ((j&3) != 3 ? 1 : (72-3));
 
 1250 #if HAVE_INLINE_ASM && HAVE_MIPSFPU 
 1251 #if !HAVE_MIPS32R6 && !HAVE_MIPS64R6 
 1252     s->apply_window_float   = ff_mpadsp_apply_window_mips_float;
 
 1253     s->imdct36_blocks_float = ff_imdct36_blocks_mips_float;
 
 1254     s->dct32_float          = ff_dct32_mips_float;