Mercurial > mplayer.hg
comparison postproc/rgb2rgb_template.c @ 2800:7847d6b7ad3d
.balign or weĦll align by 64kb on some architectures
author | michael |
---|---|
date | Sat, 10 Nov 2001 20:39:23 +0000 |
parents | 0d7fd1655a89 |
children | 318c240363c7 |
comparison
equal
deleted
inserted
replaced
2799:0d7fd1655a89 | 2800:7847d6b7ad3d |
---|---|
583 { | 583 { |
584 int num_pixels= src_size >> 2; | 584 int num_pixels= src_size >> 2; |
585 #ifdef HAVE_MMX | 585 #ifdef HAVE_MMX |
586 asm volatile ( | 586 asm volatile ( |
587 "xorl %%eax, %%eax \n\t" | 587 "xorl %%eax, %%eax \n\t" |
588 ".align 16 \n\t" | 588 ".balign 16 \n\t" |
589 "1: \n\t" | 589 "1: \n\t" |
590 PREFETCH" 32(%0, %%eax) \n\t" | 590 PREFETCH" 32(%0, %%eax) \n\t" |
591 "movq (%0, %%eax), %%mm0 \n\t" | 591 "movq (%0, %%eax), %%mm0 \n\t" |
592 "movq %%mm0, %%mm1 \n\t" | 592 "movq %%mm0, %%mm1 \n\t" |
593 "movq %%mm0, %%mm2 \n\t" | 593 "movq %%mm0, %%mm2 \n\t" |
634 { | 634 { |
635 #ifdef HAVE_MMX | 635 #ifdef HAVE_MMX |
636 //FIXME handle 2 lines a once (fewer prefetch, reuse some chrom, but very likely limited by mem anyway) | 636 //FIXME handle 2 lines a once (fewer prefetch, reuse some chrom, but very likely limited by mem anyway) |
637 asm volatile( | 637 asm volatile( |
638 "xorl %%eax, %%eax \n\t" | 638 "xorl %%eax, %%eax \n\t" |
639 ".align 16 \n\t" | 639 ".balign 16 \n\t" |
640 "1: \n\t" | 640 "1: \n\t" |
641 PREFETCH" 32(%1, %%eax, 2) \n\t" | 641 PREFETCH" 32(%1, %%eax, 2) \n\t" |
642 PREFETCH" 32(%2, %%eax) \n\t" | 642 PREFETCH" 32(%2, %%eax) \n\t" |
643 PREFETCH" 32(%3, %%eax) \n\t" | 643 PREFETCH" 32(%3, %%eax) \n\t" |
644 "movq (%2, %%eax), %%mm0 \n\t" // U(0) | 644 "movq (%2, %%eax), %%mm0 \n\t" // U(0) |
708 #ifdef HAVE_MMX | 708 #ifdef HAVE_MMX |
709 asm volatile( | 709 asm volatile( |
710 "xorl %%eax, %%eax \n\t" | 710 "xorl %%eax, %%eax \n\t" |
711 "pcmpeqw %%mm7, %%mm7 \n\t" | 711 "pcmpeqw %%mm7, %%mm7 \n\t" |
712 "psrlw $8, %%mm7 \n\t" // FF,00,FF,00... | 712 "psrlw $8, %%mm7 \n\t" // FF,00,FF,00... |
713 ".align 16 \n\t" | 713 ".balign 16 \n\t" |
714 "1: \n\t" | 714 "1: \n\t" |
715 PREFETCH" 64(%0, %%eax, 4) \n\t" | 715 PREFETCH" 64(%0, %%eax, 4) \n\t" |
716 "movq (%0, %%eax, 4), %%mm0 \n\t" // YUYV YUYV(0) | 716 "movq (%0, %%eax, 4), %%mm0 \n\t" // YUYV YUYV(0) |
717 "movq 8(%0, %%eax, 4), %%mm1 \n\t" // YUYV YUYV(4) | 717 "movq 8(%0, %%eax, 4), %%mm1 \n\t" // YUYV YUYV(4) |
718 "movq %%mm0, %%mm2 \n\t" // YUYV YUYV(0) | 718 "movq %%mm0, %%mm2 \n\t" // YUYV YUYV(0) |
758 : "memory", "%eax" | 758 : "memory", "%eax" |
759 ); | 759 ); |
760 | 760 |
761 asm volatile( | 761 asm volatile( |
762 "xorl %%eax, %%eax \n\t" | 762 "xorl %%eax, %%eax \n\t" |
763 ".align 16 \n\t" | 763 ".balign 16 \n\t" |
764 "1: \n\t" | 764 "1: \n\t" |
765 PREFETCH" 64(%0, %%eax, 4) \n\t" | 765 PREFETCH" 64(%0, %%eax, 4) \n\t" |
766 "movq (%0, %%eax, 4), %%mm0 \n\t" // YUYV YUYV(0) | 766 "movq (%0, %%eax, 4), %%mm0 \n\t" // YUYV YUYV(0) |
767 "movq 8(%0, %%eax, 4), %%mm1 \n\t" // YUYV YUYV(4) | 767 "movq 8(%0, %%eax, 4), %%mm1 \n\t" // YUYV YUYV(4) |
768 "movq 16(%0, %%eax, 4), %%mm2 \n\t" // YUYV YUYV(8) | 768 "movq 16(%0, %%eax, 4), %%mm2 \n\t" // YUYV YUYV(8) |