Mercurial > libavcodec.hg
comparison i386/idct_mmx.c @ 2747:6eded34ab57b libavcodec
10l (symbol mangling)
author | lorenm |
---|---|
date | Wed, 01 Jun 2005 04:51:46 +0000 |
parents | d04ce91101cf |
children | 135aa7d0bd17 |
comparison
equal
deleted
inserted
replaced
2746:d04ce91101cf | 2747:6eded34ab57b |
---|---|
637 SBUTTERFLY( a, b, t, wd ) /* a=aebf t=cgdh */\ | 637 SBUTTERFLY( a, b, t, wd ) /* a=aebf t=cgdh */\ |
638 SBUTTERFLY( c, d, b, wd ) /* c=imjn b=kolp */\ | 638 SBUTTERFLY( c, d, b, wd ) /* c=imjn b=kolp */\ |
639 SBUTTERFLY( a, c, d, dq ) /* a=aeim d=bfjn */\ | 639 SBUTTERFLY( a, c, d, dq ) /* a=aeim d=bfjn */\ |
640 SBUTTERFLY( t, b, c, dq ) /* t=cgko c=dhlp */ | 640 SBUTTERFLY( t, b, c, dq ) /* t=cgko c=dhlp */ |
641 | 641 |
642 #define STORE_DIFF_4P( p, t, pw32, z, dst ) \ | 642 #define STORE_DIFF_4P( p, t, z, dst ) \ |
643 asm volatile(\ | 643 asm volatile(\ |
644 "psraw $6, "#p" \n\t"\ | 644 "psraw $6, "#p" \n\t"\ |
645 "movd (%0), "#t" \n\t"\ | 645 "movd (%0), "#t" \n\t"\ |
646 "punpcklbw "#z", "#t" \n\t"\ | 646 "punpcklbw "#z", "#t" \n\t"\ |
647 "paddsw "#t", "#p" \n\t"\ | 647 "paddsw "#t", "#p" \n\t"\ |
662 | 662 |
663 asm volatile( | 663 asm volatile( |
664 /* mm1=s02+s13 mm2=s02-s13 mm4=d02+d13 mm0=d02-d13 */ | 664 /* mm1=s02+s13 mm2=s02-s13 mm4=d02+d13 mm0=d02-d13 */ |
665 IDCT4_1D( %%mm2, %%mm1, %%mm0, %%mm3, %%mm4, %%mm5 ) | 665 IDCT4_1D( %%mm2, %%mm1, %%mm0, %%mm3, %%mm4, %%mm5 ) |
666 | 666 |
667 "movq ff_pw_32, %%mm6 \n\t" | 667 "movq %0, %%mm6 \n\t" |
668 /* in: 1,4,0,2 out: 1,2,3,0 */ | 668 /* in: 1,4,0,2 out: 1,2,3,0 */ |
669 TRANSPOSE4( %%mm1, %%mm4, %%mm0, %%mm2, %%mm3 ) | 669 TRANSPOSE4( %%mm1, %%mm4, %%mm0, %%mm2, %%mm3 ) |
670 | 670 |
671 "paddw %%mm6, %%mm1 \n\t" | 671 "paddw %%mm6, %%mm1 \n\t" |
672 | 672 |
675 | 675 |
676 /* in: 2,4,1,3 out: 2,3,0,1 */ | 676 /* in: 2,4,1,3 out: 2,3,0,1 */ |
677 TRANSPOSE4( %%mm2, %%mm4, %%mm1, %%mm3, %%mm0 ) | 677 TRANSPOSE4( %%mm2, %%mm4, %%mm1, %%mm3, %%mm0 ) |
678 | 678 |
679 "pxor %%mm7, %%mm7 \n\t" | 679 "pxor %%mm7, %%mm7 \n\t" |
680 :: ); | 680 :: "m"(ff_pw_32)); |
681 | 681 |
682 STORE_DIFF_4P( %%mm2, %%mm4, %%mm6, %%mm7, &dst[0*stride] ); | 682 STORE_DIFF_4P( %%mm2, %%mm4, %%mm7, &dst[0*stride] ); |
683 STORE_DIFF_4P( %%mm3, %%mm4, %%mm6, %%mm7, &dst[1*stride] ); | 683 STORE_DIFF_4P( %%mm3, %%mm4, %%mm7, &dst[1*stride] ); |
684 STORE_DIFF_4P( %%mm0, %%mm4, %%mm6, %%mm7, &dst[2*stride] ); | 684 STORE_DIFF_4P( %%mm0, %%mm4, %%mm7, &dst[2*stride] ); |
685 STORE_DIFF_4P( %%mm1, %%mm4, %%mm6, %%mm7, &dst[3*stride] ); | 685 STORE_DIFF_4P( %%mm1, %%mm4, %%mm7, &dst[3*stride] ); |
686 } | 686 } |