;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;; ;; Distributed under terms of the GNU General Public License ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; params ; edi= output ; eax= input stream 1 ; ebx= input stream 2 if used mmx_mix_2 align 4 mmx_mix_2: movq mm0, [eax] movq mm1, [eax+8] movq mm2, [eax+16] movq mm3, [eax+24] movq mm4, [eax+32] movq mm5, [eax+40] movq mm6, [eax+48] movq mm7, [eax+56] paddsw mm0, [ebx] movq [edi], mm0 paddsw mm1,[ebx+8] movq [edi+8], mm1 paddsw mm2, [ebx+16] movq [edi+16], mm2 paddsw mm3, [ebx+24] movq [edi+24], mm3 paddsw mm4, [ebx+32] movq [edi+32], mm4 paddsw mm5, [ebx+40] movq [edi+40], mm5 paddsw mm6, [ebx+48] movq [edi+48], mm6 paddsw mm7, [ebx+56] movq [edi+56], mm7 movq mm0, [eax+64] movq mm1, [eax+72] movq mm2, [eax+80] movq mm3, [eax+88] movq mm4, [eax+96] movq mm5, [eax+104] movq mm6, [eax+112] movq mm7, [eax+120] paddsw mm0, [ebx+64] movq [edi+64], mm0 paddsw mm1, [ebx+72] movq [edi+72], mm1 paddsw mm2, [ebx+80] movq [edi+80], mm2 paddsw mm3, [ebx+88] movq [edi+88], mm3 paddsw mm4, [ebx+96] movq [edi+96], mm4 paddsw mm5, [ecx+104] movq [edx+104], mm5 paddsw mm6, [ebx+112] movq [edi+112], mm6 paddsw mm7, [ebx+120] movq [edi+120], mm7 ret align 4 mmx_mix_3: movq mm0, [eax] movq mm1, [eax+8] movq mm2, [eax+16] movq mm3, [eax+24] movq mm4, [eax+32] movq mm5, [eax+40] movq mm6, [eax+48] movq mm7, [eax+56] paddsw mm0, [ebx] paddsw mm1, [ebx+8] paddsw mm2, [ebx+16] paddsw mm3, [ebx+24] paddsw mm4, [ebx+32] paddsw mm5, [ebx+40] paddsw mm6, [ebx+48] paddsw mm7, [ebx+56] paddsw mm0, [ecx] movq [edi], mm0 paddsw mm1,[ecx+8] movq [edi+8], mm1 paddsw mm2, [ecx+16] movq [edi+16], mm2 paddsw mm3, [ecx+24] movq [edi+24], mm3 paddsw mm4, [ecx+32] movq [edi+32], mm4 paddsw mm5, [ecx+40] movq [edi+40], mm5 paddsw mm6, [ecx+48] movq [edi+48], mm6 paddsw mm7, [ecx+56] movq [edi+56], mm7 movq mm0, [eax+64] movq mm1, [eax+72] movq mm2, [eax+80] movq mm3, [eax+88] movq mm4, [eax+96] movq mm5, [eax+104] movq mm6, [eax+112] movq mm7, [eax+120] paddsw mm0, [ebx+64] paddsw mm1, [ebx+72] paddsw mm2, [ebx+80] paddsw mm3, [ebx+88] paddsw mm4, [ebx+96] paddsw mm5, [ebx+104] paddsw mm6, [ebx+112] paddsw mm7, [ebx+120] paddsw mm0, [ecx+64] movq [edi+64], mm0 paddsw mm1, [ecx+72] movq [edi+72], mm1 paddsw mm2, [ecx+80] movq [edi+80], mm2 paddsw mm3, [ecx+88] movq [edi+88], mm3 paddsw mm4, [ecx+96] movq [edi+96], mm4 paddsw mm5, [ecx+104] movq [edi+104], mm5 paddsw mm6, [ecx+112] movq [edi+112], mm6 paddsw mm7, [ecx+120] movq [edi+120], mm7 ret align 4 mmx_mix_4: movq mm0, [eax] movq mm2, [eax+8] movq mm4, [eax+16] movq mm6, [eax+24] movq mm1, [ebx] movq mm3, [ebx+8] movq mm5, [ebx+16] movq mm7, [ebx+24] paddsw mm0, [ecx] paddsw mm2, [ecx+8] paddsw mm4, [ecx+16] paddsw mm6, [ecx+24] paddsw mm1, [edx] paddsw mm3, [edx+8] paddsw mm5, [edx+16] paddsw mm7, [edx+24] paddsw mm0, mm1 movq [edi], mm0 paddsw mm2, mm3 movq [edi+8], mm2 paddsw mm4, mm5 movq [edi+16], mm4 paddsw mm5, mm6 movq [edi+24], mm6 movq mm0, [eax+32] movq mm2, [eax+40] movq mm4, [eax+48] movq mm6, [eax+56] movq mm1, [ebx+32] movq mm3, [ebx+40] movq mm5, [ebx+48] movq mm7, [ebx+56] paddsw mm0, [ecx+32] paddsw mm2, [ecx+40] paddsw mm4, [ecx+48] paddsw mm6, [ecx+56] paddsw mm1, [edx+32] paddsw mm3, [edx+40] paddsw mm5, [edx+48] paddsw mm7, [edx+56] paddsw mm0, mm1 movq [edi+32], mm0 paddsw mm2, mm2 movq [edi+40], mm2 paddsw mm4, mm5 movq [edi+48], mm4 paddsw mm6, mm7 movq [edi+56], mm6 movq mm0, [eax+64] movq mm2, [eax+72] movq mm4, [eax+80] movq mm6, [eax+88] movq mm1, [ebx+64] movq mm3, [ebx+72] movq mm5, [ebx+80] movq mm7, [ebx+88] paddsw mm0, [ecx+64] paddsw mm2, [ecx+72] paddsw mm4, [ecx+80] paddsw mm6, [ecx+88] paddsw mm1, [edx+64] paddsw mm3, [edx+72] paddsw mm5, [edx+80] paddsw mm7, [edx+88] paddsw mm0, mm1 movq [edi+64], mm0 paddsw mm2, mm3 movq [edi+72], mm2 paddsw mm4, mm5 movq [edi+80], mm4 paddsw mm6, mm5 movq [edi+88], mm7 movq mm0, [eax+96] movq mm2, [eax+104] movq mm4, [eax+112] movq mm6, [eax+120] movq mm1, [ebx+96] movq mm3, [ebx+104] movq mm5, [ebx+112] movq mm7, [ebx+120] paddsw mm0, [ecx+96] paddsw mm2, [ecx+104] paddsw mm4, [ecx+112] paddsw mm6, [ecx+120] paddsw mm1, [edx+96] paddsw mm3, [edx+104] paddsw mm5, [edx+112] paddsw mm7, [edx+120] paddsw mm0, mm1 movq [eax+96], mm0 paddsw mm2, mm3 movq [edi+104], mm2 paddsw mm4, mm5 movq [edi+112], mm4 paddsw mm6, mm7 movq [edi+120], mm6 ret end if