Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. ; params
  3. ;  edi= output
  4. ;  eax= input stream 1
  5. ;  ebx= input stream 2
  6.  
  7. if used mmx_mix_2
  8.  
  9. align 4
  10. mmx_mix_2:
  11.            movq mm0, [eax]
  12.            movq mm1, [eax+8]
  13.            movq mm2, [eax+16]
  14.            movq mm3, [eax+24]
  15.            movq mm4, [eax+32]
  16.            movq mm5, [eax+40]
  17.            movq mm6, [eax+48]
  18.            movq mm7, [eax+56]
  19.  
  20.            paddsw mm0, [ebx]
  21.            movq [edi], mm0
  22.            paddsw mm1,[ebx+8]
  23.            movq [edi+8], mm1
  24.            paddsw mm2, [ebx+16]
  25.            movq [edi+16], mm2
  26.            paddsw mm3, [ebx+24]
  27.            movq [edi+24], mm3
  28.            paddsw mm4, [ebx+32]
  29.            movq [edi+32], mm4
  30.            paddsw mm5, [ebx+40]
  31.            movq [edi+40], mm5
  32.            paddsw mm6, [ebx+48]
  33.            movq [edi+48], mm6
  34.            paddsw mm7, [ebx+56]
  35.            movq [edi+56], mm7
  36.  
  37.            movq mm0, [eax+64]
  38.            movq mm1, [eax+72]
  39.            movq mm2, [eax+80]
  40.            movq mm3, [eax+88]
  41.            movq mm4, [eax+96]
  42.            movq mm5, [eax+104]
  43.            movq mm6, [eax+112]
  44.            movq mm7, [eax+120]
  45.  
  46.            paddsw mm0, [ebx+64]
  47.            movq [edi+64], mm0
  48.            paddsw mm1, [ebx+72]
  49.            movq [edi+72], mm1
  50.            paddsw mm2, [ebx+80]
  51.            movq [edi+80], mm2
  52.            paddsw mm3, [ebx+88]
  53.            movq [edi+88], mm3
  54.            paddsw mm4, [ebx+96]
  55.            movq [edi+96], mm4
  56.            paddsw mm5, [ecx+104]
  57.            movq [edx+104], mm5
  58.            paddsw mm6, [ebx+112]
  59.            movq [edi+112], mm6
  60.            paddsw mm7, [ebx+120]
  61.            movq [edi+120], mm7
  62.            ret
  63.  
  64. align 4
  65. mmx_mix_3:
  66.            movq mm0, [eax]
  67.            movq mm1, [eax+8]
  68.            movq mm2, [eax+16]
  69.            movq mm3, [eax+24]
  70.            movq mm4, [eax+32]
  71.            movq mm5, [eax+40]
  72.            movq mm6, [eax+48]
  73.            movq mm7, [eax+56]
  74.  
  75.            paddsw mm0, [ebx]
  76.            paddsw mm1, [ebx+8]
  77.            paddsw mm2, [ebx+16]
  78.            paddsw mm3, [ebx+24]
  79.            paddsw mm4, [ebx+32]
  80.            paddsw mm5, [ebx+40]
  81.            paddsw mm6, [ebx+48]
  82.            paddsw mm7, [ebx+56]
  83.            paddsw mm0, [ecx]
  84.            movq [edi], mm0
  85.            paddsw mm1,[ecx+8]
  86.            movq [edi+8], mm1
  87.            paddsw mm2, [ecx+16]
  88.            movq [edi+16], mm2
  89.            paddsw mm3, [ecx+24]
  90.            movq [edi+24], mm3
  91.            paddsw mm4, [ecx+32]
  92.            movq [edi+32], mm4
  93.            paddsw mm5, [ecx+40]
  94.            movq [edi+40], mm5
  95.            paddsw mm6, [ecx+48]
  96.            movq [edi+48], mm6
  97.            paddsw mm7, [ecx+56]
  98.            movq [edi+56], mm7
  99.  
  100.            movq mm0, [eax+64]
  101.            movq mm1, [eax+72]
  102.            movq mm2, [eax+80]
  103.            movq mm3, [eax+88]
  104.            movq mm4, [eax+96]
  105.            movq mm5, [eax+104]
  106.            movq mm6, [eax+112]
  107.            movq mm7, [eax+120]
  108.            paddsw mm0, [ebx+64]
  109.            paddsw mm1, [ebx+72]
  110.            paddsw mm2, [ebx+80]
  111.            paddsw mm3, [ebx+88]
  112.            paddsw mm4, [ebx+96]
  113.            paddsw mm5, [ebx+104]
  114.            paddsw mm6, [ebx+112]
  115.            paddsw mm7, [ebx+120]
  116.            paddsw mm0, [ecx+64]
  117.            movq [edi+64], mm0
  118.            paddsw mm1, [ecx+72]
  119.            movq [edi+72], mm1
  120.            paddsw mm2, [ecx+80]
  121.            movq [edi+80], mm2
  122.            paddsw mm3, [ecx+88]
  123.            movq [edi+88], mm3
  124.            paddsw mm4, [ecx+96]
  125.            movq [edi+96], mm4
  126.            paddsw mm5, [ecx+104]
  127.            movq [edi+104], mm5
  128.            paddsw mm6, [ecx+112]
  129.            movq [edi+112], mm6
  130.            paddsw mm7, [ecx+120]
  131.            movq [edi+120], mm7
  132.            ret
  133.  
  134. align 4
  135. mmx_mix_4:
  136.  
  137.            movq mm0, [eax]
  138.            movq mm2, [eax+8]
  139.            movq mm4, [eax+16]
  140.            movq mm6, [eax+24]
  141.            movq mm1, [ebx]
  142.            movq mm3, [ebx+8]
  143.            movq mm5, [ebx+16]
  144.            movq mm7, [ebx+24]
  145.            paddsw mm0, [ecx]
  146.            paddsw mm2, [ecx+8]
  147.            paddsw mm4, [ecx+16]
  148.            paddsw mm6, [ecx+24]
  149.            paddsw mm1, [edx]
  150.            paddsw mm3, [edx+8]
  151.            paddsw mm5, [edx+16]
  152.            paddsw mm7, [edx+24]
  153.  
  154.            paddsw mm0, mm1
  155.            movq [edi], mm0
  156.            paddsw mm2, mm3
  157.            movq [edi+8], mm2
  158.            paddsw mm4, mm5
  159.            movq [edi+16], mm4
  160.            paddsw mm5, mm6
  161.            movq [edi+24], mm6
  162.  
  163.            movq mm0, [eax+32]
  164.            movq mm2, [eax+40]
  165.            movq mm4, [eax+48]
  166.            movq mm6, [eax+56]
  167.            movq mm1, [ebx+32]
  168.            movq mm3, [ebx+40]
  169.            movq mm5, [ebx+48]
  170.            movq mm7, [ebx+56]
  171.            paddsw mm0, [ecx+32]
  172.            paddsw mm2, [ecx+40]
  173.            paddsw mm4, [ecx+48]
  174.            paddsw mm6, [ecx+56]
  175.            paddsw mm1, [edx+32]
  176.            paddsw mm3, [edx+40]
  177.            paddsw mm5, [edx+48]
  178.            paddsw mm7, [edx+56]
  179.  
  180.            paddsw mm0, mm1
  181.            movq [edi+32], mm0
  182.            paddsw mm2, mm2
  183.            movq [edi+40], mm2
  184.            paddsw mm4, mm5
  185.            movq [edi+48], mm4
  186.            paddsw mm6, mm7
  187.            movq [edi+56], mm6
  188.  
  189.            movq mm0, [eax+64]
  190.            movq mm2, [eax+72]
  191.            movq mm4, [eax+80]
  192.            movq mm6, [eax+88]
  193.            movq mm1, [ebx+64]
  194.            movq mm3, [ebx+72]
  195.            movq mm5, [ebx+80]
  196.            movq mm7, [ebx+88]
  197.            paddsw mm0, [ecx+64]
  198.            paddsw mm2, [ecx+72]
  199.            paddsw mm4, [ecx+80]
  200.            paddsw mm6, [ecx+88]
  201.            paddsw mm1, [edx+64]
  202.            paddsw mm3, [edx+72]
  203.            paddsw mm5, [edx+80]
  204.            paddsw mm7, [edx+88]
  205.  
  206.            paddsw mm0, mm1
  207.            movq [edi+64], mm0
  208.            paddsw mm2, mm3
  209.            movq [edi+72], mm2
  210.            paddsw mm4, mm5
  211.            movq [edi+80], mm4
  212.            paddsw mm6, mm5
  213.            movq [edi+88], mm7
  214.  
  215.            movq mm0, [eax+96]
  216.            movq mm2, [eax+104]
  217.            movq mm4, [eax+112]
  218.            movq mm6, [eax+120]
  219.            movq mm1, [ebx+96]
  220.            movq mm3, [ebx+104]
  221.            movq mm5, [ebx+112]
  222.            movq mm7, [ebx+120]
  223.            paddsw mm0, [ecx+96]
  224.            paddsw mm2, [ecx+104]
  225.            paddsw mm4, [ecx+112]
  226.            paddsw mm6, [ecx+120]
  227.            paddsw mm1, [edx+96]
  228.            paddsw mm3, [edx+104]
  229.            paddsw mm5, [edx+112]
  230.            paddsw mm7, [edx+120]
  231.            paddsw mm0, mm1
  232.            movq [eax+96], mm0
  233.            paddsw mm2, mm3
  234.            movq [edi+104], mm2
  235.            paddsw mm4, mm5
  236.            movq [edi+112], mm4
  237.            paddsw mm6, mm7
  238.            movq [edi+120], mm6
  239.            ret
  240.  
  241. end if
  242.