mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
tweak mmx2 sad.
6% faster on core2 and k8, no change on p4. Originally committed as revision 8984 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b3a257af27
commit
eca3810e31
@ -75,13 +75,11 @@ static inline void sad8_1_mmx2(uint8_t *blk1, uint8_t *blk2, int stride, int h)
|
||||
ASMALIGN(4)
|
||||
"1: \n\t"
|
||||
"movq (%1, %%"REG_a"), %%mm0 \n\t"
|
||||
"movq (%2, %%"REG_a"), %%mm2 \n\t"
|
||||
"psadbw %%mm2, %%mm0 \n\t"
|
||||
"psadbw (%2, %%"REG_a"), %%mm0 \n\t"
|
||||
"add %3, %%"REG_a" \n\t"
|
||||
"movq (%1, %%"REG_a"), %%mm1 \n\t"
|
||||
"movq (%2, %%"REG_a"), %%mm3 \n\t"
|
||||
"psadbw %%mm1, %%mm3 \n\t"
|
||||
"paddw %%mm3, %%mm0 \n\t"
|
||||
"psadbw (%2, %%"REG_a"), %%mm1 \n\t"
|
||||
"paddw %%mm1, %%mm0 \n\t"
|
||||
"paddw %%mm0, %%mm6 \n\t"
|
||||
"add %3, %%"REG_a" \n\t"
|
||||
" js 1b \n\t"
|
||||
@ -97,17 +95,13 @@ static inline void sad8_2_mmx2(uint8_t *blk1a, uint8_t *blk1b, uint8_t *blk2, in
|
||||
ASMALIGN(4)
|
||||
"1: \n\t"
|
||||
"movq (%1, %%"REG_a"), %%mm0 \n\t"
|
||||
"movq (%2, %%"REG_a"), %%mm2 \n\t"
|
||||
"pavgb %%mm2, %%mm0 \n\t"
|
||||
"movq (%3, %%"REG_a"), %%mm2 \n\t"
|
||||
"psadbw %%mm2, %%mm0 \n\t"
|
||||
"pavgb (%2, %%"REG_a"), %%mm0 \n\t"
|
||||
"psadbw (%3, %%"REG_a"), %%mm0 \n\t"
|
||||
"add %4, %%"REG_a" \n\t"
|
||||
"movq (%1, %%"REG_a"), %%mm1 \n\t"
|
||||
"movq (%2, %%"REG_a"), %%mm3 \n\t"
|
||||
"pavgb %%mm1, %%mm3 \n\t"
|
||||
"movq (%3, %%"REG_a"), %%mm1 \n\t"
|
||||
"psadbw %%mm1, %%mm3 \n\t"
|
||||
"paddw %%mm3, %%mm0 \n\t"
|
||||
"pavgb (%2, %%"REG_a"), %%mm1 \n\t"
|
||||
"psadbw (%3, %%"REG_a"), %%mm1 \n\t"
|
||||
"paddw %%mm1, %%mm0 \n\t"
|
||||
"paddw %%mm0, %%mm6 \n\t"
|
||||
"add %4, %%"REG_a" \n\t"
|
||||
" js 1b \n\t"
|
||||
@ -120,30 +114,24 @@ static inline void sad8_4_mmx2(uint8_t *blk1, uint8_t *blk2, int stride, int h)
|
||||
{ //FIXME reuse src
|
||||
long len= -(stride*h);
|
||||
asm volatile(
|
||||
ASMALIGN(4)
|
||||
"movq "MANGLE(bone)", %%mm5 \n\t"
|
||||
ASMALIGN(4)
|
||||
"1: \n\t"
|
||||
"movq (%1, %%"REG_a"), %%mm0 \n\t"
|
||||
"movq (%2, %%"REG_a"), %%mm2 \n\t"
|
||||
"movq 1(%1, %%"REG_a"), %%mm1 \n\t"
|
||||
"movq 1(%2, %%"REG_a"), %%mm3 \n\t"
|
||||
"pavgb %%mm2, %%mm0 \n\t"
|
||||
"pavgb %%mm1, %%mm3 \n\t"
|
||||
"psubusb %%mm5, %%mm3 \n\t"
|
||||
"pavgb %%mm3, %%mm0 \n\t"
|
||||
"movq (%3, %%"REG_a"), %%mm2 \n\t"
|
||||
"psadbw %%mm2, %%mm0 \n\t"
|
||||
"pavgb (%2, %%"REG_a"), %%mm0 \n\t"
|
||||
"pavgb 1(%2, %%"REG_a"), %%mm1 \n\t"
|
||||
"psubusb %%mm5, %%mm1 \n\t"
|
||||
"pavgb %%mm1, %%mm0 \n\t"
|
||||
"psadbw (%3, %%"REG_a"), %%mm0 \n\t"
|
||||
"add %4, %%"REG_a" \n\t"
|
||||
"movq (%1, %%"REG_a"), %%mm1 \n\t"
|
||||
"movq (%2, %%"REG_a"), %%mm3 \n\t"
|
||||
"movq 1(%1, %%"REG_a"), %%mm2 \n\t"
|
||||
"movq 1(%2, %%"REG_a"), %%mm4 \n\t"
|
||||
"pavgb %%mm3, %%mm1 \n\t"
|
||||
"pavgb %%mm4, %%mm2 \n\t"
|
||||
"psubusb %%mm5, %%mm2 \n\t"
|
||||
"pavgb %%mm1, %%mm2 \n\t"
|
||||
"movq (%3, %%"REG_a"), %%mm1 \n\t"
|
||||
"psadbw %%mm1, %%mm2 \n\t"
|
||||
"movq (%1, %%"REG_a"), %%mm2 \n\t"
|
||||
"movq 1(%1, %%"REG_a"), %%mm3 \n\t"
|
||||
"pavgb (%2, %%"REG_a"), %%mm2 \n\t"
|
||||
"pavgb 1(%2, %%"REG_a"), %%mm3 \n\t"
|
||||
"psubusb %%mm5, %%mm3 \n\t"
|
||||
"pavgb %%mm3, %%mm2 \n\t"
|
||||
"psadbw (%3, %%"REG_a"), %%mm2 \n\t"
|
||||
"paddw %%mm2, %%mm0 \n\t"
|
||||
"paddw %%mm0, %%mm6 \n\t"
|
||||
"add %4, %%"REG_a" \n\t"
|
||||
|
Loading…
Reference in New Issue
Block a user