[FFmpeg-devel] [PATCH] Fix broken osx powerpc build
Jing Yu
jingyu at google.com
Tue Jul 12 08:41:43 EEST 2016
I have tested your patch with LLVM and GCC-4.9.1 on Ubuntu
powerpc64le. Both work.
I don't have the old Apple Power machine though.
On Mon, Jul 11, 2016 at 9:43 PM, Pavel Koshevoy <pkoshevoy at gmail.com> wrote:
> This patch does not apply against current master.
>
> I've attached an alternative patch that works for me on osx ppc.
> I can't test my patch with clang, can someone else do it?
>
> Pavel.
>
>
>
> On 07/11/2016 07:56 PM, Jing Yu wrote:
>>
>> Add #ifdef __APPLE__ to wrap around non-standard assembly code to make it
>> compatible with old platform.
>>
>> Is it ok for trunk?
>> Thanks!
>>
>> ---
>> libavcodec/ppc/asm.S | 4 ++++
>> libavcodec/ppc/fft_altivec.S | 32 ++++++++++++++++++++++++++++++++
>> 2 files changed, 36 insertions(+)
>>
>> diff --git a/libavcodec/ppc/asm.S b/libavcodec/ppc/asm.S
>> index 700aa0d..baf68b0 100644
>> --- a/libavcodec/ppc/asm.S
>> +++ b/libavcodec/ppc/asm.S
>> @@ -53,7 +53,11 @@ L(\name):
>> .endm
>> .macro movrel rd, sym, gp
>> +#ifdef __APPLE__
>> + ld \rd, \sym at got(r2)
>> +#else
>> ld \rd, \sym at got(2)
>> +#endif
>> .endm
>> .macro get_got rd
>> diff --git a/libavcodec/ppc/fft_altivec.S b/libavcodec/ppc/fft_altivec.S
>> index e0149a4..a6e144d 100644
>> --- a/libavcodec/ppc/fft_altivec.S
>> +++ b/libavcodec/ppc/fft_altivec.S
>> @@ -354,14 +354,24 @@ fft_data:
>> .macro fft_calc interleave
>> extfunc ff_fft_calc\interleave\()_altivec
>> mflr r0
>> +#ifdef __APPLE__
>> + stp r0, 2*PS(r1)
>> + stpu r1, -(160+16*PS)(r1)
>> +#else
>> stp r0, 2*PS(1)
>> stpu r1, -(160+16*PS)(1)
>> +#endif
>> get_got r11
>> addi r6, r1, 16*PS
>> stvm r6, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29
>> mfvrsave r0
>> +#ifdef __APPLE__
>> + stw r0, 15*PS(r1)
>> + li r6, 0xfffffffc
>> +#else
>> stw r0, 15*PS(1)
>> li r6, -4 #0xfffffffc
>> +#endif
>> mtvrsave r6
>> movrel r6, fft_data, r11
>> @@ -372,7 +382,11 @@ extfunc ff_fft_calc\interleave\()_altivec
>> movrel r12, X(ff_cos_tabs), r11
>> movrel r6, fft_dispatch_tab\interleave\()_altivec, r11
>> +#ifdef __APPLE__
>> + lwz r3, 0(r3)
>> +#else
>> lwz r3, 0(3)
>> +#endif
>> subi r3, r3, 2
>> slwi r3, r3, 2+ARCH_PPC64
>> lpx r3, r3, r6
>> @@ -382,10 +396,19 @@ extfunc ff_fft_calc\interleave\()_altivec
>> addi r6, r1, 16*PS
>> lvm r6, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29
>> +#ifdef __APPLE__
>> + lwz r6, 15*PS(r1)
>> +#else
>> lwz r6, 15*PS(1)
>> +#endif
>> mtvrsave r6
>> +#ifdef __APPLE__
>> + lp r1, 0(r1)
>> + lp r0, 2*PS(r1)
>> +#else
>> lp r1, 0(1)
>> lp r0, 2*PS(1)
>> +#endif
>> mtlr r0
>> blr
>> .endm
>> @@ -393,15 +416,24 @@ extfunc ff_fft_calc\interleave\()_altivec
>> .macro DECL_FFT suffix, bits, n, n2, n4
>> fft\n\suffix\()_altivec:
>> mflr r0
>> +#ifdef __APPLE__
>> + stp r0,PS*(\bits-3)(r1)
>> +#else
>> stp r0,PS*(\bits-3)(1)
>> +#endif
>> bl fft\n2\()_altivec
>> addi2 r3,\n*4
>> bl fft\n4\()_altivec
>> addi2 r3,\n*2
>> bl fft\n4\()_altivec
>> addi2 r3,\n*-6
>> +#ifdef __APPLE__
>> + lp r0,PS*(\bits-3)(r1)
>> + lp r4,\bits*PS(r12)
>> +#else
>> lp r0,PS*(\bits-3)(1)
>> lp r4,\bits*PS(12)
>> +#endif
>> mtlr r0
>> li r5,\n/16
>> b fft_pass\suffix\()_altivec
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list