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"