Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 104966 | Differences between
and this patch

Collapse All | Expand All

(-)xine-lib-1.1.0.orig/src/libffmpeg/libavcodec/i386/dsputil_mmx.c (-8 / +12 lines)
Lines 616-630 static void h263_v_loop_filter_mmx(uint8 Link Here
616
616
617
static inline void transpose4x4(uint8_t *dst, uint8_t *src, int dst_stride, int src_stride){
617
static inline void transpose4x4(uint8_t *dst, uint8_t *src, int dst_stride, int src_stride){
618
    asm volatile( //FIXME could save 1 instruction if done as 8x4 ...
618
    asm volatile( //FIXME could save 1 instruction if done as 8x4 ...
619
        "movd  %4, %%mm0		\n\t"
619
        "movd  %0, %%mm0		\n\t"
620
        "movd  %5, %%mm1		\n\t"
620
        "movd  %1, %%mm1		\n\t"
621
        "movd  %6, %%mm2		\n\t"
621
        "movd  %2, %%mm2		\n\t"
622
        "movd  %7, %%mm3		\n\t"
622
        "movd  %3, %%mm3		\n\t"
623
        "punpcklbw %%mm1, %%mm0		\n\t"
623
        "punpcklbw %%mm1, %%mm0		\n\t"
624
        "punpcklbw %%mm3, %%mm2		\n\t"
624
        "punpcklbw %%mm3, %%mm2		\n\t"
625
        "movq %%mm0, %%mm1		\n\t"
625
        "movq %%mm0, %%mm1		\n\t"
626
        "punpcklwd %%mm2, %%mm0		\n\t"
626
        "punpcklwd %%mm2, %%mm0		\n\t"
627
        "punpckhwd %%mm2, %%mm1		\n\t"
627
        "punpckhwd %%mm2, %%mm1		\n\t"
628
        :
629
        :  "m" (*(uint32_t*)(src + 0*src_stride)),
630
           "m" (*(uint32_t*)(src + 1*src_stride)),
631
           "m" (*(uint32_t*)(src + 2*src_stride)),
632
           "m" (*(uint32_t*)(src + 3*src_stride))
633
    );
634
    asm volatile(
628
        "movd  %%mm0, %0		\n\t"
635
        "movd  %%mm0, %0		\n\t"
629
        "punpckhdq %%mm0, %%mm0		\n\t"
636
        "punpckhdq %%mm0, %%mm0		\n\t"
630
        "movd  %%mm0, %1		\n\t"
637
        "movd  %%mm0, %1		\n\t"
Lines 636-645 static inline void transpose4x4(uint8_t Link Here
636
          "=m" (*(uint32_t*)(dst + 1*dst_stride)),
643
          "=m" (*(uint32_t*)(dst + 1*dst_stride)),
637
          "=m" (*(uint32_t*)(dst + 2*dst_stride)),
644
          "=m" (*(uint32_t*)(dst + 2*dst_stride)),
638
          "=m" (*(uint32_t*)(dst + 3*dst_stride))
645
          "=m" (*(uint32_t*)(dst + 3*dst_stride))
639
        :  "m" (*(uint32_t*)(src + 0*src_stride)),
646
        :
640
           "m" (*(uint32_t*)(src + 1*src_stride)),
641
           "m" (*(uint32_t*)(src + 2*src_stride)),
642
           "m" (*(uint32_t*)(src + 3*src_stride))
643
    );
647
    );
644
}
648
}
645
649

Return to bug 104966