⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decode_mmx.s

📁 mips上编译过的mpg 运行正常 环境:AU12
💻 S
字号:
/*	decode_MMX.s: MMX optimized synth	copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1	see COPYING and AUTHORS files in distribution or http://mpg123.org	initially written by the mysterious higway (apparently) Thomas' words about a note: Initially, I found the note "this code comes under GPL" in this file. After asking Michael about legal status of the MMX files, he said that he got them without any comment and thus I believe that the GPL comment was made by Michael, since he made mpg123 GPL at some time - and marked some files that way, but not all. Based on that thought, I now consider this file along with the other parts of higway's MMX optimization to be licensed under LGPL 2.1 by Michael's decision.*/#include "mangle.h".text.globl ASM_NAME(synth_1to1_MMX)/* int synth_1to1_MMX(real *bandPtr, int channel, short *out, short *buffs, int *bo, float *decwins); */ASM_NAME(synth_1to1_MMX):        pushl %ebp        pushl %edi        pushl %esi        pushl %ebx/* stack: 0=ebx, 4=esi, 8=edi, 12=ebp, 16=back, 20=bandPtr, 24=channel, 28=out, 32=buffs, 36=bo, 40=decwins */        movl 24(%esp),%ecx        movl 28(%esp),%edi        movl $15,%ebx        movl 36(%esp),%edx        leal (%edi,%ecx,2),%edi	decl %ecx        movl 32(%esp),%esi        movl (%edx),%eax        jecxz .L1        decl %eax        andl %ebx,%eax        leal 1088(%esi),%esi        movl %eax,(%edx).L1:        leal (%esi,%eax,2),%edx        movl %eax,%ebp        incl %eax        pushl 20(%esp)        andl %ebx,%eax        leal 544(%esi,%eax,2),%ecx        incl %ebx	testl $1, %eax	jnz .L2        xchgl %edx,%ecx	incl %ebp        leal 544(%esi),%esi.L2:        pushl %edx        pushl %ecx        call ASM_NAME(dct64_MMX)        addl $12,%esp/* stack like before, pushed 3, incremented again */	leal 1(%ebx), %ecx        subl %ebp,%ebx	pushl %eax	movl 44(%esp),%eax /* decwins */	leal (%eax,%ebx,2), %edx	popl %eax.L3:        movq  (%edx),%mm0        pmaddwd (%esi),%mm0        movq  8(%edx),%mm1        pmaddwd 8(%esi),%mm1        movq  16(%edx),%mm2        pmaddwd 16(%esi),%mm2        movq  24(%edx),%mm3        pmaddwd 24(%esi),%mm3        paddd %mm1,%mm0        paddd %mm2,%mm0        paddd %mm3,%mm0        movq  %mm0,%mm1        psrlq $32,%mm1        paddd %mm1,%mm0        psrad $13,%mm0        packssdw %mm0,%mm0        movd %mm0,%eax	movw %ax, (%edi)        leal 32(%esi),%esi        leal 64(%edx),%edx        leal 4(%edi),%edi        loop .L3        subl $64,%esi        movl $15,%ecx.L4:        movq  (%edx),%mm0        pmaddwd (%esi),%mm0        movq  8(%edx),%mm1        pmaddwd 8(%esi),%mm1        movq  16(%edx),%mm2        pmaddwd 16(%esi),%mm2        movq  24(%edx),%mm3        pmaddwd 24(%esi),%mm3        paddd %mm1,%mm0        paddd %mm2,%mm0        paddd %mm3,%mm0        movq  %mm0,%mm1        psrlq $32,%mm1        paddd %mm0,%mm1        psrad $13,%mm1        packssdw %mm1,%mm1        psubd %mm0,%mm0        psubsw %mm1,%mm0        movd %mm0,%eax	movw %ax,(%edi)        subl $32,%esi        addl $64,%edx        leal 4(%edi),%edi        loop .L4	emms        popl %ebx        popl %esi        popl %edi        popl %ebp        ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -