[Mplayer-cvslog] CVS: main/mp3lib decode_i586.c,NONE,1.1 Makefile,1.18,1.19 decode_i586.s,1.1.1.1,NONE

Nick Kurshev nick at mplayer.dev.hu
Mon Jan 14 10:33:00 CET 2002


Update of /cvsroot/mplayer/main/mp3lib
In directory mplayer:/var/tmp.root/cvs-serv15309

Modified Files:
	Makefile 
Added Files:
	decode_i586.c 
Removed Files:
	decode_i586.s 
Log Message:
S->C

--- NEW FILE ---
/*
* mpg123_synth_1to1 works the same way as the c version of this
* file.  only two types of changes have been made:
* - reordered floating point instructions to
*   prevent pipline stalls
* - made WRITE_SAMPLE use integer instead of
*   (slower) floating point
* all kinds of x86 processors should benefit from these
* modifications.
*
* useful sources of information on optimizing x86 code include:
*
*     Intel Architecture Optimization Manual
*     http://www.intel.com/design/pentium/manuals/242816.htm
*
*     Cyrix 6x86 Instruction Set Summary
*     ftp://ftp.cyrix.com/6x86/6x-dbch6.pdf
*
*     AMD-K5 Processor Software Development
*     http://www.amd.com/products/cpg/techdocs/appnotes/20007e.pdf
*
* Stefan Bieschewski <stb at acm.org>
*
* $Id: decode_i586.c,v 1.1 2002/01/14 09:32:51 nick Exp $
*/
#define real float /* ugly - but only way */

static long buffs[1088];
static long bo=1;

