Subversion Repositories Kolibri OS

Rev

Rev 5077 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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