Subversion Repositories Kolibri OS

Rev

Rev 425 | Blame | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                              ;;
  3. ;; Copyright (C) KolibriOS team 2004-2007. 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.