mirror of https://github.com/mpv-player/mpv
1000l, mmx code was not being used because of missing config.h, and
the mmx code was broken too! :( git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10742 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
1c39b3fa05
commit
94b4a47fa4
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "pullup.h"
|
#include "pullup.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
static int diff_y_mmx(unsigned char *a, unsigned char *b, int s)
|
static int diff_y_mmx(unsigned char *a, unsigned char *b, int s)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
asm (
|
asm volatile (
|
||||||
"movl $4, %%ecx \n\t"
|
"movl $4, %%ecx \n\t"
|
||||||
"pxor %%mm4, %%mm4 \n\t"
|
"pxor %%mm4, %%mm4 \n\t"
|
||||||
"pxor %%mm7, %%mm7 \n\t"
|
"pxor %%mm7, %%mm7 \n\t"
|
||||||
|
@ -37,22 +37,20 @@ static int diff_y_mmx(unsigned char *a, unsigned char *b, int s)
|
||||||
"paddw %%mm3, %%mm4 \n\t"
|
"paddw %%mm3, %%mm4 \n\t"
|
||||||
|
|
||||||
"decl %%ecx \n\t"
|
"decl %%ecx \n\t"
|
||||||
"jnz fb \n\t"
|
"jnz 1b \n\t"
|
||||||
|
|
||||||
"movq %%mm4, %%mm3 \n\t"
|
"movq %%mm4, %%mm3 \n\t"
|
||||||
"punpcklwl %%mm7, %%mm4 \n\t"
|
"punpcklwd %%mm7, %%mm4 \n\t"
|
||||||
"punpckhwl %%mm7, %%mm3 \n\t"
|
"punpckhwd %%mm7, %%mm3 \n\t"
|
||||||
"paddl %%mm4, %%mm3 \n\t"
|
"paddd %%mm4, %%mm3 \n\t"
|
||||||
"movq %%mm3, %%mm2 \n\t"
|
"movd %%mm3, %%eax \n\t"
|
||||||
"punpckllq %%mm7, %%mm3 \n\t"
|
"psrlq $32, %%mm3 \n\t"
|
||||||
"punpckhlq %%mm7, %%mm2 \n\t"
|
"movd %%mm3, %%ebx \n\t"
|
||||||
"paddl %%mm3, %%mm2 \n\t"
|
"addl %%ebx, %%eax \n\t"
|
||||||
"movl %%mm2, %eax"
|
|
||||||
|
|
||||||
"emms \n\t"
|
"emms \n\t"
|
||||||
: "=a" (ret)
|
: "=a" (ret)
|
||||||
: "S" (a), "D" (b), "a" (s)
|
: "S" (a), "D" (b), "a" (s)
|
||||||
:
|
|
||||||
);
|
);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue