Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 67947 | Differences between
and this patch

Collapse All | Expand All

(-)work.orig/ffmpeg-0.4.9-pre1/libavcodec/i386/dsputil_mmx.c (-1 / +1 lines)
Lines 57-63 Link Here
57
    "pcmpeqd %%" #regd ", %%" #regd " \n\t"\
57
    "pcmpeqd %%" #regd ", %%" #regd " \n\t"\
58
    "paddb %%" #regd ", %%" #regd " \n\t" ::)
58
    "paddb %%" #regd ", %%" #regd " \n\t" ::)
59
59
60
#ifndef PIC
60
#ifndef __PIC__
61
#define MOVQ_BONE(regd)  __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_bone))
61
#define MOVQ_BONE(regd)  __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_bone))
62
#define MOVQ_WTWO(regd)  __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_wtwo))
62
#define MOVQ_WTWO(regd)  __asm __volatile ("movq %0, %%" #regd " \n\t" ::"m"(mm_wtwo))
63
#else
63
#else
(-)work.orig/ffmpeg-0.4.9-pre1/libavcodec/i386/dsputil_mmx_rnd.h (-2 / +2 lines)
Lines 96-102 Link Here
96
	"addl	%5, %3			\n\t"
96
	"addl	%5, %3			\n\t"
97
	"subl	$4, %0			\n\t"
97
	"subl	$4, %0			\n\t"
98
	"jnz	1b			\n\t"
98
	"jnz	1b			\n\t"
99
#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used
99
#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used
100
        :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst)
100
        :"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst)
101
#else
101
#else
102
        :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst)
102
        :"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst)
Lines 191-197 Link Here
191
	"addl	$32, %2			\n\t"
191
	"addl	$32, %2			\n\t"
192
	"subl	$2, %0			\n\t"
192
	"subl	$2, %0			\n\t"
193
	"jnz	1b			\n\t"
193
	"jnz	1b			\n\t"
194
#ifdef PIC //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used
194
#ifdef __PIC__ //Note "+bm" and "+mb" are buggy too (with gcc 3.2.2 at least) and cant be used
195
	:"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst)
195
	:"+m"(h), "+a"(src1), "+c"(src2), "+d"(dst)
196
#else
196
#else
197
	:"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst)
197
	:"+b"(h), "+a"(src1), "+c"(src2), "+d"(dst)
(-)work.orig/ffmpeg-0.4.9-pre1/libavcodec/i386/mpegvideo_mmx_template.c (-2 / +45 lines)
Lines 94-102 Link Here
94
            SPREADW(%%mm3)
94
            SPREADW(%%mm3)
95
            "pxor %%mm7, %%mm7			\n\t" // 0
95
            "pxor %%mm7, %%mm7			\n\t" // 0
96
            "pxor %%mm4, %%mm4			\n\t" // 0
96
            "pxor %%mm4, %%mm4			\n\t" // 0
97
            "movq (%2), %%mm5			\n\t" // qmat[0]
97
#ifdef __PIC__
98
#else
99
            "movq (%0), %%mm5			\n\t" // qmat[0]
100
#endif
98
            "pxor %%mm6, %%mm6			\n\t"
101
            "pxor %%mm6, %%mm6			\n\t"
99
            "psubw (%3), %%mm6			\n\t" // -bias[0]
102
#ifdef __PIC__
103
#else
104
            "psubw (%1), %%mm6			\n\t" // -bias[0]
105
#endif
106
#ifdef __PIC__
107
	    : "+a" (last_non_zero_p1)
108
            : "r" (qmat), "r" (bias)
109
        );
110
        asm volatile(
111
#endif
100
            "movl $-128, %%eax			\n\t"
112
            "movl $-128, %%eax			\n\t"
101
            ".balign 16				\n\t"
113
            ".balign 16				\n\t"
102
            "1:					\n\t"
114
            "1:					\n\t"
Lines 110-118 Link Here
110
            "por %%mm0, %%mm4			\n\t" 
122
            "por %%mm0, %%mm4			\n\t" 
111
            "pxor %%mm1, %%mm0			\n\t" 
123
            "pxor %%mm1, %%mm0			\n\t" 
112
            "psubw %%mm1, %%mm0			\n\t" // out=((ABS(block[i])*qmat[0] - bias[0]*qmat[0])>>16)*sign(block[i])
124
            "psubw %%mm1, %%mm0			\n\t" // out=((ABS(block[i])*qmat[0] - bias[0]*qmat[0])>>16)*sign(block[i])
125
#ifdef __PIC__
126
            "movq %%mm0, (%3, %%eax)		\n\t"
127
#else
113
            "movq %%mm0, (%5, %%eax)		\n\t"
128
            "movq %%mm0, (%5, %%eax)		\n\t"
129
#endif
114
            "pcmpeqw %%mm7, %%mm0		\n\t" // out==0 ? 0xFF : 0x00
130
            "pcmpeqw %%mm7, %%mm0		\n\t" // out==0 ? 0xFF : 0x00
131
#ifdef __PIC__
132
            "movq (%2, %%eax), %%mm1		\n\t" 
133
#else
115
            "movq (%4, %%eax), %%mm1		\n\t" 
134
            "movq (%4, %%eax), %%mm1		\n\t" 
135
#endif
116
            "movq %%mm7, (%1, %%eax)		\n\t" // 0
136
            "movq %%mm7, (%1, %%eax)		\n\t" // 0
117
            "pandn %%mm1, %%mm0			\n\t"
137
            "pandn %%mm1, %%mm0			\n\t"
118
	    PMAXW(%%mm0, %%mm3)
138
	    PMAXW(%%mm0, %%mm3)
Lines 126-136 Link Here
126
	    PMAXW(%%mm0, %%mm3)
146
	    PMAXW(%%mm0, %%mm3)
127
            "movd %%mm3, %%eax			\n\t"
147
            "movd %%mm3, %%eax			\n\t"
128
            "movzbl %%al, %%eax			\n\t" // last_non_zero_p1
148
            "movzbl %%al, %%eax			\n\t" // last_non_zero_p1
149
#ifdef __PIC__
150
	    : "+a" (last_non_zero_p1)
151
            : "r" (block+64),
152
              "r" (inv_zigzag_direct16+64), "r" (temp_block+64)
153
#else
129
	    : "+a" (last_non_zero_p1)
154
	    : "+a" (last_non_zero_p1)
130
            : "r" (block+64), "r" (qmat), "r" (bias),
155
            : "r" (block+64), "r" (qmat), "r" (bias),
131
              "r" (inv_zigzag_direct16+64), "r" (temp_block+64)
156
              "r" (inv_zigzag_direct16+64), "r" (temp_block+64)
157
#endif
132
        );
158
        );
133
        // note the asm is split cuz gcc doesnt like that many operands ...
159
        // note the asm is split cuz gcc doesnt like that many operands ...
160
	// note even more splitting up above when __PIC__ - we're one operand down
161
	// on X86 with __PIC__ compared to normal.
134
        asm volatile(
162
        asm volatile(
135
            "movd %1, %%mm1			\n\t" // max_qcoeff
163
            "movd %1, %%mm1			\n\t" // max_qcoeff
136
	    SPREADW(%%mm1)
164
	    SPREADW(%%mm1)
Lines 142-147 Link Here
142
        );
170
        );
