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 <pkoshe...@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@got(r2) >> +#else >> ld \rd, \sym@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@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel