diff options
author | gpoirier <gpoirier@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-06-27 05:51:45 +0000 |
---|---|---|
committer | gpoirier <gpoirier@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2006-06-27 05:51:45 +0000 |
commit | 1368a40b20c0fad451eaccc3e1437663eb8a3ed8 (patch) | |
tree | 8871994ef85852aa5d3b299018d1de93fbe1894f /mp3lib | |
parent | 3b2c495798272ad5d31810330862a712e9ea1727 (diff) | |
download | mpv-1368a40b20c0fad451eaccc3e1437663eb8a3ed8.tar.bz2 mpv-1368a40b20c0fad451eaccc3e1437663eb8a3ed8.tar.xz |
fix conversion float to int to use saturated ops,
Patch by Zuxy Meng < zuxy PP meng AH gmail PP com >
Original thread:
Date: Jun 21, 2006 2:50 PM
Subject: [MPlayer-dev-eng] [PATCH] Saturation & PSWAPD bugfix in mp3lib/dct64_3dnow.c & mp3lib/dct64_k7.c
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18837 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mp3lib')
-rw-r--r-- | mp3lib/dct64_3dnow.c | 53 | ||||
-rw-r--r-- | mp3lib/dct64_k7.c | 40 |
2 files changed, 52 insertions, 41 deletions
diff --git a/mp3lib/dct64_3dnow.c b/mp3lib/dct64_3dnow.c index f957e9ce65..fc5dec1e86 100644 --- a/mp3lib/dct64_3dnow.c +++ b/mp3lib/dct64_3dnow.c @@ -746,21 +746,23 @@ void dct64_MMX_3dnow(real *a,real *b,real *c) " pfacc %%mm1, %%mm0\n\t" " pfmul %%mm6, %%mm0\n\t" " pf2id %%mm0, %%mm0\n\t" +" packssdw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " movw %%ax, 512(%%esi)\n\t" -" psrlq $32, %%mm0\n\t" -" movd %%mm0, %%eax\n\t" +" shrl $16, %%eax\n\t" " movw %%ax, (%%esi)\n\t" " movd 12(%%ecx), %%mm0\n\t" " pfsub 8(%%ecx), %%mm0\n\t" " pfmul 120(%%ebx), %%mm0\n\t" " pf2id %%mm0, %%mm7\n\t" +" packssdw %%mm7, %%mm7\n\t" " movd %%mm7, %%eax\n\t" " movw %%ax, 256(%%edi)\n\t" " pfadd 12(%%ecx), %%mm0\n\t" " pfadd 8(%%ecx), %%mm0\n\t" " pf2id %%mm0, %%mm0\n\t" +" packssdw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " movw %%ax, 256(%%esi)\n\t" @@ -775,6 +777,7 @@ void dct64_MMX_3dnow(real *a,real *b,real *c) " movq %%mm2, %%mm1\n\t" " pf2id %%mm2, %%mm7\n\t" +" packssdw %%mm7, %%mm7\n\t" " movd %%mm7, %%eax\n\t" " movw %%ax, 384(%%edi)\n\t" @@ -785,14 +788,17 @@ void dct64_MMX_3dnow(real *a,real *b,real *c) " pfadd 16(%%ecx), %%mm0\n\t" " pfadd 20(%%ecx), %%mm0\n\t" " pf2id %%mm0, %%mm0\n\t" +" packssdw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " movw %%ax, 384(%%esi)\n\t" " pfadd %%mm3, %%mm1\n\t" " pf2id %%mm1, %%mm1\n\t" +" packssdw %%mm1, %%mm1\n\t" " movd %%mm1, %%eax\n\t" " movw %%ax, 128(%%esi)\n\t" " pfadd %%mm3, %%mm2\n\t" " pf2id %%mm2, %%mm2\n\t" +" packssdw %%mm2, %%mm2\n\t" " movd %%mm2, %%eax\n\t" " movw %%ax, 128(%%edi)\n\t" @@ -804,14 +810,14 @@ void dct64_MMX_3dnow(real *a,real *b,real *c) " pfadd 40(%%edx), %%mm1\n\t" " pf2id %%mm0, %%mm0\n\t" " pf2id %%mm1, %%mm1\n\t" +" packssdw %%mm0, %%mm0\n\t" +" packssdw %%mm1, %%mm1\n\t" " movd %%mm0, %%eax\n\t" " movd %%mm1, %%ecx\n\t" " movw %%ax, 448(%%esi)\n\t" " movw %%cx, 320(%%esi)\n\t" -" psrlq $32, %%mm0\n\t" -" psrlq $32, %%mm1\n\t" -" movd %%mm0, %%eax\n\t" -" movd %%mm1, %%ecx\n\t" +" shrl $16, %%eax\n\t" +" shrl $16, %%ecx\n\t" " movw %%ax, 64(%%edi)\n\t" " movw %%cx, 192(%%edi)\n\t" @@ -829,28 +835,30 @@ void dct64_MMX_3dnow(real *a,real *b,real *c) " pfadd %%mm4, %%mm3\n\t" " pf2id %%mm0, %%mm1\n\t" " pf2id %%mm3, %%mm3\n\t" +" packssdw %%mm0, %%mm0\n\t" +" packssdw %%mm3, %%mm3\n\t" " pfadd 88(%%edx), %%mm5\n\t" " movd %%mm1, %%eax\n\t" " movd %%mm3, %%ecx\n\t" " movw %%ax, 448(%%edi)\n\t" " movw %%cx, 192(%%esi)\n\t" " pf2id %%mm5, %%mm5\n\t" -" psrlq $32, %%mm1\n\t" -" psrlq $32, %%mm3\n\t" +" packssdw %%mm5, %%mm5\n\t" +" shrl $16, %%eax\n\t" +" shrl $16, %%ecx\n\t" " movd %%mm5, %%ebx\n\t" -" movd %%mm1, %%eax\n\t" -" movd %%mm3, %%ecx\n\t" " movw %%bx, 96(%%esi)\n\t" " movw %%ax, 480(%%edi)\n\t" " movw %%cx, 64(%%esi)\n\t" " pfadd %%mm2, %%mm0\n\t" " pf2id %%mm0, %%mm0\n\t" +" packssdw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " pfadd 68(%%edx), %%mm6\n\t" " movw %%ax, 320(%%edi)\n\t" -" psrlq $32, %%mm0\n\t" +" shr $16, %%eax\n\t" " pf2id %%mm6, %%mm6\n\t" -" movd %%mm0, %%eax\n\t" +" packssdw %%mm6, %%mm6\n\t" " movd %%mm6, %%ebx\n\t" " movw %%ax, 416(%%edi)\n\t" " movw %%bx, 32(%%esi)\n\t" @@ -870,18 +878,18 @@ void dct64_MMX_3dnow(real *a,real *b,real *c) " pf2id %%mm0, %%mm0\n\t" " pf2id %%mm2, %%mm2\n\t" " pf2id %%mm4, %%mm4\n\t" +" packssdw %%mm0, %%mm0\n\t" +" packssdw %%mm2, %%mm2\n\t" +" packssdw %%mm4, %%mm4\n\t" " movd %%mm0, %%eax\n\t" " movd %%mm2, %%ecx\n\t" " movd %%mm4, %%ebx\n\t" " movw %%ax, 480(%%esi)\n\t" " movw %%cx, 352(%%esi)\n\t" " movw %%bx, 224(%%esi)\n\t" -" psrlq $32, %%mm0\n\t" -" psrlq $32, %%mm2\n\t" -" psrlq $32, %%mm4\n\t" -" movd %%mm0, %%eax\n\t" -" movd %%mm2, %%ecx\n\t" -" movd %%mm4, %%ebx\n\t" +" shrl $16, %%eax\n\t" +" shrl $16, %%ecx\n\t" +" shrl $16, %%ebx\n\t" " movw %%ax, 32(%%edi)\n\t" " movw %%cx, 160(%%edi)\n\t" " movw %%bx, 288(%%edi)\n\t" @@ -891,15 +899,18 @@ void dct64_MMX_3dnow(real *a,real *b,real *c) " pf2id %%mm1, %%mm1\n\t" " pf2id %%mm3, %%mm3\n\t" " pf2id %%mm5, %%mm5\n\t" +" packssdw %%mm1, %%mm1\n\t" +" packssdw %%mm3, %%mm3\n\t" +" packssdw %%mm5, %%mm5\n\t" " movd %%mm1, %%eax\n\t" " movd %%mm3, %%ecx\n\t" " movd %%mm5, %%ebx\n\t" " movw %%ax, 416(%%esi)\n\t" " movw %%cx, 288(%%esi)\n\t" " movw %%bx, 160(%%esi)\n\t" -" psrlq $32, %%mm1\n\t" -" psrlq $32, %%mm3\n\t" -" psrlq $32, %%mm5\n\t" +" shrl $16, %%eax\n\t" +" shrl $16, %%ecx\n\t" +" shrl $16, %%ebx\n\t" " movd %%mm1, %%eax\n\t" " movd %%mm3, %%ecx\n\t" " movd %%mm5, %%ebx\n\t" diff --git a/mp3lib/dct64_k7.c b/mp3lib/dct64_k7.c index 09bb162aab..ea4cc0a282 100644 --- a/mp3lib/dct64_k7.c +++ b/mp3lib/dct64_k7.c @@ -591,7 +591,7 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " pxor %%mm7, %%mm1\n\t" " pfacc %%mm1, %%mm0\n\t" " pfmul %%mm6, %%mm0\n\t" -" pf2id %%mm0, %%mm0\n\t" +" pf2iw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " movw %%ax, 512(%%esi)\n\t" " psrlq $32, %%mm0\n\t" @@ -601,12 +601,12 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " movd 12(%%ecx), %%mm0\n\t" " pfsub 8(%%ecx), %%mm0\n\t" " pfmul 120(%%ebx), %%mm0\n\t" -" pf2id %%mm0, %%mm7\n\t" +" pf2iw %%mm0, %%mm7\n\t" " movd %%mm7, %%eax\n\t" " movw %%ax, 256(%%edi)\n\t" " pfadd 12(%%ecx), %%mm0\n\t" " pfadd 8(%%ecx), %%mm0\n\t" -" pf2id %%mm0, %%mm0\n\t" +" pf2iw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " movw %%ax, 256(%%esi)\n\t" @@ -620,7 +620,7 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " pfmul 120(%%ebx), %%mm2\n\t" " movq %%mm2, %%mm1\n\t" -" pf2id %%mm2, %%mm7\n\t" +" pf2iw %%mm2, %%mm7\n\t" " movd %%mm7, %%eax\n\t" " movw %%ax, 384(%%edi)\n\t" @@ -630,15 +630,15 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " pfadd 16(%%ecx), %%mm0\n\t" " pfadd 20(%%ecx), %%mm0\n\t" -" pf2id %%mm0, %%mm0\n\t" +" pf2iw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " movw %%ax, 384(%%esi)\n\t" " pfadd %%mm3, %%mm1\n\t" -" pf2id %%mm1, %%mm1\n\t" +" pf2iw %%mm1, %%mm1\n\t" " movd %%mm1, %%eax\n\t" " movw %%ax, 128(%%esi)\n\t" " pfadd %%mm3, %%mm2\n\t" -" pf2id %%mm2, %%mm2\n\t" +" pf2iw %%mm2, %%mm2\n\t" " movd %%mm2, %%eax\n\t" " movw %%ax, 128(%%edi)\n\t" @@ -648,8 +648,8 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " movq 48(%%edx), %%mm1\n\t" " pfadd 48(%%edx), %%mm0\n\t" " pfadd 40(%%edx), %%mm1\n\t" -" pf2id %%mm0, %%mm0\n\t" -" pf2id %%mm1, %%mm1\n\t" +" pf2iw %%mm0, %%mm0\n\t" +" pf2iw %%mm1, %%mm1\n\t" " movd %%mm0, %%eax\n\t" " movd %%mm1, %%ecx\n\t" " movw %%ax, 448(%%esi)\n\t" @@ -673,14 +673,14 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " punpckldq 92(%%edx), %%mm2\n\t" " movq %%mm5, %%mm6\n\t" " pfadd %%mm4, %%mm3\n\t" -" pf2id %%mm0, %%mm1\n\t" -" pf2id %%mm3, %%mm3\n\t" +" pf2iw %%mm0, %%mm1\n\t" +" pf2iw %%mm3, %%mm3\n\t" " pfadd 88(%%edx), %%mm5\n\t" " movd %%mm1, %%eax\n\t" " movd %%mm3, %%ecx\n\t" " movw %%ax, 448(%%edi)\n\t" " movw %%cx, 192(%%esi)\n\t" -" pf2id %%mm5, %%mm5\n\t" +" pf2iw %%mm5, %%mm5\n\t" " psrlq $32, %%mm1\n\t" " psrlq $32, %%mm3\n\t" " movd %%mm5, %%ebx\n\t" @@ -690,12 +690,12 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " movw %%ax, 480(%%edi)\n\t" " movw %%cx, 64(%%esi)\n\t" " pfadd %%mm2, %%mm0\n\t" -" pf2id %%mm0, %%mm0\n\t" +" pf2iw %%mm0, %%mm0\n\t" " movd %%mm0, %%eax\n\t" " pfadd 68(%%edx), %%mm6\n\t" " movw %%ax, 320(%%edi)\n\t" " psrlq $32, %%mm0\n\t" -" pf2id %%mm6, %%mm6\n\t" +" pf2iw %%mm6, %%mm6\n\t" " movd %%mm0, %%eax\n\t" " movd %%mm6, %%ebx\n\t" " movw %%ax, 416(%%edi)\n\t" @@ -713,9 +713,9 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " pfadd 64(%%edx), %%mm0\n\t" " pfadd 80(%%edx), %%mm2\n\t" " pfadd 72(%%edx), %%mm4\n\t" -" pf2id %%mm0, %%mm0\n\t" -" pf2id %%mm2, %%mm2\n\t" -" pf2id %%mm4, %%mm4\n\t" +" pf2iw %%mm0, %%mm0\n\t" +" pf2iw %%mm2, %%mm2\n\t" +" pf2iw %%mm4, %%mm4\n\t" " movd %%mm0, %%eax\n\t" " movd %%mm2, %%ecx\n\t" " movd %%mm4, %%ebx\n\t" @@ -734,9 +734,9 @@ void dct64_MMX_3dnowex(real *a,real *b,real *c) " pfadd 80(%%edx), %%mm1\n\t" " pfadd 72(%%edx), %%mm3\n\t" " pfadd 88(%%edx), %%mm5\n\t" -" pf2id %%mm1, %%mm1\n\t" -" pf2id %%mm3, %%mm3\n\t" -" pf2id %%mm5, %%mm5\n\t" +" pf2iw %%mm1, %%mm1\n\t" +" pf2iw %%mm3, %%mm3\n\t" +" pf2iw %%mm5, %%mm5\n\t" " movd %%mm1, %%eax\n\t" " movd %%mm3, %%ecx\n\t" " movd %%mm5, %%ebx\n\t" |