143
    }else{ // FMT_H263
171
    }else{ // FMT_H263
144
        asm volatile(
172
        asm volatile(
173
#ifdef __PIC__
174
	    "pushl %%ebx			\n\t"
175
	    "movl %5, %%ebx			\n\t"
176
#else
177
#endif
145
            "movd %%eax, %%mm3			\n\t" // last_non_zero_p1
178
            "movd %%eax, %%mm3			\n\t" // last_non_zero_p1
146
            SPREADW(%%mm3)
179
            SPREADW(%%mm3)
147
            "pxor %%mm7, %%mm7			\n\t" // 0
180
            "pxor %%mm7, %%mm7			\n\t" // 0
Lines 161-167 Link Here
161
            "por %%mm0, %%mm4			\n\t" 
194
            "por %%mm0, %%mm4			\n\t" 
162
            "pxor %%mm1, %%mm0			\n\t" 
195
            "pxor %%mm1, %%mm0			\n\t" 
163
            "psubw %%mm1, %%mm0			\n\t" // out=((ABS(block[i])*qmat[0] - bias[0]*qmat[0])>>16)*sign(block[i])
196
            "psubw %%mm1, %%mm0			\n\t" // out=((ABS(block[i])*qmat[0] - bias[0]*qmat[0])>>16)*sign(block[i])
197
#ifdef __PIC__
198
            "movq %%mm0, (%%ebx, %%eax)		\n\t"
199
#else
164
            "movq %%mm0, (%5, %%eax)		\n\t"
200
            "movq %%mm0, (%5, %%eax)		\n\t"
201
#endif
165
            "pcmpeqw %%mm7, %%mm0		\n\t" // out==0 ? 0xFF : 0x00
202
            "pcmpeqw %%mm7, %%mm0		\n\t" // out==0 ? 0xFF : 0x00
166
            "movq (%4, %%eax), %%mm1		\n\t" 
203
            "movq (%4, %%eax), %%mm1		\n\t" 
167
            "movq %%mm7, (%1, %%eax)		\n\t" // 0
204
            "movq %%mm7, (%1, %%eax)		\n\t" // 0
Lines 177-185 Link Here
177
	    PMAXW(%%mm0, %%mm3)
214
	    PMAXW(%%mm0, %%mm3)
178
            "movd %%mm3, %%eax			\n\t"
215
            "movd %%mm3, %%eax			\n\t"
179
            "movzbl %%al, %%eax			\n\t" // last_non_zero_p1
216
            "movzbl %%al, %%eax			\n\t" // last_non_zero_p1
217
#ifdef __PIC__
218
	    : "+a" (last_non_zero_p1)
219
            : "r" (block+64), "r" (qmat+64), "r" (bias+64),
220
              "r" (inv_zigzag_direct16+64), "m" (temp_block+64)
221
#else
180
	    : "+a" (last_non_zero_p1)
222
	    : "+a" (last_non_zero_p1)
181
            : "r" (block+64), "r" (qmat+64), "r" (bias+64),
223
            : "r" (block+64), "r" (qmat+64), "r" (bias+64),
182
              "r" (inv_zigzag_direct16+64), "r" (temp_block+64)
224
              "r" (inv_zigzag_direct16+64), "r" (temp_block+64)
225
#endif
183
        );
226
        );
184
        // note the asm is split cuz gcc doesnt like that many operands ...
227
        // note the asm is split cuz gcc doesnt like that many operands ...
185
        asm volatile(
228
        asm volatile(
(-)work.orig/ffmpeg-0.4.9-pre1/libavcodec/libpostproc/postprocess_template.c (-1 / +44 lines)
Lines 3167-3176 Link Here
3167
	{
3167
	{
3168
#ifdef HAVE_MMX
3168
#ifdef HAVE_MMX
3169
					asm volatile(
3169
					asm volatile(
3170
#ifdef __PIC__
3171
						"pushl %%ebx		\n\t"
3172
						"movl %5, %%ebx		\n\t"
3173
#endif
3170
						"movq (%%eax), %%mm2	\n\t" // packedYOffset
3174
						"movq (%%eax), %%mm2	\n\t" // packedYOffset
3171
						"movq 8(%%eax), %%mm3	\n\t" // packedYScale
3175
						"movq 8(%%eax), %%mm3	\n\t" // packedYScale
3172
						"leal (%2,%4), %%eax	\n\t"
3176
						"leal (%2,%4), %%eax	\n\t"
3177
#ifdef __PIC__
3178
						"leal (%3,%%ebx), %%edx	\n\t"
3179
#else
3173
						"leal (%3,%5), %%edx	\n\t"
3180
						"leal (%3,%5), %%edx	\n\t"
3181
#endif
3174
						"pxor %%mm4, %%mm4	\n\t"
3182
						"pxor %%mm4, %%mm4	\n\t"
3175
#ifdef HAVE_MMX2
3183
#ifdef HAVE_MMX2
3176
#define SCALED_CPY(src1, src2, dst1, dst2)					\
3184
#define SCALED_CPY(src1, src2, dst1, dst2)					\
Lines 3223-3235 Link Here
3223
						"movq %%mm1, " #dst2 "	\n\t"\
3231
						"movq %%mm1, " #dst2 "	\n\t"\
3224
3232
3225
#endif //!HAVE_MMX2
3233
#endif //!HAVE_MMX2
3226
3234
#ifdef __PIC__
3235
SCALED_CPY((%2)       , (%2, %4)      , (%3)       , (%3, %%ebx))
3236
SCALED_CPY((%2, %4, 2), (%%eax, %4, 2), (%3, %%ebx, 2), (%%edx, %%ebx, 2))
3237
SCALED_CPY((%2, %4, 4), (%%eax, %4, 4), (%3, %%ebx, 4), (%%edx, %%ebx, 4))
3238
						"leal (%%eax,%4,4), %%eax	\n\t"
3239
						"leal (%%edx,%%ebx,4), %%edx	\n\t"
3240
SCALED_CPY((%%eax, %4), (%%eax, %4, 2), (%%edx, %%ebx), (%%edx, %%ebx, 2))
3241
						"popl %%ebx		\n\t"
3242
#else
3227
SCALED_CPY((%2)       , (%2, %4)      , (%3)       , (%3, %5))
3243
SCALED_CPY((%2)       , (%2, %4)      , (%3)       , (%3, %5))
3228
SCALED_CPY((%2, %4, 2), (%%eax, %4, 2), (%3, %5, 2), (%%edx, %5, 2))
3244
SCALED_CPY((%2, %4, 2), (%%eax, %4, 2), (%3, %5, 2), (%%edx, %5, 2))
3229
SCALED_CPY((%2, %4, 4), (%%eax, %4, 4), (%3, %5, 4), (%%edx, %5, 4))
3245
SCALED_CPY((%2, %4, 4), (%%eax, %4, 4), (%3, %5, 4), (%%edx, %5, 4))
3230
						"leal (%%eax,%4,4), %%eax	\n\t"
3246
						"leal (%%eax,%4,4), %%eax	\n\t"
3231
						"leal (%%edx,%5,4), %%edx	\n\t"
3247
						"leal (%%edx,%5,4), %%edx	\n\t"
3232
SCALED_CPY((%%eax, %4), (%%eax, %4, 2), (%%edx, %5), (%%edx, %5, 2))
3248
SCALED_CPY((%%eax, %4), (%%eax, %4, 2), (%%edx, %5), (%%edx, %5, 2))
3249
#endif
3233
3250
3234
3251
3235
						: "=&a" (packedOffsetAndScale)
3252
						: "=&a" (packedOffsetAndScale)
Lines 3237-3243 Link Here
3237
						"r"(src),
3254
						"r"(src),
3238
						"r"(dst),
3255
						"r"(dst),
3239
						"r" (srcStride),
3256
						"r" (srcStride),
3257
#ifdef __PIC__
3258
						"m" (dstStride)
3259
#else
3240
						"r" (dstStride)
3260
						"r" (dstStride)
3261
#endif
3241
						: "%edx"
3262
						: "%edx"
3242
					);
3263
					);
3243
#else
3264
#else
Lines 3250-3257 Link Here
3250
	{
3271
	{
3251
#ifdef HAVE_MMX
3272
#ifdef HAVE_MMX
3252
					asm volatile(
3273
					asm volatile(
3274
#ifdef __PIC__
3275
						"pushl %%ebx		\n\t"
3276
						"movl %3, %%ebx		\n\t"
3277
#endif
3253
						"leal (%0,%2), %%eax	\n\t"
3278
						"leal (%0,%2), %%eax	\n\t"
3279
#ifdef __PIC__
3280
						"leal (%1,%%ebx), %%edx	\n\t"
3281
#else
3254
						"leal (%1,%3), %%edx	\n\t"
3282
						"leal (%1,%3), %%edx	\n\t"
3283
#endif
3255
3284
3256
#define SIMPLE_CPY(src1, src2, dst1, dst2)				\
3285
#define SIMPLE_CPY(src1, src2, dst1, dst2)				\
3257
						"movq " #src1 ", %%mm0	\n\t"\
3286
						"movq " #src1 ", %%mm0	\n\t"\
Lines 3259-3275 Link Here
3259
						"movq %%mm0, " #dst1 "	\n\t"\
3288
						"movq %%mm0, " #dst1 "	\n\t"\
3260
						"movq %%mm1, " #dst2 "	\n\t"\
3289
						"movq %%mm1, " #dst2 "	\n\t"\
3261
3290
3291
#ifdef __PIC__
3292
SIMPLE_CPY((%0)       , (%0, %2)      , (%1)       , (%1, %%ebx))
3293
SIMPLE_CPY((%0, %2, 2), (%%eax, %2, 2), (%1, %%ebx, 2), (%%edx, %%ebx, 2))
3294
SIMPLE_CPY((%0, %2, 4), (%%eax, %2, 4), (%1, %%ebx, 4), (%%edx, %%ebx, 4))
3295
						"leal (%%eax,%2,4), %%eax	\n\t"
3296
						"leal (%%edx,%%ebx,4), %%edx	\n\t"
3297
SIMPLE_CPY((%%eax, %2), (%%eax, %2, 2), (%%edx, %%ebx), (%%edx, %%ebx, 2))
3298
						"popl %%ebx		\n\t"
3299
#else
3262
SIMPLE_CPY((%0)       , (%0, %2)      , (%1)       , (%1, %3))
3300
SIMPLE_CPY((%0)       , (%0, %2)      , (%1)       , (%1, %3))
3263
SIMPLE_CPY((%0, %2, 2), (%%eax, %2, 2), (%1, %3, 2), (%%edx, %3, 2))
3301
SIMPLE_CPY((%0, %2, 2), (%%eax, %2, 2), (%1, %3, 2), (%%edx, %3, 2))
3264
SIMPLE_CPY((%0, %2, 4), (%%eax, %2, 4), (%1, %3, 4), (%%edx, %3, 4))
3302
SIMPLE_CPY((%0, %2, 4), (%%eax, %2, 4), (%1, %3, 4), (%%edx, %3, 4))
3265
						"leal (%%eax,%2,4), %%eax	\n\t"
3303
						"leal (%%eax,%2,4), %%eax	\n\t"
3266
						"leal (%%edx,%3,4), %%edx	\n\t"
3304
						"leal (%%edx,%3,4), %%edx	\n\t"
3267
SIMPLE_CPY((%%eax, %2), (%%eax, %2, 2), (%%edx, %3), (%%edx, %3, 2))
3305
SIMPLE_CPY((%%eax, %2), (%%eax, %2, 2), (%%edx, %3), (%%edx, %3, 2))
3306
#endif
3268
3307
3269
						: : "r" (src),
3308
						: : "r" (src),
3270
						"r" (dst),
3309
						"r" (dst),
3271
						"r" (srcStride),
3310
						"r" (srcStride),
3311
#ifdef __PIC__
3312
						"m" (dstStride)
3313
#else
3272
						"r" (dstStride)
3314
						"r" (dstStride)
3315
#endif
3273
						: "%eax", "%edx"
3316
						: "%eax", "%edx"
3274
					);
3317
					);
3275
#else
3318
#else
(-)work.orig/ffmpeg-0.4.9-pre1/libavcodec/msmpeg4.c (-1 / +1 lines)
Lines 716-722 Link Here
716
       necessitate to modify mpegvideo.c. The problem comes from the
716
       necessitate to modify mpegvideo.c. The problem comes from the
717
       fact they decided to store the quantized DC (which would lead
717
       fact they decided to store the quantized DC (which would lead
718
       to problems if Q could vary !) */
718
       to problems if Q could vary !) */
719
#if defined ARCH_X86 && !defined PIC
719
#if defined ARCH_X86 && !defined __PIC__
720
    asm volatile(
720
    asm volatile(
721
        "movl %3, %%eax		\n\t"
721
        "movl %3, %%eax		\n\t"
722
	"shrl $1, %%eax		\n\t"
722
	"shrl $1, %%eax		\n\t"

Return to bug 67947