📄 dct64_mmx.c
字号:
/*
* 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>
*/
#include "../mangle.h"
#define real float /* ugly - but only way */
void dct64_MMX(short *a,short *b,real *c)
{
char tmp[256];
__asm __volatile(
" movl %2,%%eax\n\t"
/* Phase 1*/
" flds (%%eax)\n\t"
" leal 128+%3,%%edx\n\t"
" fadds 124(%%eax)\n\t"
" movl %0,%%esi\n\t"
" fstps (%%edx)\n\t"
" movl %1,%%edi\n\t"
" flds 4(%%eax)\n\t"
" movl $"MANGLE(costab_mmx)",%%ebx\n\t"
" fadds 120(%%eax)\n\t"
" orl %%ecx,%%ecx\n\t"
" fstps 4(%%edx)\n\t"
" flds (%%eax)\n\t"
" leal %3,%%ecx\n\t"
" fsubs 124(%%eax)\n\t"
" fmuls (%%ebx)\n\t"
" fstps 124(%%edx)\n\t"
" flds 4(%%eax)\n\t"
" fsubs 120(%%eax)\n\t"
" fmuls 4(%%ebx)\n\t"
" fstps 120(%%edx)\n\t"
" flds 8(%%eax)\n\t"
" fadds 116(%%eax)\n\t"
" fstps 8(%%edx)\n\t"
" flds 12(%%eax)\n\t"
" fadds 112(%%eax)\n\t"
" fstps 12(%%edx)\n\t"
" flds 8(%%eax)\n\t"
" fsubs 116(%%eax)\n\t"
" fmuls 8(%%ebx)\n\t"
" fstps 116(%%edx)\n\t"
" flds 12(%%eax)\n\t"
" fsubs 112(%%eax)\n\t"
" fmuls 12(%%ebx)\n\t"
" fstps 112(%%edx)\n\t"
" flds 16(%%eax)\n\t"
" fadds 108(%%eax)\n\t"
" fstps 16(%%edx)\n\t"
" flds 20(%%eax)\n\t"
" fadds 104(%%eax)\n\t"
" fstps 20(%%edx)\n\t"
" flds 16(%%eax)\n\t"
" fsubs 108(%%eax)\n\t"
" fmuls 16(%%ebx)\n\t"
" fstps 108(%%edx)\n\t"
" flds 20(%%eax)\n\t"
" fsubs 104(%%eax)\n\t"
" fmuls 20(%%ebx)\n\t"
" fstps 104(%%edx)\n\t"
" flds 24(%%eax)\n\t"
" fadds 100(%%eax)\n\t"
" fstps 24(%%edx)\n\t"
" flds 28(%%eax)\n\t"
" fadds 96(%%eax)\n\t"
" fstps 28(%%edx)\n\t"
" flds 24(%%eax)\n\t"
" fsubs 100(%%eax)\n\t"
" fmuls 24(%%ebx)\n\t"
" fstps 100(%%edx)\n\t"
" flds 28(%%eax)\n\t"
" fsubs 96(%%eax)\n\t"
" fmuls 28(%%ebx)\n\t"
" fstps 96(%%edx)\n\t"
" flds 32(%%eax)\n\t"
" fadds 92(%%eax)\n\t"
" fstps 32(%%edx)\n\t"
" flds 36(%%eax)\n\t"
" fadds 88(%%eax)\n\t"
" fstps 36(%%edx)\n\t"
" flds 32(%%eax)\n\t"
" fsubs 92(%%eax)\n\t"
" fmuls 32(%%ebx)\n\t"
" fstps 92(%%edx)\n\t"
" flds 36(%%eax)\n\t"
" fsubs 88(%%eax)\n\t"
" fmuls 36(%%ebx)\n\t"
" fstps 88(%%edx)\n\t"
" flds 40(%%eax)\n\t"
" fadds 84(%%eax)\n\t"
" fstps 40(%%edx)\n\t"
" flds 44(%%eax)\n\t"
" fadds 80(%%eax)\n\t"
" fstps 44(%%edx)\n\t"
" flds 40(%%eax)\n\t"
" fsubs 84(%%eax)\n\t"
" fmuls 40(%%ebx)\n\t"
" fstps 84(%%edx)\n\t"
" flds 44(%%eax)\n\t"
" fsubs 80(%%eax)\n\t"
" fmuls 44(%%ebx)\n\t"
" fstps 80(%%edx)\n\t"
" flds 48(%%eax)\n\t"
" fadds 76(%%eax)\n\t"
" fstps 48(%%edx)\n\t"
" flds 52(%%eax)\n\t"
" fadds 72(%%eax)\n\t"
" fstps 52(%%edx)\n\t"
" flds 48(%%eax)\n\t"
" fsubs 76(%%eax)\n\t"
" fmuls 48(%%ebx)\n\t"
" fstps 76(%%edx)\n\t"
" flds 52(%%eax)\n\t"
" fsubs 72(%%eax)\n\t"
" fmuls 52(%%ebx)\n\t"
" fstps 72(%%edx)\n\t"
" flds 56(%%eax)\n\t"
" fadds 68(%%eax)\n\t"
" fstps 56(%%edx)\n\t"
" flds 60(%%eax)\n\t"
" fadds 64(%%eax)\n\t"
" fstps 60(%%edx)\n\t"
" flds 56(%%eax)\n\t"
" fsubs 68(%%eax)\n\t"
" fmuls 56(%%ebx)\n\t"
" fstps 68(%%edx)\n\t"
" flds 60(%%eax)\n\t"
" fsubs 64(%%eax)\n\t"
" fmuls 60(%%ebx)\n\t"
" fstps 64(%%edx)\n\t"
/* Phase 2*/
" flds (%%edx)\n\t"
" fadds 60(%%edx)\n\t"
" fstps (%%ecx)\n\t"
" flds 4(%%edx)\n\t"
" fadds 56(%%edx)\n\t"
" fstps 4(%%ecx)\n\t"
" flds (%%edx)\n\t"
" fsubs 60(%%edx)\n\t"
" fmuls 64(%%ebx)\n\t"
" fstps 60(%%ecx)\n\t"
" flds 4(%%edx)\n\t"
" fsubs 56(%%edx)\n\t"
" fmuls 68(%%ebx)\n\t"
" fstps 56(%%ecx)\n\t"
" flds 8(%%edx)\n\t"
" fadds 52(%%edx)\n\t"
" fstps 8(%%ecx)\n\t"
" flds 12(%%edx)\n\t"
" fadds 48(%%edx)\n\t"
" fstps 12(%%ecx)\n\t"
" flds 8(%%edx)\n\t"
" fsubs 52(%%edx)\n\t"
" fmuls 72(%%ebx)\n\t"
" fstps 52(%%ecx)\n\t"
" flds 12(%%edx)\n\t"
" fsubs 48(%%edx)\n\t"
" fmuls 76(%%ebx)\n\t"
" fstps 48(%%ecx)\n\t"
" flds 16(%%edx)\n\t"
" fadds 44(%%edx)\n\t"
" fstps 16(%%ecx)\n\t"
" flds 20(%%edx)\n\t"
" fadds 40(%%edx)\n\t"
" fstps 20(%%ecx)\n\t"
" flds 16(%%edx)\n\t"
" fsubs 44(%%edx)\n\t"
" fmuls 80(%%ebx)\n\t"
" fstps 44(%%ecx)\n\t"
" flds 20(%%edx)\n\t"
" fsubs 40(%%edx)\n\t"
" fmuls 84(%%ebx)\n\t"
" fstps 40(%%ecx)\n\t"
" flds 24(%%edx)\n\t"
" fadds 36(%%edx)\n\t"
" fstps 24(%%ecx)\n\t"
" flds 28(%%edx)\n\t"
" fadds 32(%%edx)\n\t"
" fstps 28(%%ecx)\n\t"
" flds 24(%%edx)\n\t"
" fsubs 36(%%edx)\n\t"
" fmuls 88(%%ebx)\n\t"
" fstps 36(%%ecx)\n\t"
" flds 28(%%edx)\n\t"
" fsubs 32(%%edx)\n\t"
" fmuls 92(%%ebx)\n\t"
" fstps 32(%%ecx)\n\t"
/* Phase 3*/
" flds 64(%%edx)\n\t"
" fadds 124(%%edx)\n\t"
" fstps 64(%%ecx)\n\t"
" flds 68(%%edx)\n\t"
" fadds 120(%%edx)\n\t"
" fstps 68(%%ecx)\n\t"
" flds 124(%%edx)\n\t"
" fsubs 64(%%edx)\n\t"
" fmuls 64(%%ebx)\n\t"
" fstps 124(%%ecx)\n\t"
" flds 120(%%edx)\n\t"
" fsubs 68(%%edx)\n\t"
" fmuls 68(%%ebx)\n\t"
" fstps 120(%%ecx)\n\t"
" flds 72(%%edx)\n\t"
" fadds 116(%%edx)\n\t"
" fstps 72(%%ecx)\n\t"
" flds 76(%%edx)\n\t"
" fadds 112(%%edx)\n\t"
" fstps 76(%%ecx)\n\t"
" flds 116(%%edx)\n\t"
" fsubs 72(%%edx)\n\t"
" fmuls 72(%%ebx)\n\t"
" fstps 116(%%ecx)\n\t"
" flds 112(%%edx)\n\t"
" fsubs 76(%%edx)\n\t"
" fmuls 76(%%ebx)\n\t"
" fstps 112(%%ecx)\n\t"
" flds 80(%%edx)\n\t"
" fadds 108(%%edx)\n\t"
" fstps 80(%%ecx)\n\t"
" flds 84(%%edx)\n\t"
" fadds 104(%%edx)\n\t"
" fstps 84(%%ecx)\n\t"
" flds 108(%%edx)\n\t"
" fsubs 80(%%edx)\n\t"
" fmuls 80(%%ebx)\n\t"
" fstps 108(%%ecx)\n\t"
" flds 104(%%edx)\n\t"
" fsubs 84(%%edx)\n\t"
" fmuls 84(%%ebx)\n\t"
" fstps 104(%%ecx)\n\t"
" flds 88(%%edx)\n\t"
" fadds 100(%%edx)\n\t"
" fstps 88(%%ecx)\n\t"
" flds 92(%%edx)\n\t"
" fadds 96(%%edx)\n\t"
" fstps 92(%%ecx)\n\t"
" flds 100(%%edx)\n\t"
" fsubs 88(%%edx)\n\t"
" fmuls 88(%%ebx)\n\t"
" fstps 100(%%ecx)\n\t"
" flds 96(%%edx)\n\t"
" fsubs 92(%%edx)\n\t"
" fmuls 92(%%ebx)\n\t"
" fstps 96(%%ecx)\n\t"
/* Phase 4*/
" flds (%%ecx)\n\t"
" fadds 28(%%ecx)\n\t"
" fstps (%%edx)\n\t"
" flds (%%ecx)\n\t"
" fsubs 28(%%ecx)\n\t"
" fmuls 96(%%ebx)\n\t"
" fstps 28(%%edx)\n\t"
" flds 4(%%ecx)\n\t"
" fadds 24(%%ecx)\n\t"
" fstps 4(%%edx)\n\t"
" flds 4(%%ecx)\n\t"
" fsubs 24(%%ecx)\n\t"
" fmuls 100(%%ebx)\n\t"
" fstps 24(%%edx)\n\t"
" flds 8(%%ecx)\n\t"
" fadds 20(%%ecx)\n\t"
" fstps 8(%%edx)\n\t"
" flds 8(%%ecx)\n\t"
" fsubs 20(%%ecx)\n\t"
" fmuls 104(%%ebx)\n\t"
" fstps 20(%%edx)\n\t"
" flds 12(%%ecx)\n\t"
" fadds 16(%%ecx)\n\t"
" fstps 12(%%edx)\n\t"
" flds 12(%%ecx)\n\t"
" fsubs 16(%%ecx)\n\t"
" fmuls 108(%%ebx)\n\t"
" fstps 16(%%edx)\n\t"
" flds 32(%%ecx)\n\t"
" fadds 60(%%ecx)\n\t"
" fstps 32(%%edx)\n\t"
" flds 60(%%ecx)\n\t"
" fsubs 32(%%ecx)\n\t"
" fmuls 96(%%ebx)\n\t"
" fstps 60(%%edx)\n\t"
" flds 36(%%ecx)\n\t"
" fadds 56(%%ecx)\n\t"
" fstps 36(%%edx)\n\t"
" flds 56(%%ecx)\n\t"
" fsubs 36(%%ecx)\n\t"
" fmuls 100(%%ebx)\n\t"
" fstps 56(%%edx)\n\t"
" flds 40(%%ecx)\n\t"
" fadds 52(%%ecx)\n\t"
" fstps 40(%%edx)\n\t"
" flds 52(%%ecx)\n\t"
" fsubs 40(%%ecx)\n\t"
" fmuls 104(%%ebx)\n\t"
" fstps 52(%%edx)\n\t"
" flds 44(%%ecx)\n\t"
" fadds 48(%%ecx)\n\t"
" fstps 44(%%edx)\n\t"
" flds 48(%%ecx)\n\t"
" fsubs 44(%%ecx)\n\t"
" fmuls 108(%%ebx)\n\t"
" fstps 48(%%edx)\n\t"
" flds 64(%%ecx)\n\t"
" fadds 92(%%ecx)\n\t"
" fstps 64(%%edx)\n\t"
" flds 64(%%ecx)\n\t"
" fsubs 92(%%ecx)\n\t"
" fmuls 96(%%ebx)\n\t"
" fstps 92(%%edx)\n\t"
" flds 68(%%ecx)\n\t"
" fadds 88(%%ecx)\n\t"
" fstps 68(%%edx)\n\t"
" flds 68(%%ecx)\n\t"
" fsubs 88(%%ecx)\n\t"
" fmuls 100(%%ebx)\n\t"
" fstps 88(%%edx)\n\t"
" flds 72(%%ecx)\n\t"
" fadds 84(%%ecx)\n\t"
" fstps 72(%%edx)\n\t"
" flds 72(%%ecx)\n\t"
" fsubs 84(%%ecx)\n\t"
" fmuls 104(%%ebx)\n\t"
" fstps 84(%%edx)\n\t"
" flds 76(%%ecx)\n\t"
" fadds 80(%%ecx)\n\t"
" fstps 76(%%edx)\n\t"
" flds 76(%%ecx)\n\t"
" fsubs 80(%%ecx)\n\t"
" fmuls 108(%%ebx)\n\t"
" fstps 80(%%edx)\n\t"
" flds 96(%%ecx)\n\t"
" fadds 124(%%ecx)\n\t"
" fstps 96(%%edx)\n\t"
" flds 124(%%ecx)\n\t"
" fsubs 96(%%ecx)\n\t"
" fmuls 96(%%ebx)\n\t"
" fstps 124(%%edx)\n\t"
" flds 100(%%ecx)\n\t"
" fadds 120(%%ecx)\n\t"
" fstps 100(%%edx)\n\t"
" flds 120(%%ecx)\n\t"
" fsubs 100(%%ecx)\n\t"
" fmuls 100(%%ebx)\n\t"
" fstps 120(%%edx)\n\t"
" flds 104(%%ecx)\n\t"
" fadds 116(%%ecx)\n\t"
" fstps 104(%%edx)\n\t"
" flds 116(%%ecx)\n\t"
" fsubs 104(%%ecx)\n\t"
" fmuls 104(%%ebx)\n\t"
" fstps 116(%%edx)\n\t"
" flds 108(%%ecx)\n\t"
" fadds 112(%%ecx)\n\t"
" fstps 108(%%edx)\n\t"
" flds 112(%%ecx)\n\t"
" fsubs 108(%%ecx)\n\t"
" fmuls 108(%%ebx)\n\t"
" fstps 112(%%edx)\n\t"
" flds (%%edx)\n\t"
" fadds 12(%%edx)\n\t"
" fstps (%%ecx)\n\t"
" flds (%%edx)\n\t"
" fsubs 12(%%edx)\n\t"
" fmuls 112(%%ebx)\n\t"
" fstps 12(%%ecx)\n\t"
" flds 4(%%edx)\n\t"
" fadds 8(%%edx)\n\t"
" fstps 4(%%ecx)\n\t"
" flds 4(%%edx)\n\t"
" fsubs 8(%%edx)\n\t"
" fmuls 116(%%ebx)\n\t"
" fstps 8(%%ecx)\n\t"
" flds 16(%%edx)\n\t"
" fadds 28(%%edx)\n\t"
" fstps 16(%%ecx)\n\t"
" flds 28(%%edx)\n\t"
" fsubs 16(%%edx)\n\t"
" fmuls 112(%%ebx)\n\t"
" fstps 28(%%ecx)\n\t"
" flds 20(%%edx)\n\t"
" fadds 24(%%edx)\n\t"
" fstps 20(%%ecx)\n\t"
" flds 24(%%edx)\n\t"
" fsubs 20(%%edx)\n\t"
" fmuls 116(%%ebx)\n\t"
" fstps 24(%%ecx)\n\t"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -