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 }