Mercurial > mplayer.hg
diff mp3lib/dct64_3dnow.s @ 1277:3a9699d9e7da
Slight otimization
author | nick |
---|---|
date | Thu, 05 Jul 2001 09:44:18 +0000 |
parents | 2864e32cd267 |
children | 175423b2691e |
line wrap: on
line diff
--- a/mp3lib/dct64_3dnow.s Wed Jul 04 20:54:09 2001 +0000 +++ b/mp3lib/dct64_3dnow.s Thu Jul 05 09:44:18 2001 +0000 @@ -7,6 +7,11 @@ # Warning: Phases 7 & 8 are not tested # +.data + .align 8 +x_plus_minus_3dnow: .long 0x00000000, 0x80000000 +plus_1f: .float 1.0 + .text .align 16 @@ -501,23 +506,41 @@ /* Phase 6. This is the end of easy road. */ /* Code below is coded in scalar mode. Should be optimized */ - movd 32(%ecx), %mm0 - pfadd 36(%ecx), %mm0 - movd %mm0, 32(%edx) + movd plus_1f, %mm6 + punpckldq 120(%ebx), %mm6 /* mm6 = 1.0 | 120(%ebx)*/ + movq x_plus_minus_3dnow, %mm7 /* mm7 = +1 | -1 */ - movd 32(%ecx), %mm0 - pfsub 36(%ecx), %mm0 - pfmul 120(%ebx),%mm0 - movd %mm0, 36(%edx) + movq 32(%ecx), %mm0 + movq 64(%ecx), %mm2 + movq %mm0, %mm1 + movq %mm2, %mm3 + pxor %mm7, %mm1 + pxor %mm7, %mm3 + pfacc %mm1, %mm0 + pfacc %mm3, %mm2 + pfmul %mm6, %mm0 + pfmul %mm6, %mm2 + movq %mm0, 32(%edx) + movq %mm2, 64(%edx) - movd 44(%ecx), %mm0 - pfsub 40(%ecx), %mm0 - pfmul 120(%ebx),%mm0 - - movd %mm0, 44(%edx) - pfadd 40(%ecx), %mm0 - pfadd 44(%ecx), %mm0 - movd %mm0, 40(%edx) + movd 44(%ecx), %mm0 + movd 40(%ecx), %mm2 + movd 120(%ebx), %mm3 + punpckldq 76(%ecx), %mm0 + punpckldq 72(%ecx), %mm2 + punpckldq %mm3, %mm3 + movq %mm0, %mm4 + movq %mm2, %mm5 + pfsub %mm2, %mm0 + pfmul %mm3, %mm0 + movq %mm0, %mm1 + pfadd %mm5, %mm0 + pfadd %mm4, %mm0 + movq %mm0, %mm2 + punpckldq %mm1, %mm0 + punpckhdq %mm1, %mm2 + movq %mm0, 40(%edx) + movq %mm2, 72(%edx) movd 48(%ecx), %mm3 pfsub 52(%ecx), %mm3 @@ -534,38 +557,22 @@ pfadd 48(%ecx), %mm0 pfadd 52(%ecx), %mm0 - movd %mm0, 48(%edx) - pfadd %mm3, %mm1 - movd %mm1, 56(%edx) - movd %mm2, 60(%edx) - pfadd %mm3, %mm2 - movd %mm2, 52(%edx) + pfadd %mm3, %mm1 + punpckldq %mm2, %mm1 + pfadd %mm3, %mm2 + punpckldq %mm2, %mm0 + movq %mm1, 56(%edx) + movq %mm0, 48(%edx) /*---*/ - movd 64(%ecx), %mm0 - pfadd 68(%ecx), %mm0 - movd %mm0, 64(%edx) - movd 64(%ecx), %mm0 - pfsub 68(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 68(%edx) - - movd 76(%ecx), %mm0 - pfsub 72(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 76(%edx) - pfadd 72(%ecx), %mm0 - pfadd 76(%ecx), %mm0 - movd %mm0, 72(%edx) - - movd 92(%ecx), %mm0 - pfsub 88(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 92(%edx) - pfadd 92(%ecx), %mm0 - pfadd 88(%ecx), %mm0 - movq %mm0, %mm1 + movd 92(%ecx), %mm1 + pfsub 88(%ecx), %mm1 + pfmul 120(%ebx), %mm1 + movd %mm1, 92(%edx) + pfadd 92(%ecx), %mm1 + pfadd 88(%ecx), %mm1 + movq %mm1, %mm0 pfadd 80(%ecx), %mm0 pfadd 84(%ecx), %mm0 @@ -579,14 +586,12 @@ movd %mm0, 84(%edx) movd %mm1, 88(%edx) - movd 96(%ecx), %mm0 - pfadd 100(%ecx), %mm0 - movd %mm0, 96(%edx) - - movd 96(%ecx), %mm0 - pfsub 100(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 100(%edx) + movq 96(%ecx), %mm0 + movq %mm0, %mm1 + pxor %mm7, %mm1 + pfacc %mm1, %mm0 + pfmul %mm6, %mm0 + movq %mm0, 96(%edx) movd 108(%ecx), %mm0 pfsub 104(%ecx), %mm0 @@ -596,13 +601,13 @@ pfadd 108(%ecx), %mm0 movd %mm0, 104(%edx) - movd 124(%ecx), %mm0 - pfsub 120(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movd %mm0, 124(%edx) - pfadd 120(%ecx), %mm0 - pfadd 124(%ecx), %mm0 - movq %mm0, %mm1 + movd 124(%ecx), %mm1 + pfsub 120(%ecx), %mm1 + pfmul 120(%ebx), %mm1 + movd %mm1, 124(%edx) + pfadd 120(%ecx), %mm1 + pfadd 124(%ecx), %mm1 + movq %mm1, %mm0 pfadd 112(%ecx), %mm0 pfadd 116(%ecx), %mm0 @@ -738,18 +743,18 @@ jmp .L_bye .L01: /* Phase 9*/ - movd (%ecx), %mm0 - pfadd 4(%ecx), %mm0 - pf2id %mm0, %mm0 - movd %mm0, %eax - movw %ax, 512(%esi) - movd (%ecx), %mm0 - pfsub 4(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - pf2id %mm0, %mm0 - movd %mm0, %eax - movw %ax, (%esi) + movq (%ecx), %mm0 + movq %mm0, %mm1 + pxor %mm7, %mm1 + pfacc %mm1, %mm0 + pfmul %mm6, %mm0 + pf2id %mm0, %mm0 + movd %mm0, %eax + movw %ax, 512(%esi) + psrlq $32, %mm0 + movd %mm0, %eax + movw %ax, (%esi) movd 12(%ecx), %mm0 pfsub 8(%ecx), %mm0 @@ -763,22 +768,24 @@ movd %mm0, %eax movw %ax, 256(%esi) - movd 16(%ecx), %mm0 - pfsub 20(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - movq %mm0, %mm3 + movd 16(%ecx), %mm3 + pfsub 20(%ecx), %mm3 + pfmul 120(%ebx), %mm3 + movq %mm3, %mm2 - movd 28(%ecx), %mm0 - pfsub 24(%ecx), %mm0 - pfmul 120(%ebx), %mm0 - pf2id %mm0, %mm7 + movd 28(%ecx), %mm2 + pfsub 24(%ecx), %mm2 + pfmul 120(%ebx), %mm2 + movq %mm2, %mm1 + + pf2id %mm2, %mm7 movd %mm7, %eax movw %ax, 384(%edi) - movq %mm0, %mm2 - pfadd 24(%ecx), %mm0 - pfadd 28(%ecx), %mm0 - movq %mm0, %mm1 + pfadd 24(%ecx), %mm1 + pfadd 28(%ecx), %mm1 + movq %mm1, %mm0 + pfadd 16(%ecx), %mm0 pfadd 20(%ecx), %mm0 pf2id %mm0, %mm0 @@ -793,7 +800,6 @@ movd %mm2, %eax movw %ax, 128(%edi) - /* Phase 10*/ movq 32(%edx), %mm0 @@ -813,32 +819,51 @@ movw %ax, 64(%edi) movw %cx, 192(%edi) - movd 40(%edx), %mm0 - pfadd 56(%edx), %mm0 - pf2id %mm0, %mm0 - movd %mm0, %eax - movw %ax, 192(%esi) - - movd 56(%edx), %mm0 - pfadd 36(%edx), %mm0 + movd 40(%edx), %mm3 + movd 56(%edx), %mm4 + movd 60(%edx), %mm0 + movd 44(%edx), %mm2 + movd 120(%edx), %mm5 + punpckldq %mm4, %mm3 + punpckldq 124(%edx), %mm0 + pfadd 100(%edx), %mm5 + punpckldq 36(%edx), %mm4 + punpckldq 92(%edx), %mm2 + movq %mm5, %mm6 + pfadd %mm4, %mm3 + pf2id %mm0, %mm1 + pf2id %mm3, %mm3 + pfadd 88(%edx), %mm5 + movd %mm1, %eax + movd %mm3, %ecx + movw %ax, 448(%edi) + movw %cx, 192(%esi) + pf2id %mm5, %mm5 + psrlq $32, %mm1 + psrlq $32, %mm3 + movd %mm5, %ebx + movd %mm1, %eax + movd %mm3, %ecx + movw %bx, 96(%esi) + movw %ax, 480(%edi) + movw %cx, 64(%esi) + pfadd %mm2, %mm0 pf2id %mm0, %mm0 movd %mm0, %eax - movw %ax, 64(%esi) - - movd 60(%edx), %mm0 - pf2id %mm0, %mm7 - movd %mm7, %eax - movw %ax, 448(%edi) - pfadd 44(%edx), %mm0 - pf2id %mm0, %mm0 + pfadd 68(%edx), %mm6 + movw %ax, 320(%edi) + psrlq $32, %mm0 + pf2id %mm6, %mm6 movd %mm0, %eax - movw %ax, 320(%edi) + movd %mm6, %ebx + movw %ax, 416(%edi) + movw %bx, 32(%esi) movq 96(%edx), %mm0 movq 112(%edx), %mm2 movq 104(%edx), %mm4 - pfadd 112(%edx), %mm0 - pfadd 104(%edx), %mm2 + pfadd %mm2, %mm0 + pfadd %mm4, %mm2 pfadd 120(%edx), %mm4 movq %mm0, %mm1 movq %mm2, %mm3 @@ -846,20 +871,20 @@ pfadd 64(%edx), %mm0 pfadd 80(%edx), %mm2 pfadd 72(%edx), %mm4 - pf2id %mm0, %mm7 - pf2id %mm2, %mm6 + pf2id %mm0, %mm0 + pf2id %mm2, %mm2 pf2id %mm4, %mm4 - movd %mm7, %eax - movd %mm6, %ecx + movd %mm0, %eax + movd %mm2, %ecx movd %mm4, %ebx movw %ax, 480(%esi) movw %cx, 352(%esi) movw %bx, 224(%esi) - psrlq $32, %mm7 - psrlq $32, %mm6 + psrlq $32, %mm0 + psrlq $32, %mm2 psrlq $32, %mm4 - movd %mm7, %eax - movd %mm6, %ecx + movd %mm0, %eax + movd %mm2, %ecx movd %mm4, %ebx movw %ax, 32(%edi) movw %cx, 160(%edi) @@ -886,27 +911,6 @@ movw %cx, 224(%edi) movw %bx, 352(%edi) - movd 120(%edx), %mm0 - pfadd 100(%edx), %mm0 - movq %mm0, %mm1 - pfadd 88(%edx), %mm0 - pf2id %mm0, %mm0 - movd %mm0, %eax - movw %ax, 96(%esi) - pfadd 68(%edx), %mm1 - pf2id %mm1, %mm1 - movd %mm1, %eax - movw %ax, 32(%esi) - - movq 124(%edx), %mm0 - pf2id %mm0, %mm1 - movd %mm1, %eax - movw %ax, 480(%edi) - pfadd 92(%edx), %mm0 - pf2id %mm0, %mm0 - movd %mm0, %eax - movw %ax, 416(%edi) - movsw .L_bye: @@ -915,6 +919,6 @@ popl %edi popl %esi popl %ebx - ret - + ret $12 +