mirror of
https://github.com/mpv-player/mpv
synced 2024-09-09 01:16:56 +02:00
S->C
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4141 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
6f3d8609d6
commit
d54038119b
@ -12,7 +12,7 @@ ifeq ($(TARGET_ARCH_X86),yes)
|
||||
SRCS += d_cpu.s decode_i586.s
|
||||
OBJS += d_cpu.o decode_i586.o
|
||||
ifeq ($(TARGET_MMX),yes)
|
||||
SRCS += decode_MMX.s dct64_MMX.s tabinit_MMX.s
|
||||
SRCS += decode_MMX.c dct64_MMX.s tabinit_MMX.s
|
||||
OBJS += decode_MMX.o dct64_MMX.o tabinit_MMX.o
|
||||
endif
|
||||
#ifeq ($(TARGET_SSE),yes)
|
||||
|
154
mp3lib/tabinit_MMX.c
Normal file
154
mp3lib/tabinit_MMX.c
Normal file
@ -0,0 +1,154 @@
|
||||
/*
|
||||
* This code was taken from http://www.mpg123.org
|
||||
* See ChangeLog of mpg123-0.59s-pre.1 for detail
|
||||
* Applied to mplayer by Nick Kurshev <nickols_k@mail.ru>
|
||||
*/
|
||||
|
||||
long __attribute__((aligned(8))) decwins [544];
|
||||
|
||||
static long decwin [544];
|
||||
static short intwinbase_MMX[] =
|
||||
{
|
||||
0, -1, -1, -1, -1, -1, -1, -2,
|
||||
-2, -2, -2, -3, -3, -4, -4, -5,
|
||||
-5, -6, -7, -7, -8, -9, -10, -11,
|
||||
-13, -14, -16, -17, -19, -21, -24, -26,
|
||||
-29, -31, -35, -38, -41, -45, -49, -53,
|
||||
-58, -63, -68, -73, -79, -85, -91, -97,
|
||||
-104, -111, -117, -125, -132, -139, -147, -154,
|
||||
-161, -169, -176, -183, -190, -196, -202, -208,
|
||||
-213, -218, -222, -225, -227, -228, -228, -227,
|
||||
-224, -221, -215, -208, -200, -189, -177, -163,
|
||||
-146, -127, -106, -83, -57, -29, 2, 36,
|
||||
72, 111, 153, 197, 244, 294, 347, 401,
|
||||
459, 519, 581, 645, 711, 779, 848, 919,
|
||||
991, 1064, 1137, 1210, 1283, 1356, 1428, 1498,
|
||||
1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962,
|
||||
2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063,
|
||||
2037, 2000, 1952, 1893, 1822, 1739, 1644, 1535,
|
||||
1414, 1280, 1131, 970, 794, 605, 402, 185,
|
||||
-45, -288, -545, -814, -1095, -1388, -1692, -2006,
|
||||
-2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788,
|
||||
-5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597,
|
||||
-7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585,
|
||||
-9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750,
|
||||
-9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134,
|
||||
-6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082,
|
||||
-70, 998, 2122, 3300, 4533, 5818, 7154, 8540,
|
||||
9975, 11455, 12980, 14548, 16155, 17799, 19478, 21189,
|
||||
22929, 24694, 26482, 28289, 30112, 31947,-26209,-24360,
|
||||
-22511,-20664,-18824,-16994,-15179,-13383,-11610, -9863,
|
||||
-8147, -6466, -4822, -3222, -1667, -162, 1289, 2684,
|
||||
4019, 5290, 6494, 7629, 8692, 9679, 10590, 11420,
|
||||
12169, 12835, 13415, 13908, 14313, 14630, 14856, 14992,
|
||||
15038
|
||||
};
|
||||
|
||||
static long intwindiv = 0x47800000;
|
||||
|
||||
void make_decode_tables_MMX(long scaleval)
|
||||
{
|
||||
long intwinbase_step = 2;
|
||||
scaleval =- scaleval;
|
||||
__asm __volatile(
|
||||
"xorl %%ecx,%%ecx\n\t"
|
||||
"xorl %%ebx,%%ebx\n\t"
|
||||
"movl $32,%%esi\n\t"
|
||||
"movl %0,%%edi\n\t"
|
||||
".L00:\n\t"
|
||||
"cmpl $528,%%ecx\n\t"
|
||||
"jnc .L02\n\t"
|
||||
"movswl (%%edi),%%eax\n\t"
|
||||
"cmpl %0+444,%%edi\n\t"
|
||||
"jc .L01\n\t"
|
||||
"addl $60000,%%eax\n\t"
|
||||
".L01:\n\t"
|
||||
"pushl %%eax\n\t"
|
||||
"fildl (%%esp)\n\t"
|
||||
"fdivs intwindiv\n\t"
|
||||
"popl %%eax\n\t"
|
||||
"fimull %2\n\t"
|
||||
"fsts %1(,%%ecx,4)\n\t"
|
||||
"fstps %1+64(,%%ecx,4)\n\t"
|
||||
".L02:\n\t"
|
||||
"leal -1(%%esi),%%edx\n\t"
|
||||
"and %%ebx,%%edx\n\t"
|
||||
"cmp $31,%%edx\n\t"
|
||||
"jnz .L03\n\t"
|
||||
"addl $-1023,%%ecx\n\t"
|
||||
"test %%esi,%%ebx\n\t"
|
||||
"jz .L03\n\t"
|
||||
"negl %2\n\t"
|
||||
".L03:\n\t"
|
||||
"addl %%esi,%%ecx\n\t"
|
||||
"addl %3,%%edi\n\t"
|
||||
"incl %%ebx\n\t"
|
||||
"cmpl %0,%%edi\n\t"
|
||||
"jz .L04\n\t"
|
||||
"cmp $256,%%ebx\n\t"
|
||||
"jnz .L00\n\t"
|
||||
"negl %3\n\t"
|
||||
"jmp .L00\n\t"
|
||||
".L04:\n\t"
|
||||
::"g"(intwinbase_MMX),"m"(decwin[0]),"m"(scaleval),"m"(intwinbase_step)
|
||||
:"memory","%ebx","%esi","%edi");
|
||||
|
||||
__asm __volatile(
|
||||
"xorl %%ecx,%%ecx\n\t"
|
||||
"xorl %%ebx,%%ebx\n\t"
|
||||
".L05:\n\t"
|
||||
"cmpl $528,%%ecx\n\t"
|
||||
"jnc .L11\n\t"
|
||||
"movswl (%%edi),%%eax\n\t"
|
||||
"cmpl %0+444,%%edi\n\t"
|
||||
"jc .L06\n\t"
|
||||
"addl $60000,%%eax\n\t"
|
||||
".L06:\n\t"
|
||||
"cltd\n\t"
|
||||
"imull %2\n\t"
|
||||
"shrdl $17,%%edx,%%eax\n\t"
|
||||
"cmpl $32767,%%eax\n\t"
|
||||
"movl $1055,%%edx\n\t"
|
||||
"jle .L07\n\t"
|
||||
"movl $32767,%%eax\n\t"
|
||||
"jmp .L08\n\t"
|
||||
".L07:\n\t"
|
||||
"cmpl $-32767,%%eax\n\t"
|
||||
"jge .L08\n\t"
|
||||
"movl $-32767,%%eax\n\t"
|
||||
".L08:\n\t"
|
||||
"cmpl $512,%%ecx\n\t"
|
||||
"jnc .L09\n\t"
|
||||
"subl %%ecx,%%edx\n\t"
|
||||
"movw %%ax,%1(,%%edx,2)\n\t"
|
||||
"movw %%ax,%1-32(,%%edx,2)\n\t"
|
||||
".L09:\n\t"
|
||||
"testl $1,%%ecx\n\t"
|
||||
"jnz .L10\n\t"
|
||||
"negl %%eax\n\t"
|
||||
".L10:\n\t"
|
||||
"movw %%ax,%1(,%%ecx,2)\n\t"
|
||||
"movw %%ax,%1+32(,%%ecx,2)\n\t"
|
||||
".L11:\n\t"
|
||||
"leal -1(%%esi),%%edx\n\t"
|
||||
"and %%ebx,%%edx\n\t"
|
||||
"cmp $31,%%edx\n\t"
|
||||
"jnz .L12\n\t"
|
||||
"addl $-1023,%%ecx\n\t"
|
||||
"test %%esi,%%ebx\n\t"
|
||||
"jz .L12\n\t"
|
||||
"negl %2\n\t"
|
||||
".L12:\n\t"
|
||||
"addl %%esi,%%ecx\n\t"
|
||||
"addl %3,%%edi\n\t"
|
||||
"incl %%ebx\n\t"
|
||||
"cmpl %0,%%edi\n\t"
|
||||
"jz .L13\n\t"
|
||||
"cmp $256,%%ebx\n\t"
|
||||
"jnz .L05\n\t"
|
||||
"negl %3\n\t"
|
||||
"jmp .L05\n\t"
|
||||
".L13:\n\t"
|
||||
::"g"(intwinbase_MMX),"m"(decwins[0]),"m"(scaleval),"m"(intwinbase_step)
|
||||
:"memory","%ebx","%esi","%edi");
|
||||
}
|
@ -1,161 +0,0 @@
|
||||
# This code was taken from http://www.mpg123.org
|
||||
# See ChangeLog of mpg123-0.59s-pre.1 for detail
|
||||
# Applied to mplayer by Nick Kurshev <nickols_k@mail.ru>
|
||||
.bss
|
||||
.align 8
|
||||
.comm decwin,2176,32
|
||||
.align 8
|
||||
.comm decwins,2176,32
|
||||
.data
|
||||
.align 8
|
||||
intwinbase_MMX:
|
||||
.value 0, -1, -1, -1, -1, -1, -1, -2
|
||||
.value -2, -2, -2, -3, -3, -4, -4, -5
|
||||
.value -5, -6, -7, -7, -8, -9, -10, -11
|
||||
.value -13, -14, -16, -17, -19, -21, -24, -26
|
||||
.value -29, -31, -35, -38, -41, -45, -49, -53
|
||||
.value -58, -63, -68, -73, -79, -85, -91, -97
|
||||
.value -104, -111, -117, -125, -132, -139, -147, -154
|
||||
.value -161, -169, -176, -183, -190, -196, -202, -208
|
||||
.value -213, -218, -222, -225, -227, -228, -228, -227
|
||||
.value -224, -221, -215, -208, -200, -189, -177, -163
|
||||
.value -146, -127, -106, -83, -57, -29, 2, 36
|
||||
.value 72, 111, 153, 197, 244, 294, 347, 401
|
||||
.value 459, 519, 581, 645, 711, 779, 848, 919
|
||||
.value 991, 1064, 1137, 1210, 1283, 1356, 1428, 1498
|
||||
.value 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962
|
||||
.value 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063
|
||||
.value 2037, 2000, 1952, 1893, 1822, 1739, 1644, 1535
|
||||
.value 1414, 1280, 1131, 970, 794, 605, 402, 185
|
||||
.value -45, -288, -545, -814, -1095, -1388, -1692, -2006
|
||||
.value -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788
|
||||
.value -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597
|
||||
.value -7910, -8209, -8491, -8755, -8998, -9219, -9416, -9585
|
||||
.value -9727, -9838, -9916, -9959, -9966, -9935, -9863, -9750
|
||||
.value -9592, -9389, -9139, -8840, -8492, -8092, -7640, -7134
|
||||
.value -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082
|
||||
.value -70, 998, 2122, 3300, 4533, 5818, 7154, 8540
|
||||
.value 9975, 11455, 12980, 14548, 16155, 17799, 19478, 21189
|
||||
.value 22929, 24694, 26482, 28289, 30112, 31947,-26209,-24360
|
||||
.value -22511,-20664,-18824,-16994,-15179,-13383,-11610, -9863
|
||||
.value -8147, -6466, -4822, -3222, -1667, -162, 1289, 2684
|
||||
.value 4019, 5290, 6494, 7629, 8692, 9679, 10590, 11420
|
||||
.value 12169, 12835, 13415, 13908, 14313, 14630, 14856, 14992
|
||||
.value 15038
|
||||
|
||||
intwindiv:
|
||||
.long 0x47800000 # 65536.0
|
||||
.text
|
||||
.align 32
|
||||
.globl make_decode_tables_MMX
|
||||
make_decode_tables_MMX:
|
||||
pushl %edi
|
||||
pushl %esi
|
||||
pushl %ebx
|
||||
|
||||
xorl %ecx,%ecx
|
||||
xorl %ebx,%ebx
|
||||
movl $32,%esi
|
||||
movl $intwinbase_MMX,%edi
|
||||
negl 16(%esp) # scaleval
|
||||
pushl $2 # intwinbase step
|
||||
.L00:
|
||||
cmpl $528,%ecx
|
||||
jnc .L02
|
||||
movswl (%edi),%eax
|
||||
cmpl $intwinbase_MMX+444,%edi
|
||||
jc .L01
|
||||
addl $60000,%eax
|
||||
.L01:
|
||||
pushl %eax
|
||||
fildl (%esp)
|
||||
fdivs intwindiv
|
||||
fimull 24(%esp)
|
||||
popl %eax
|
||||
fsts decwin(,%ecx,4)
|
||||
fstps decwin+64(,%ecx,4)
|
||||
.L02:
|
||||
leal -1(%esi),%edx
|
||||
and %ebx,%edx
|
||||
cmp $31,%edx
|
||||
jnz .L03
|
||||
addl $-1023,%ecx
|
||||
test %esi,%ebx
|
||||
jz .L03
|
||||
negl 20(%esp)
|
||||
.L03:
|
||||
addl %esi,%ecx
|
||||
addl (%esp),%edi
|
||||
incl %ebx
|
||||
cmpl $intwinbase_MMX,%edi
|
||||
jz .L04
|
||||
cmp $256,%ebx
|
||||
jnz .L00
|
||||
negl (%esp)
|
||||
jmp .L00
|
||||
.L04:
|
||||
popl %eax
|
||||
|
||||
xorl %ecx,%ecx
|
||||
xorl %ebx,%ebx
|
||||
pushl $2
|
||||
.L05:
|
||||
cmpl $528,%ecx
|
||||
jnc .L11
|
||||
movswl (%edi),%eax
|
||||
cmpl $intwinbase_MMX+444,%edi
|
||||
jc .L06
|
||||
addl $60000,%eax
|
||||
.L06:
|
||||
cltd
|
||||
imull 20(%esp)
|
||||
shrdl $17,%edx,%eax
|
||||
cmpl $32767,%eax
|
||||
movl $1055,%edx
|
||||
jle .L07
|
||||
movl $32767,%eax
|
||||
jmp .L08
|
||||
.L07:
|
||||
cmpl $-32767,%eax
|
||||
jge .L08
|
||||
movl $-32767,%eax
|
||||
.L08:
|
||||
cmpl $512,%ecx
|
||||
jnc .L09
|
||||
subl %ecx,%edx
|
||||
movw %ax,decwins(,%edx,2)
|
||||
movw %ax,decwins-32(,%edx,2)
|
||||
.L09:
|
||||
testl $1,%ecx
|
||||
jnz .L10
|
||||
negl %eax
|
||||
.L10:
|
||||
movw %ax,decwins(,%ecx,2)
|
||||
movw %ax,decwins+32(,%ecx,2)
|
||||
.L11:
|
||||
leal -1(%esi),%edx
|
||||
and %ebx,%edx
|
||||
cmp $31,%edx
|
||||
jnz .L12
|
||||
addl $-1023,%ecx
|
||||
test %esi,%ebx
|
||||
jz .L12
|
||||
negl 20(%esp)
|
||||
.L12:
|
||||
addl %esi,%ecx
|
||||
addl (%esp),%edi
|
||||
incl %ebx
|
||||
cmpl $intwinbase_MMX,%edi
|
||||
jz .L13
|
||||
cmp $256,%ebx
|
||||
jnz .L05
|
||||
negl (%esp)
|
||||
jmp .L05
|
||||
.L13:
|
||||
popl %eax
|
||||
|
||||
popl %ebx
|
||||
popl %esi
|
||||
popl %edi
|
||||
ret
|
||||
|
Loading…
Reference in New Issue
Block a user