Mercurial > mplayer.hg
comparison mp3lib/dct64_3dnow.c @ 18833:c452bd0d6ede
fix conversion float to int to use saturated ops,
Patch by Zuxy Meng < zuxy PP meng AH gmail PP com >
Original thread:
Date: Jun 21, 2006 2:50 PM
Subject: [MPlayer-dev-eng] [PATCH] Saturation & PSWAPD bugfix in mp3lib/dct64_3dnow.c & mp3lib/dct64_k7.c
author | gpoirier |
---|---|
date | Tue, 27 Jun 2006 05:51:45 +0000 |
parents | e7a129082fda |
children | 9a90621765b0 |
comparison
equal
deleted
inserted
replaced
18832:7d60e0c9f58a | 18833:c452bd0d6ede |
---|---|
744 " movq %%mm0, %%mm1\n\t" | 744 " movq %%mm0, %%mm1\n\t" |
745 " pxor %%mm7, %%mm1\n\t" | 745 " pxor %%mm7, %%mm1\n\t" |
746 " pfacc %%mm1, %%mm0\n\t" | 746 " pfacc %%mm1, %%mm0\n\t" |
747 " pfmul %%mm6, %%mm0\n\t" | 747 " pfmul %%mm6, %%mm0\n\t" |
748 " pf2id %%mm0, %%mm0\n\t" | 748 " pf2id %%mm0, %%mm0\n\t" |
749 " packssdw %%mm0, %%mm0\n\t" | |
749 " movd %%mm0, %%eax\n\t" | 750 " movd %%mm0, %%eax\n\t" |
750 " movw %%ax, 512(%%esi)\n\t" | 751 " movw %%ax, 512(%%esi)\n\t" |
751 " psrlq $32, %%mm0\n\t" | 752 " shrl $16, %%eax\n\t" |
752 " movd %%mm0, %%eax\n\t" | |
753 " movw %%ax, (%%esi)\n\t" | 753 " movw %%ax, (%%esi)\n\t" |
754 | 754 |
755 " movd 12(%%ecx), %%mm0\n\t" | 755 " movd 12(%%ecx), %%mm0\n\t" |
756 " pfsub 8(%%ecx), %%mm0\n\t" | 756 " pfsub 8(%%ecx), %%mm0\n\t" |
757 " pfmul 120(%%ebx), %%mm0\n\t" | 757 " pfmul 120(%%ebx), %%mm0\n\t" |
758 " pf2id %%mm0, %%mm7\n\t" | 758 " pf2id %%mm0, %%mm7\n\t" |
759 " packssdw %%mm7, %%mm7\n\t" | |
759 " movd %%mm7, %%eax\n\t" | 760 " movd %%mm7, %%eax\n\t" |
760 " movw %%ax, 256(%%edi)\n\t" | 761 " movw %%ax, 256(%%edi)\n\t" |
761 " pfadd 12(%%ecx), %%mm0\n\t" | 762 " pfadd 12(%%ecx), %%mm0\n\t" |
762 " pfadd 8(%%ecx), %%mm0\n\t" | 763 " pfadd 8(%%ecx), %%mm0\n\t" |
763 " pf2id %%mm0, %%mm0\n\t" | 764 " pf2id %%mm0, %%mm0\n\t" |
765 " packssdw %%mm0, %%mm0\n\t" | |
764 " movd %%mm0, %%eax\n\t" | 766 " movd %%mm0, %%eax\n\t" |
765 " movw %%ax, 256(%%esi)\n\t" | 767 " movw %%ax, 256(%%esi)\n\t" |
766 | 768 |
767 " movd 16(%%ecx), %%mm3\n\t" | 769 " movd 16(%%ecx), %%mm3\n\t" |
768 " pfsub 20(%%ecx), %%mm3\n\t" | 770 " pfsub 20(%%ecx), %%mm3\n\t" |
773 " pfsub 24(%%ecx), %%mm2\n\t" | 775 " pfsub 24(%%ecx), %%mm2\n\t" |
774 " pfmul 120(%%ebx), %%mm2\n\t" | 776 " pfmul 120(%%ebx), %%mm2\n\t" |
775 " movq %%mm2, %%mm1\n\t" | 777 " movq %%mm2, %%mm1\n\t" |
776 | 778 |
777 " pf2id %%mm2, %%mm7\n\t" | 779 " pf2id %%mm2, %%mm7\n\t" |
780 " packssdw %%mm7, %%mm7\n\t" | |
778 " movd %%mm7, %%eax\n\t" | 781 " movd %%mm7, %%eax\n\t" |
779 " movw %%ax, 384(%%edi)\n\t" | 782 " movw %%ax, 384(%%edi)\n\t" |
780 | 783 |
781 " pfadd 24(%%ecx), %%mm1\n\t" | 784 " pfadd 24(%%ecx), %%mm1\n\t" |
782 " pfadd 28(%%ecx), %%mm1\n\t" | 785 " pfadd 28(%%ecx), %%mm1\n\t" |
783 " movq %%mm1, %%mm0\n\t" | 786 " movq %%mm1, %%mm0\n\t" |
784 | 787 |
785 " pfadd 16(%%ecx), %%mm0\n\t" | 788 " pfadd 16(%%ecx), %%mm0\n\t" |
786 " pfadd 20(%%ecx), %%mm0\n\t" | 789 " pfadd 20(%%ecx), %%mm0\n\t" |
787 " pf2id %%mm0, %%mm0\n\t" | 790 " pf2id %%mm0, %%mm0\n\t" |
791 " packssdw %%mm0, %%mm0\n\t" | |
788 " movd %%mm0, %%eax\n\t" | 792 " movd %%mm0, %%eax\n\t" |
789 " movw %%ax, 384(%%esi)\n\t" | 793 " movw %%ax, 384(%%esi)\n\t" |
790 " pfadd %%mm3, %%mm1\n\t" | 794 " pfadd %%mm3, %%mm1\n\t" |
791 " pf2id %%mm1, %%mm1\n\t" | 795 " pf2id %%mm1, %%mm1\n\t" |
796 " packssdw %%mm1, %%mm1\n\t" | |
792 " movd %%mm1, %%eax\n\t" | 797 " movd %%mm1, %%eax\n\t" |
793 " movw %%ax, 128(%%esi)\n\t" | 798 " movw %%ax, 128(%%esi)\n\t" |
794 " pfadd %%mm3, %%mm2\n\t" | 799 " pfadd %%mm3, %%mm2\n\t" |
795 " pf2id %%mm2, %%mm2\n\t" | 800 " pf2id %%mm2, %%mm2\n\t" |
801 " packssdw %%mm2, %%mm2\n\t" | |
796 " movd %%mm2, %%eax\n\t" | 802 " movd %%mm2, %%eax\n\t" |
797 " movw %%ax, 128(%%edi)\n\t" | 803 " movw %%ax, 128(%%edi)\n\t" |
798 | 804 |
799 /* Phase 10*/ | 805 /* Phase 10*/ |
800 | 806 |
802 " movq 48(%%edx), %%mm1\n\t" | 808 " movq 48(%%edx), %%mm1\n\t" |
803 " pfadd 48(%%edx), %%mm0\n\t" | 809 " pfadd 48(%%edx), %%mm0\n\t" |
804 " pfadd 40(%%edx), %%mm1\n\t" | 810 " pfadd 40(%%edx), %%mm1\n\t" |
805 " pf2id %%mm0, %%mm0\n\t" | 811 " pf2id %%mm0, %%mm0\n\t" |
806 " pf2id %%mm1, %%mm1\n\t" | 812 " pf2id %%mm1, %%mm1\n\t" |
813 " packssdw %%mm0, %%mm0\n\t" | |
814 " packssdw %%mm1, %%mm1\n\t" | |
807 " movd %%mm0, %%eax\n\t" | 815 " movd %%mm0, %%eax\n\t" |
808 " movd %%mm1, %%ecx\n\t" | 816 " movd %%mm1, %%ecx\n\t" |
809 " movw %%ax, 448(%%esi)\n\t" | 817 " movw %%ax, 448(%%esi)\n\t" |
810 " movw %%cx, 320(%%esi)\n\t" | 818 " movw %%cx, 320(%%esi)\n\t" |
811 " psrlq $32, %%mm0\n\t" | 819 " shrl $16, %%eax\n\t" |
812 " psrlq $32, %%mm1\n\t" | 820 " shrl $16, %%ecx\n\t" |
813 " movd %%mm0, %%eax\n\t" | |
814 " movd %%mm1, %%ecx\n\t" | |
815 " movw %%ax, 64(%%edi)\n\t" | 821 " movw %%ax, 64(%%edi)\n\t" |
816 " movw %%cx, 192(%%edi)\n\t" | 822 " movw %%cx, 192(%%edi)\n\t" |
817 | 823 |
818 " movd 40(%%edx), %%mm3\n\t" | 824 " movd 40(%%edx), %%mm3\n\t" |
819 " movd 56(%%edx), %%mm4\n\t" | 825 " movd 56(%%edx), %%mm4\n\t" |
827 " punpckldq 92(%%edx), %%mm2\n\t" | 833 " punpckldq 92(%%edx), %%mm2\n\t" |
828 " movq %%mm5, %%mm6\n\t" | 834 " movq %%mm5, %%mm6\n\t" |
829 " pfadd %%mm4, %%mm3\n\t" | 835 " pfadd %%mm4, %%mm3\n\t" |
830 " pf2id %%mm0, %%mm1\n\t" | 836 " pf2id %%mm0, %%mm1\n\t" |
831 " pf2id %%mm3, %%mm3\n\t" | 837 " pf2id %%mm3, %%mm3\n\t" |
838 " packssdw %%mm0, %%mm0\n\t" | |
839 " packssdw %%mm3, %%mm3\n\t" | |
832 " pfadd 88(%%edx), %%mm5\n\t" | 840 " pfadd 88(%%edx), %%mm5\n\t" |
833 " movd %%mm1, %%eax\n\t" | 841 " movd %%mm1, %%eax\n\t" |
834 " movd %%mm3, %%ecx\n\t" | 842 " movd %%mm3, %%ecx\n\t" |
835 " movw %%ax, 448(%%edi)\n\t" | 843 " movw %%ax, 448(%%edi)\n\t" |
836 " movw %%cx, 192(%%esi)\n\t" | 844 " movw %%cx, 192(%%esi)\n\t" |
837 " pf2id %%mm5, %%mm5\n\t" | 845 " pf2id %%mm5, %%mm5\n\t" |
838 " psrlq $32, %%mm1\n\t" | 846 " packssdw %%mm5, %%mm5\n\t" |
839 " psrlq $32, %%mm3\n\t" | 847 " shrl $16, %%eax\n\t" |
848 " shrl $16, %%ecx\n\t" | |
840 " movd %%mm5, %%ebx\n\t" | 849 " movd %%mm5, %%ebx\n\t" |
841 " movd %%mm1, %%eax\n\t" | |
842 " movd %%mm3, %%ecx\n\t" | |
843 " movw %%bx, 96(%%esi)\n\t" | 850 " movw %%bx, 96(%%esi)\n\t" |
844 " movw %%ax, 480(%%edi)\n\t" | 851 " movw %%ax, 480(%%edi)\n\t" |
845 " movw %%cx, 64(%%esi)\n\t" | 852 " movw %%cx, 64(%%esi)\n\t" |
846 " pfadd %%mm2, %%mm0\n\t" | 853 " pfadd %%mm2, %%mm0\n\t" |
847 " pf2id %%mm0, %%mm0\n\t" | 854 " pf2id %%mm0, %%mm0\n\t" |
855 " packssdw %%mm0, %%mm0\n\t" | |
848 " movd %%mm0, %%eax\n\t" | 856 " movd %%mm0, %%eax\n\t" |
849 " pfadd 68(%%edx), %%mm6\n\t" | 857 " pfadd 68(%%edx), %%mm6\n\t" |
850 " movw %%ax, 320(%%edi)\n\t" | 858 " movw %%ax, 320(%%edi)\n\t" |
851 " psrlq $32, %%mm0\n\t" | 859 " shr $16, %%eax\n\t" |
852 " pf2id %%mm6, %%mm6\n\t" | 860 " pf2id %%mm6, %%mm6\n\t" |
853 " movd %%mm0, %%eax\n\t" | 861 " packssdw %%mm6, %%mm6\n\t" |
854 " movd %%mm6, %%ebx\n\t" | 862 " movd %%mm6, %%ebx\n\t" |
855 " movw %%ax, 416(%%edi)\n\t" | 863 " movw %%ax, 416(%%edi)\n\t" |
856 " movw %%bx, 32(%%esi)\n\t" | 864 " movw %%bx, 32(%%esi)\n\t" |
857 | 865 |
858 " movq 96(%%edx), %%mm0\n\t" | 866 " movq 96(%%edx), %%mm0\n\t" |
868 " pfadd 80(%%edx), %%mm2\n\t" | 876 " pfadd 80(%%edx), %%mm2\n\t" |
869 " pfadd 72(%%edx), %%mm4\n\t" | 877 " pfadd 72(%%edx), %%mm4\n\t" |
870 " pf2id %%mm0, %%mm0\n\t" | 878 " pf2id %%mm0, %%mm0\n\t" |
871 " pf2id %%mm2, %%mm2\n\t" | 879 " pf2id %%mm2, %%mm2\n\t" |
872 " pf2id %%mm4, %%mm4\n\t" | 880 " pf2id %%mm4, %%mm4\n\t" |
881 " packssdw %%mm0, %%mm0\n\t" | |
882 " packssdw %%mm2, %%mm2\n\t" | |
883 " packssdw %%mm4, %%mm4\n\t" | |
873 " movd %%mm0, %%eax\n\t" | 884 " movd %%mm0, %%eax\n\t" |
874 " movd %%mm2, %%ecx\n\t" | 885 " movd %%mm2, %%ecx\n\t" |
875 " movd %%mm4, %%ebx\n\t" | 886 " movd %%mm4, %%ebx\n\t" |
876 " movw %%ax, 480(%%esi)\n\t" | 887 " movw %%ax, 480(%%esi)\n\t" |
877 " movw %%cx, 352(%%esi)\n\t" | 888 " movw %%cx, 352(%%esi)\n\t" |
878 " movw %%bx, 224(%%esi)\n\t" | 889 " movw %%bx, 224(%%esi)\n\t" |
879 " psrlq $32, %%mm0\n\t" | 890 " shrl $16, %%eax\n\t" |
880 " psrlq $32, %%mm2\n\t" | 891 " shrl $16, %%ecx\n\t" |
881 " psrlq $32, %%mm4\n\t" | 892 " shrl $16, %%ebx\n\t" |
882 " movd %%mm0, %%eax\n\t" | |
883 " movd %%mm2, %%ecx\n\t" | |
884 " movd %%mm4, %%ebx\n\t" | |
885 " movw %%ax, 32(%%edi)\n\t" | 893 " movw %%ax, 32(%%edi)\n\t" |
886 " movw %%cx, 160(%%edi)\n\t" | 894 " movw %%cx, 160(%%edi)\n\t" |
887 " movw %%bx, 288(%%edi)\n\t" | 895 " movw %%bx, 288(%%edi)\n\t" |
888 " pfadd 80(%%edx), %%mm1\n\t" | 896 " pfadd 80(%%edx), %%mm1\n\t" |
889 " pfadd 72(%%edx), %%mm3\n\t" | 897 " pfadd 72(%%edx), %%mm3\n\t" |
890 " pfadd 88(%%edx), %%mm5\n\t" | 898 " pfadd 88(%%edx), %%mm5\n\t" |
891 " pf2id %%mm1, %%mm1\n\t" | 899 " pf2id %%mm1, %%mm1\n\t" |
892 " pf2id %%mm3, %%mm3\n\t" | 900 " pf2id %%mm3, %%mm3\n\t" |
893 " pf2id %%mm5, %%mm5\n\t" | 901 " pf2id %%mm5, %%mm5\n\t" |
902 " packssdw %%mm1, %%mm1\n\t" | |
903 " packssdw %%mm3, %%mm3\n\t" | |
904 " packssdw %%mm5, %%mm5\n\t" | |
894 " movd %%mm1, %%eax\n\t" | 905 " movd %%mm1, %%eax\n\t" |
895 " movd %%mm3, %%ecx\n\t" | 906 " movd %%mm3, %%ecx\n\t" |
896 " movd %%mm5, %%ebx\n\t" | 907 " movd %%mm5, %%ebx\n\t" |
897 " movw %%ax, 416(%%esi)\n\t" | 908 " movw %%ax, 416(%%esi)\n\t" |
898 " movw %%cx, 288(%%esi)\n\t" | 909 " movw %%cx, 288(%%esi)\n\t" |
899 " movw %%bx, 160(%%esi)\n\t" | 910 " movw %%bx, 160(%%esi)\n\t" |
900 " psrlq $32, %%mm1\n\t" | 911 " shrl $16, %%eax\n\t" |
901 " psrlq $32, %%mm3\n\t" | 912 " shrl $16, %%ecx\n\t" |
902 " psrlq $32, %%mm5\n\t" | 913 " shrl $16, %%ebx\n\t" |
903 " movd %%mm1, %%eax\n\t" | 914 " movd %%mm1, %%eax\n\t" |
904 " movd %%mm3, %%ecx\n\t" | 915 " movd %%mm3, %%ecx\n\t" |
905 " movd %%mm5, %%ebx\n\t" | 916 " movd %%mm5, %%ebx\n\t" |
906 " movw %%ax, 96(%%edi)\n\t" | 917 " movw %%ax, 96(%%edi)\n\t" |
907 " movw %%cx, 224(%%edi)\n\t" | 918 " movw %%cx, 224(%%edi)\n\t" |