Mercurial > mplayer.hg
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 |