comparison liba52/imdct.c @ 15617:130dd060f723

one bugfix and a few gcc4 bug workaorunds by (Gianluigi Tiesi: mplayer, netfarm it)
author michael
date Thu, 02 Jun 2005 20:54:03 +0000
parents 07f1e7669772
children d6219ce521e9
comparison
equal deleted inserted replaced
15616:633017bc16ef 15617:130dd060f723
768 /* int i,k; 768 /* int i,k;
769 int p,q;*/ 769 int p,q;*/
770 int m; 770 int m;
771 int two_m; 771 int two_m;
772 int two_m_plus_one; 772 int two_m_plus_one;
773 int two_m_plus_one_shl3;
774 complex_t *buf_offset;
773 775
774 /* sample_t tmp_a_i; 776 /* sample_t tmp_a_i;
775 sample_t tmp_a_r; 777 sample_t tmp_a_r;
776 sample_t tmp_b_i; 778 sample_t tmp_b_i;
777 sample_t tmp_b_r;*/ 779 sample_t tmp_b_r;*/
936 938
937 /* 4-7. iterations */ 939 /* 4-7. iterations */
938 for (m=3; m < 7; m++) { 940 for (m=3; m < 7; m++) {
939 two_m = (1 << m); 941 two_m = (1 << m);
940 two_m_plus_one = two_m<<1; 942 two_m_plus_one = two_m<<1;
943 two_m_plus_one_shl3 = (two_m_plus_one<<3);
944 buf_offset = buf+128;
941 asm volatile( 945 asm volatile(
942 "movl %0, %%esi \n\t" 946 "movl %0, %%esi \n\t"
943 ".balign 16 \n\t" 947 ".balign 16 \n\t"
944 "1: \n\t" 948 "1: \n\t"
945 "xorl %%edi, %%edi \n\t" // k 949 "xorl %%edi, %%edi \n\t" // k
961 "cmpl %3, %%edi \n\t" //FIXME (opt) count against 0 965 "cmpl %3, %%edi \n\t" //FIXME (opt) count against 0
962 " jb 2b \n\t" 966 " jb 2b \n\t"
963 "addl %2, %%esi \n\t" 967 "addl %2, %%esi \n\t"
964 "cmpl %1, %%esi \n\t" 968 "cmpl %1, %%esi \n\t"
965 " jb 1b \n\t" 969 " jb 1b \n\t"
966 :: "g" (buf), "m" (buf+128), "m" (two_m_plus_one<<3), "r" (two_m<<3), 970 :: "g" (buf), "m" (buf_offset), "m" (two_m_plus_one_shl3), "r" (two_m<<3),
967 "r" (sseW[m]) 971 "r" (sseW[m])
968 : "%esi", "%edi", "%edx" 972 : "%esi", "%edi", "%edx"
969 ); 973 );
970 } 974 }
971 975