int synth_1to1_pent(real *bandPtr, int channel, short *samples)
{
  real tmp[3];
  register int retval;
    __asm __volatile(
"        movl %1,%%eax\n\t"/*bandPtr*/
"        movl %3,%%esi\n\t"
"        xorl %%edi,%%edi\n\t"
"        movl bo,%%ebp\n\t"
"        cmpl %%edi,%2\n\t"
"        jne .L48\n\t"
"        decl %%ebp\n\t"
"        andl $15,%%ebp\n\t"
"        movl %%ebp,bo\n\t"
"        movl $buffs,%%ecx\n\t"
"        jmp .L49\n\t"
".L48:\n\t"
"        addl $2,%%esi\n\t"
"        movl $buffs+2176,%%ecx\n\t"
".L49:\n\t"
"        testl $1,%%ebp\n\t"
"        je .L50\n\t"
"        movl %%ecx,%%ebx\n\t"
"        movl %%ebp,%4\n\t"
"        pushl %%eax\n\t"
"        movl 4+%4,%%edx\n\t"
"        leal (%%ebx,%%edx,4),%%eax\n\t"
"        pushl %%eax\n\t"
"        movl 8+%4,%%eax\n\t"
"        incl %%eax\n\t"
"        andl $15,%%eax\n\t"
"        leal 1088(,%%eax,4),%%eax\n\t"
"        addl %%ebx,%%eax\n\t"
"        jmp .L74\n\t"
".L50:\n\t"
"        leal 1088(%%ecx),%%ebx\n\t"
"        leal 1(%%ebp),%%edx\n\t"
"        movl %%edx,%4\n\t"
"        pushl %%eax\n\t"
"        leal 1092(%%ecx,%%ebp,4),%%eax\n\t"
"        pushl %%eax\n\t"
"        leal (%%ecx,%%ebp,4),%%eax\n\t"
".L74:\n\t"
"        pushl %%eax\n\t"
"        call dct64\n\t"
"        addl $12,%%esp\n\t"
"        movl %4,%%edx\n\t"
"        leal 0(,%%edx,4),%%edx\n\t"
"        movl $decwin+64,%%eax\n\t"
"        movl %%eax,%%ecx\n\t"
"        subl %%edx,%%ecx\n\t"
"        movl $16,%%ebp\n\t"
".L55:\n\t"
"        flds (%%ecx)\n\t"
"        fmuls (%%ebx)\n\t"
"        flds 4(%%ecx)\n\t"
"        fmuls 4(%%ebx)\n\t"
"        fxch %%st(1)\n\t"
"        flds 8(%%ecx)\n\t"
"        fmuls 8(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds 12(%%ecx)\n\t"
"        fmuls 12(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 16(%%ecx)\n\t"
"        fmuls 16(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds 20(%%ecx)\n\t"
"        fmuls 20(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 24(%%ecx)\n\t"
"        fmuls 24(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds 28(%%ecx)\n\t"
"        fmuls 28(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 32(%%ecx)\n\t"
"        fmuls 32(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds 36(%%ecx)\n\t"
"        fmuls 36(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 40(%%ecx)\n\t"
"        fmuls 40(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds 44(%%ecx)\n\t"
"        fmuls 44(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 48(%%ecx)\n\t"
"        fmuls 48(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds 52(%%ecx)\n\t"
"        fmuls 52(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 56(%%ecx)\n\t"
"        fmuls 56(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds 60(%%ecx)\n\t"
"        fmuls 60(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        subl $4,%%esp\n\t"
"        faddp %%st,%%st(1)\n\t"
"        fxch %%st(1)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        fistpl (%%esp)\n\t"
"        popl %%eax\n\t"
"        cmpl $32767,%%eax\n\t"
"        jg 1f\n\t"
"        cmpl $-32768,%%eax\n\t"
"        jl 2f\n\t"
"        movw %%ax,(%%esi)\n\t"
"        jmp 4f\n\t"
"1:      movw $32767,(%%esi)\n\t"
"        jmp 3f\n\t"
"2:      movw $-32768,(%%esi)\n\t"
"3:      incl %%edi\n\t"
"4:\n\t"
".L54:\n\t"
"        addl $64,%%ebx\n\t"
"        subl $-128,%%ecx\n\t"
"        addl $4,%%esi\n\t"
"        decl %%ebp\n\t"
"        jnz .L55\n\t"
"        flds (%%ecx)\n\t"
"        fmuls (%%ebx)\n\t"
"        flds 8(%%ecx)\n\t"
"        fmuls 8(%%ebx)\n\t"
"        flds 16(%%ecx)\n\t"
"        fmuls 16(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 24(%%ecx)\n\t"
"        fmuls 24(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 32(%%ecx)\n\t"
"        fmuls 32(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 40(%%ecx)\n\t"
"        fmuls 40(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 48(%%ecx)\n\t"
"        fmuls 48(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        flds 56(%%ecx)\n\t"
"        fmuls 56(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        subl $4,%%esp\n\t"
"        faddp %%st,%%st(1)\n\t"
"        fxch %%st(1)\n\t"
"        faddp %%st,%%st(1)\n\t"
"        fistpl (%%esp)\n\t"
"        popl %%eax\n\t"
"        cmpl $32767,%%eax\n\t"
"        jg 1f\n\t"
"        cmpl $-32768,%%eax\n\t"
"        jl 2f\n\t"
"        movw %%ax,(%%esi)\n\t"
"        jmp 4f\n\t"
"1:      movw $32767,(%%esi)\n\t"
"        jmp 3f\n\t"
"2:      movw $-32768,(%%esi)\n\t"
"3:      incl %%edi\n\t"
"4:\n\t"
".L62:\n\t"
"        addl $-64,%%ebx\n\t"
"        addl $4,%%esi\n\t"
"        movl %4,%%edx\n\t"
"        leal -128(%%ecx,%%edx,8),%%ecx\n\t"
"        movl $15,%%ebp\n\t"
".L68:\n\t"
"        flds -4(%%ecx)\n\t"
"        fchs\n\t"
"        fmuls (%%ebx)\n\t"
"        flds -8(%%ecx)\n\t"
"        fmuls 4(%%ebx)\n\t"
"        fxch %%st(1)\n\t"
"        flds -12(%%ecx)\n\t"
"        fmuls 8(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -16(%%ecx)\n\t"
"        fmuls 12(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -20(%%ecx)\n\t"
"        fmuls 16(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -24(%%ecx)\n\t"
"        fmuls 20(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -28(%%ecx)\n\t"
"        fmuls 24(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -32(%%ecx)\n\t"
"        fmuls 28(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -36(%%ecx)\n\t"
"        fmuls 32(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -40(%%ecx)\n\t"
"        fmuls 36(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -44(%%ecx)\n\t"
"        fmuls 40(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -48(%%ecx)\n\t"
"        fmuls 44(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -52(%%ecx)\n\t"
"        fmuls 48(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -56(%%ecx)\n\t"
"        fmuls 52(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds -60(%%ecx)\n\t"
"        fmuls 56(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        flds (%%ecx)\n\t"
"        fmuls 60(%%ebx)\n\t"
"        fxch %%st(2)\n\t"
"        subl $4,%%esp\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        fxch %%st(1)\n\t"
"        fsubrp %%st,%%st(1)\n\t"
"        fistpl (%%esp)\n\t"
"        popl %%eax\n\t"
"        cmpl $32767,%%eax\n\t"
"        jg 1f\n\t"
"        cmpl $-32768,%%eax\n\t"
"        jl 2f\n\t"
"        movw %%ax,(%%esi)\n\t"
"        jmp 4f\n\t"
"1:      movw $32767,(%%esi)\n\t"
"        jmp 3f\n\t"
"2:      movw $-32768,(%%esi)\n\t"
"3:      incl %%edi\n\t"
"4:\n\t"
".L67:\n\t"
"        addl $-64,%%ebx\n\t"
"        addl $-128,%%ecx\n\t"
"        addl $4,%%esi\n\t"
"        decl %%ebp\n\t"
"        jnz .L68\n\t"
"        movl %%edi,%%eax\n\t"
	:"=a"(retval)
	:"m"(bandPtr),"m"(channel),"m"(samples),"m"(tmp[0])
	:"memory","%ebp","%edi","%esi","%ebx");
  return retval;
}

Index: Makefile
===================================================================
RCS file: /cvsroot/mplayer/main/mp3lib/Makefile,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- Makefile	13 Jan 2002 18:26:58 -0000	1.18
+++ Makefile	14 Jan 2002 09:32:51 -0000	1.19
@@ -9,7 +9,7 @@
 endif
 CFLAGS  = $(OPTFLAGS) $(EXTRA_INC)
 ifeq ($(TARGET_ARCH_X86),yes)
-SRCS += d_cpu.s decode_i586.s
+SRCS += d_cpu.s decode_i586.c
 OBJS += d_cpu.o decode_i586.o
 ifeq ($(TARGET_MMX),yes)
 SRCS += decode_MMX.c dct64_MMX.s tabinit_MMX.c

--- decode_i586.s DELETED ---




More information about the MPlayer-cvslog mailing list