1
This patch fixes FTBFS issue when using -fPIC.
2
For inquiries about this patch, please see bug #528080.
3
==========================================================================
4
--- a/libavcodec/x86/dsputil_mmx.c
5
+++ b/libavcodec/x86/dsputil_mmx.c
7
"punpckhdq %%mm1, %%mm1 \n\t"
10
- : "=m" (*(uint32_t*)(dst + 0*dst_stride)),
11
- "=m" (*(uint32_t*)(dst + 1*dst_stride)),
12
- "=m" (*(uint32_t*)(dst + 2*dst_stride)),
13
- "=m" (*(uint32_t*)(dst + 3*dst_stride))
14
- : "m" (*(uint32_t*)(src + 0*src_stride)),
15
- "m" (*(uint32_t*)(src + 1*src_stride)),
16
- "m" (*(uint32_t*)(src + 2*src_stride)),
17
- "m" (*(uint32_t*)(src + 3*src_stride))
18
+ : "=r" (*(uint32_t*)(dst + 0*dst_stride)),
19
+ "=r" (*(uint32_t*)(dst + 1*dst_stride)),
20
+ "=r" (*(uint32_t*)(dst + 2*dst_stride)),
21
+ "=r" (*(uint32_t*)(dst + 3*dst_stride))
22
+ : "r" (*(uint32_t*)(src + 0*src_stride)),
23
+ "r" (*(uint32_t*)(src + 1*src_stride)),
24
+ "r" (*(uint32_t*)(src + 2*src_stride)),
25
+ "r" (*(uint32_t*)(src + 3*src_stride))
29
--- a/libavcodec/x86/h264dsp_mmx.c
30
+++ b/libavcodec/x86/h264dsp_mmx.c
34
"pxor %%mm7, %%mm7 \n\t"\
35
- "movq %5, %%mm4 \n\t"\
36
- "movq %6, %%mm5 \n\t"\
37
+ "movq ff_pw_5, %%mm4 \n\t"\
38
+ "movq ff_pw_16, %%mm5 \n\t"\
40
"movd -1(%0), %%mm1 \n\t"\
41
"movd (%0), %%mm2 \n\t"\
45
: "+a"(src), "+c"(dst), "+g"(h)\
46
- : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride), "m"(ff_pw_5), "m"(ff_pw_16)\
48
+ : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
51
static av_noinline void OPNAME ## h264_qpel4_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
54
- "pxor %%mm7, %%mm7 \n\t"\
55
- "movq %0, %%mm4 \n\t"\
56
- "movq %1, %%mm5 \n\t"\
57
- :: "m"(ff_pw_5), "m"(ff_pw_16)\
58
+ "pxor %mm7, %mm7 \n\t"\
59
+ "movq ff_pw_5, %mm4 \n\t"\
60
+ "movq ff_pw_16, %mm5 \n\t"\
67
"pxor %%mm7, %%mm7 \n\t"\
68
- "movq %5, %%mm6 \n\t"\
69
+ "movq ff_pw_5, %%mm6 \n\t"\
71
"movq (%0), %%mm0 \n\t"\
72
"movq 1(%0), %%mm2 \n\t"\
74
"punpcklbw %%mm7, %%mm5 \n\t"\
75
"paddw %%mm3, %%mm2 \n\t"\
76
"paddw %%mm5, %%mm4 \n\t"\
77
- "movq %6, %%mm5 \n\t"\
78
+ "movq ff_pw_16, %%mm5 \n\t"\
79
"paddw %%mm5, %%mm2 \n\t"\
80
"paddw %%mm5, %%mm4 \n\t"\
81
"paddw %%mm2, %%mm0 \n\t"\
82
@@ -1165,17 +1163,15 @@
85
: "+a"(src), "+c"(dst), "+g"(h)\
86
- : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride), "m"(ff_pw_5), "m"(ff_pw_16)\
88
+ : "d"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
92
static av_noinline void OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
95
- "pxor %%mm7, %%mm7 \n\t"\
96
- "movq %0, %%mm6 \n\t"\
98
+ "pxor %mm7, %mm7 \n\t"\
99
+ "movq ff_pw_5, %mm6 \n\t"\
103
@@ -1211,7 +1207,7 @@
104
"punpcklbw %%mm7, %%mm5 \n\t"\
105
"paddw %%mm3, %%mm2 \n\t"\
106
"paddw %%mm5, %%mm4 \n\t"\
107
- "movq %5, %%mm5 \n\t"\
108
+ "movq ff_pw_16, %%mm5 \n\t"\
109
"paddw %%mm5, %%mm2 \n\t"\
110
"paddw %%mm5, %%mm4 \n\t"\
111
"paddw %%mm2, %%mm0 \n\t"\
112
@@ -1226,9 +1222,7 @@
115
: "+a"(src), "+c"(dst), "+d"(src2)\
116
- : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
119
+ : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
123
@@ -1494,8 +1488,8 @@
126
"pxor %%xmm15, %%xmm15 \n\t"\
127
- "movdqa %6, %%xmm14 \n\t"\
128
- "movdqa %7, %%xmm13 \n\t"\
129
+ "movdqa ff_pw_5, %%xmm14 \n\t"\
130
+ "movdqa ff_pw_16, %%xmm13 \n\t"\
132
"lddqu 3(%0), %%xmm1 \n\t"\
133
"lddqu -5(%0), %%xmm7 \n\t"\
134
@@ -1549,9 +1543,7 @@
137
: "+a"(src), "+c"(dst), "+d"(src2), "+g"(h)\
138
- : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
139
- "m"(ff_pw_5), "m"(ff_pw_16)\
141
+ : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
145
@@ -1571,9 +1563,8 @@
146
static av_noinline void OPNAME ## h264_qpel8_h_lowpass_l2_ ## MMX(uint8_t *dst, uint8_t *src, uint8_t *src2, int dstStride, int src2Stride){\
149
- "pxor %%xmm7, %%xmm7 \n\t"\
150
- "movdqa %0, %%xmm6 \n\t"\
152
+ "pxor %xmm7, %xmm7 \n\t"\
153
+ "movdqa ff_pw_5, %xmm6 \n\t"\
157
@@ -1596,7 +1587,7 @@
158
"psllw $2, %%xmm2 \n\t"\
159
"movq (%2), %%xmm3 \n\t"\
160
"psubw %%xmm1, %%xmm2 \n\t"\
161
- "paddw %5, %%xmm5 \n\t"\
162
+ "paddw ff_pw_16,%%xmm5 \n\t"\
163
"pmullw %%xmm6, %%xmm2 \n\t"\
164
"paddw %%xmm5, %%xmm2 \n\t"\
165
"psraw $5, %%xmm2 \n\t"\
166
@@ -1607,9 +1598,7 @@
169
: "+a"(src), "+c"(dst), "+d"(src2)\
170
- : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride),\
173
+ : "D"((x86_reg)src2Stride), "S"((x86_reg)dstStride)\
177
@@ -1619,7 +1608,7 @@
180
"pxor %%xmm7, %%xmm7 \n\t"\
181
- "movdqa %5, %%xmm6 \n\t"\
182
+ "movdqa ff_pw_5, %%xmm6 \n\t"\
184
"lddqu -5(%0), %%xmm1 \n\t"\
185
"movdqa %%xmm1, %%xmm0 \n\t"\
186
@@ -1639,7 +1628,7 @@
187
"paddw %%xmm4, %%xmm1 \n\t"\
188
"psllw $2, %%xmm2 \n\t"\
189
"psubw %%xmm1, %%xmm2 \n\t"\
190
- "paddw %6, %%xmm5 \n\t"\
191
+ "paddw ff_pw_16, %%xmm5 \n\t"\
192
"pmullw %%xmm6, %%xmm2 \n\t"\
193
"paddw %%xmm5, %%xmm2 \n\t"\
194
"psraw $5, %%xmm2 \n\t"\
195
@@ -1650,9 +1639,7 @@
198
: "+a"(src), "+c"(dst), "+g"(h)\
199
- : "D"((x86_reg)srcStride), "S"((x86_reg)dstStride),\
200
- "m"(ff_pw_5), "m"(ff_pw_16)\
202
+ : "D"((x86_reg)srcStride), "S"((x86_reg)dstStride)\
205
static void OPNAME ## h264_qpel16_h_lowpass_ ## MMX(uint8_t *dst, uint8_t *src, int dstStride, int srcStride){\
206
--- a/libavcodec/x86/flacdsp_mmx.c
207
+++ b/libavcodec/x86/flacdsp_mmx.c
209
"movsd "MANGLE(ff_pd_1)", %%xmm1 \n\t"
210
"movsd "MANGLE(ff_pd_1)", %%xmm2 \n\t"
212
- "movapd (%4,%0), %%xmm3 \n\t"
213
- "movupd -8(%5,%0), %%xmm4 \n\t"
214
- "movapd (%5,%0), %%xmm5 \n\t"
215
+ "movapd (%2,%0), %%xmm3 \n\t"
216
+ "movupd -8(%3,%0), %%xmm4 \n\t"
217
+ "movapd (%3,%0), %%xmm5 \n\t"
218
"mulpd %%xmm3, %%xmm4 \n\t"
219
"mulpd %%xmm3, %%xmm5 \n\t"
220
- "mulpd -16(%5,%0), %%xmm3 \n\t"
221
+ "mulpd -16(%3,%0), %%xmm3 \n\t"
222
"addpd %%xmm4, %%xmm1 \n\t"
223
"addpd %%xmm5, %%xmm0 \n\t"
224
"addpd %%xmm3, %%xmm2 \n\t"
226
"addsd %%xmm4, %%xmm1 \n\t"
227
"addsd %%xmm5, %%xmm2 \n\t"
228
"movsd %%xmm0, %1 \n\t"
229
- "movsd %%xmm1, %2 \n\t"
230
- "movsd %%xmm2, %3 \n\t"
231
- :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1]), "=m"(autoc[j+2])
232
+ "movsd %%xmm1, 8%1 \n\t"
233
+ "movsd %%xmm2, 16%1 \n\t"
234
+ :"+&r"(i), "=m"(autoc[j])
235
:"r"(data1+len), "r"(data1+len-j)
238
@@ -117,10 +117,10 @@
239
"movsd "MANGLE(ff_pd_1)", %%xmm0 \n\t"
240
"movsd "MANGLE(ff_pd_1)", %%xmm1 \n\t"
242
- "movapd (%3,%0), %%xmm3 \n\t"
243
- "movupd -8(%4,%0), %%xmm4 \n\t"
244
+ "movapd (%2,%0), %%xmm3 \n\t"
245
+ "movupd -8(%3,%0), %%xmm4 \n\t"
246
"mulpd %%xmm3, %%xmm4 \n\t"
247
- "mulpd (%4,%0), %%xmm3 \n\t"
248
+ "mulpd (%3,%0), %%xmm3 \n\t"
249
"addpd %%xmm4, %%xmm1 \n\t"
250
"addpd %%xmm3, %%xmm0 \n\t"
253
"addsd %%xmm3, %%xmm0 \n\t"
254
"addsd %%xmm4, %%xmm1 \n\t"
255
"movsd %%xmm0, %1 \n\t"
256
- "movsd %%xmm1, %2 \n\t"
257
- :"+&r"(i), "=m"(autoc[j]), "=m"(autoc[j+1])
258
+ "movsd %%xmm1, 8%1 \n\t"
259
+ :"+&r"(i), "=m"(autoc[j])
260
:"r"(data1+len), "r"(data1+len-j)