Index: mp3lib/decode_MMX.c =================================================================== --- mp3lib/decode_MMX.c (版本 23376) +++ mp3lib/decode_MMX.c (工作副本) @@ -84,22 +84,22 @@ __asm __volatile( ASMALIGN(4) ".L03:\n\t" - "movq (%%edx),%%mm0\n\t" - "movq 64(%%edx),%%mm4\n\t" - "pmaddwd (%%esi),%%mm0\n\t" - "pmaddwd 32(%%esi),%%mm4\n\t" - "movq 8(%%edx),%%mm1\n\t" - "movq 72(%%edx),%%mm5\n\t" - "pmaddwd 8(%%esi),%%mm1\n\t" - "pmaddwd 40(%%esi),%%mm5\n\t" - "movq 16(%%edx),%%mm2\n\t" - "movq 80(%%edx),%%mm6\n\t" - "pmaddwd 16(%%esi),%%mm2\n\t" - "pmaddwd 48(%%esi),%%mm6\n\t" - "movq 24(%%edx),%%mm3\n\t" - "movq 88(%%edx),%%mm7\n\t" - "pmaddwd 24(%%esi),%%mm3\n\t" - "pmaddwd 56(%%esi),%%mm7\n\t" + "movq (%1),%%mm0\n\t" + "movq 64(%1),%%mm4\n\t" + "pmaddwd (%2),%%mm0\n\t" + "pmaddwd 32(%2),%%mm4\n\t" + "movq 8(%1),%%mm1\n\t" + "movq 72(%1),%%mm5\n\t" + "pmaddwd 8(%2),%%mm1\n\t" + "pmaddwd 40(%2),%%mm5\n\t" + "movq 16(%1),%%mm2\n\t" + "movq 80(%1),%%mm6\n\t" + "pmaddwd 16(%2),%%mm2\n\t" + "pmaddwd 48(%2),%%mm6\n\t" + "movq 24(%1),%%mm3\n\t" + "movq 88(%1),%%mm7\n\t" + "pmaddwd 24(%2),%%mm3\n\t" + "pmaddwd 56(%2),%%mm7\n\t" "paddd %%mm1,%%mm0\n\t" "paddd %%mm5,%%mm4\n\t" "paddd %%mm2,%%mm0\n\t" @@ -117,28 +117,28 @@ "packssdw %%mm0,%%mm0\n\t" "packssdw %%mm4,%%mm4\n\t" - "movq (%%edi), %%mm1\n\t" + "movq (%3), %%mm1\n\t" "punpckldq %%mm4, %%mm0\n\t" "pand "MANGLE(one_null)", %%mm1\n\t" "pand "MANGLE(null_one)", %%mm0\n\t" "por %%mm0, %%mm1\n\t" - "movq %%mm1,(%%edi)\n\t" + "movq %%mm1,(%3)\n\t" - "add $64,%%esi\n\t" - "add $128,%%edx\n\t" - "add $8,%%edi\n\t" + "add $64,%2\n\t" + "add $128,%1\n\t" + "add $8,%3\n\t" - "decl %%ecx\n\t" + "decl %0\n\t" "jnz .L03\n\t" - "movq (%%edx),%%mm0\n\t" - "pmaddwd (%%esi),%%mm0\n\t" - "movq 8(%%edx),%%mm1\n\t" - "pmaddwd 8(%%esi),%%mm1\n\t" - "movq 16(%%edx),%%mm2\n\t" - "pmaddwd 16(%%esi),%%mm2\n\t" - "movq 24(%%edx),%%mm3\n\t" - "pmaddwd 24(%%esi),%%mm3\n\t" + "movq (%1),%%mm0\n\t" + "pmaddwd (%2),%%mm0\n\t" + "movq 8(%1),%%mm1\n\t" + "pmaddwd 8(%2),%%mm1\n\t" + "movq 16(%1),%%mm2\n\t" + "pmaddwd 16(%2),%%mm2\n\t" + "movq 24(%1),%%mm3\n\t" + "pmaddwd 24(%2),%%mm3\n\t" "paddd %%mm1,%%mm0\n\t" "paddd %%mm2,%%mm0\n\t" "paddd %%mm3,%%mm0\n\t" @@ -148,30 +148,30 @@ "psrad $13,%%mm0\n\t" "packssdw %%mm0,%%mm0\n\t" "movd %%mm0,%%eax\n\t" - "movw %%ax, (%%edi)\n\t" - "sub $32,%%esi\n\t" - "add $64,%%edx\n\t" - "add $4,%%edi\n\t" + "movw %%ax, (%3)\n\t" + "sub $32,%2\n\t" + "add $64,%1\n\t" + "add $4,%3\n\t" - "movl $7,%%ecx\n\t" + "movl $7,%0\n\t" ASMALIGN(4) ".L04:\n\t" - "movq (%%edx),%%mm0\n\t" - "movq 64(%%edx),%%mm4\n\t" - "pmaddwd (%%esi),%%mm0\n\t" - "pmaddwd -32(%%esi),%%mm4\n\t" - "movq 8(%%edx),%%mm1\n\t" - "movq 72(%%edx),%%mm5\n\t" - "pmaddwd 8(%%esi),%%mm1\n\t" - "pmaddwd -24(%%esi),%%mm5\n\t" - "movq 16(%%edx),%%mm2\n\t" - "movq 80(%%edx),%%mm6\n\t" - "pmaddwd 16(%%esi),%%mm2\n\t" - "pmaddwd -16(%%esi),%%mm6\n\t" - "movq 24(%%edx),%%mm3\n\t" - "movq 88(%%edx),%%mm7\n\t" - "pmaddwd 24(%%esi),%%mm3\n\t" - "pmaddwd -8(%%esi),%%mm7\n\t" + "movq (%1),%%mm0\n\t" + "movq 64(%1),%%mm4\n\t" + "pmaddwd (%2),%%mm0\n\t" + "pmaddwd -32(%2),%%mm4\n\t" + "movq 8(%1),%%mm1\n\t" + "movq 72(%1),%%mm5\n\t" + "pmaddwd 8(%2),%%mm1\n\t" + "pmaddwd -24(%2),%%mm5\n\t" + "movq 16(%1),%%mm2\n\t" + "movq 80(%1),%%mm6\n\t" + "pmaddwd 16(%2),%%mm2\n\t" + "pmaddwd -16(%2),%%mm6\n\t" + "movq 24(%1),%%mm3\n\t" + "movq 88(%1),%%mm7\n\t" + "pmaddwd 24(%2),%%mm3\n\t" + "pmaddwd -8(%2),%%mm7\n\t" "paddd %%mm1,%%mm0\n\t" "paddd %%mm5,%%mm4\n\t" "paddd %%mm2,%%mm0\n\t" @@ -193,27 +193,27 @@ "psubsw %%mm1,%%mm0\n\t" "psubsw %%mm5,%%mm4\n\t" - "movq (%%edi), %%mm1\n\t" + "movq (%3), %%mm1\n\t" "punpckldq %%mm4, %%mm0\n\t" "pand "MANGLE(one_null)", %%mm1\n\t" "pand "MANGLE(null_one)", %%mm0\n\t" "por %%mm0, %%mm1\n\t" - "movq %%mm1,(%%edi)\n\t" + "movq %%mm1,(%3)\n\t" - "sub $64,%%esi\n\t" - "add $128,%%edx\n\t" - "add $8,%%edi\n\t" - "decl %%ecx\n\t" + "sub $64,%2\n\t" + "add $128,%1\n\t" + "add $8,%3\n\t" + "decl %0\n\t" "jnz .L04\n\t" - "movq (%%edx),%%mm0\n\t" - "pmaddwd (%%esi),%%mm0\n\t" - "movq 8(%%edx),%%mm1\n\t" - "pmaddwd 8(%%esi),%%mm1\n\t" - "movq 16(%%edx),%%mm2\n\t" - "pmaddwd 16(%%esi),%%mm2\n\t" - "movq 24(%%edx),%%mm3\n\t" - "pmaddwd 24(%%esi),%%mm3\n\t" + "movq (%1),%%mm0\n\t" + "pmaddwd (%2),%%mm0\n\t" + "movq 8(%1),%%mm1\n\t" + "pmaddwd 8(%2),%%mm1\n\t" + "movq 16(%1),%%mm2\n\t" + "pmaddwd 16(%2),%%mm2\n\t" + "movq 24(%1),%%mm3\n\t" + "pmaddwd 24(%2),%%mm3\n\t" "paddd %%mm1,%%mm0\n\t" "paddd %%mm2,%%mm0\n\t" "paddd %%mm3,%%mm0\n\t" @@ -225,9 +225,9 @@ "psubd %%mm0,%%mm0\n\t" "psubsw %%mm1,%%mm0\n\t" "movd %%mm0,%%eax\n\t" - "movw %%ax,(%%edi)\n\t" + "movw %%ax,(%3)\n\t" "emms\n\t" - :"+c"(i), "+d"(window), "+S"(b0), "+D"(samples) + :"+r"(i), "+r"(window), "+r"(b0), "+r"(samples) : :"memory", "%eax"); return 0;