Mercurial > libavcodec.hg
comparison x86/lpc_mmx.c @ 10763:98bf00fa95cd libavcodec
Reduce number of ASM constraints for ff_lpc_compute_autocorr_sse2 since it
causes no significant speed difference and can avoid compilation issues with
--enable-pic.
author | reimar |
---|---|
date | Sat, 02 Jan 2010 17:48:08 +0000 |
parents | 94595d0e617c |
children |
comparison
equal
deleted
inserted
replaced
10762:a4842fc20ac8 | 10763:98bf00fa95cd |
---|---|
87 __asm__ volatile( | 87 __asm__ volatile( |
88 "movsd "MANGLE(ff_pd_1)", %%xmm0 \n\t" | 88 "movsd "MANGLE(ff_pd_1)", %%xmm0 \n\t" |
89 "movsd "MANGLE(ff_pd_1)", %%xmm1 \n\t" | 89 "movsd "MANGLE(ff_pd_1)", %%xmm1 \n\t" |
90 "movsd "MANGLE(ff_pd_1)", %%xmm2 \n\t" | 90 "movsd "MANGLE(ff_pd_1)", %%xmm2 \n\t" |
91 "1: \n\t" | 91 "1: \n\t" |
92 "movapd (%4,%0), %%xmm3 \n\t" | 92 "movapd (%2,%0), %%xmm3 \n\t" |
93 "movupd -8(%5,%0), %%xmm4 \n\t" | 93 "movupd -8(%3,%0), %%xmm4 \n\t" |
94 "movapd (%5,%0), %%xmm5 \n\t" | 94 "movapd (%3,%0), %%xmm5 \n\t" |
95 "mulpd %%xmm3, %%xmm4 \n\t" | 95 "mulpd %%xmm3, %%xmm4 \n\t" |
96 "mulpd %%xmm3, %%xmm5 \n\t" | 96 "mulpd %%xmm3, %%xmm5 \n\t" |
97 "mulpd -16(%5,%0), %%xmm3 \n\t" | 97 "mulpd -16(%3,%0), %%xmm3 \n\t" |
98 "addpd %%xmm4, %%xmm1 \n\t" | 98 "addpd %%xmm4, %%xmm1 \n\t" |
99 "addpd %%xmm5, %%xmm0 \n\t" | 99 "addpd %%xmm5, %%xmm0 \n\t" |
100 "addpd %%xmm3, %%xmm2 \n\t" | 100 "addpd %%xmm3, %%xmm2 \n\t" |
101 "add $16, %0 \n\t" | 101 "add $16, %0 \n\t" |
102 "jl 1b \n\t" | 102 "jl 1b \n\t" |
104 "movhlps %%xmm1, %%xmm4 \n\t" | 104 "movhlps %%xmm1, %%xmm4 \n\t" |
105 "movhlps %%xmm2, %%xmm5 \n\t" | 105 "movhlps %%xmm2, %%xmm5 \n\t" |
106 "addsd %%xmm3, %%xmm0 \n\t" | 106 "addsd %%xmm3, %%xmm0 \n\t" |
107 "addsd %%xmm4, %%xmm1 \n\t" | 107 "addsd %%xmm4, %%xmm1 \n\t" |
108 "addsd %%xmm5, %%xmm2 \n\t" | 108 "addsd %%xmm5, %%xmm2 \n\t" |
109 "movsd %%xmm0, %1 \n\t" | 109 "movsd %%xmm0, (%1) \n\t" |
110 "movsd %%xmm1, %2 \n\t" | 110 "movsd %%xmm1, 8(%1) \n\t" |
111 "movsd %%xmm2, %3 \n\t" | 111 "movsd %%xmm2, 16(%1) \n\t" |
112 :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1]), "=m"(autoc[j+2]) | 112 :"+&r"(i) |
113 :"r"(data1+len), "r"(data1+len-j) | 113 :"r"(autoc+j), "r"(data1+len), "r"(data1+len-j) |
114 :"memory" | |
114 ); | 115 ); |
115 } else { | 116 } else { |
116 __asm__ volatile( | 117 __asm__ volatile( |
117 "movsd "MANGLE(ff_pd_1)", %%xmm0 \n\t" | 118 "movsd "MANGLE(ff_pd_1)", %%xmm0 \n\t" |
118 "movsd "MANGLE(ff_pd_1)", %%xmm1 \n\t" | 119 "movsd "MANGLE(ff_pd_1)", %%xmm1 \n\t" |