[FFmpeg-devel] [PATCH] Restore compatibility with powerpc-apple-darwin9-gcc-4.2.1

pkoshevoy at gmail.com pkoshevoy at gmail.com
Fri Jul 15 07:06:07 EEST 2016


From: Pavel Koshevoy <pkoshevoy at gmail.com>

... and attempt to preserve compatibility with clang that was
introduced in 311a953c76081fca99b872629d248f9d69ebc0c3 (untested)
---
 libavcodec/ppc/asm.S         |  8 +++++++-
 libavcodec/ppc/fft_altivec.S | 26 +++++++++++++++-----------
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/libavcodec/ppc/asm.S b/libavcodec/ppc/asm.S
index 700aa0d..6222b8b 100644
--- a/libavcodec/ppc/asm.S
+++ b/libavcodec/ppc/asm.S
@@ -24,6 +24,12 @@
 #define JOIN(a, b) GLUE(a, b)
 #define X(s) JOIN(EXTERN_ASM, s)
 
+#if __APPLE__
+#define R(n) r ## n
+#else
+#define R(n) n
+#endif
+
 #if ARCH_PPC64
 
 #define PTR  .quad
@@ -53,7 +59,7 @@ L(\name):
 .endm
 
 .macro movrel rd, sym, gp
-    ld      \rd, \sym at got(2)
+    ld      \rd, \sym at got(R(2))
 .endm
 
 .macro get_got rd
diff --git a/libavcodec/ppc/fft_altivec.S b/libavcodec/ppc/fft_altivec.S
index e0149a4..8cd68d6 100644
--- a/libavcodec/ppc/fft_altivec.S
+++ b/libavcodec/ppc/fft_altivec.S
@@ -354,14 +354,18 @@ fft_data:
 .macro fft_calc interleave
 extfunc ff_fft_calc\interleave\()_altivec
     mflr    r0
-    stp     r0, 2*PS(1)
-    stpu    r1, -(160+16*PS)(1)
+    stp     r0, 2*PS(R(1))
+    stpu    r1, -(160+16*PS)(R(1))
     get_got r11
     addi    r6, r1, 16*PS
     stvm    r6, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29
     mfvrsave r0
-    stw     r0, 15*PS(1)
-    li      r6, -4  #0xfffffffc
+    stw     r0, 15*PS(R(1))
+#if __APPLE__
+    li      r6, 0xfffffffc
+#else
+    li      r6, -4
+#endif
     mtvrsave r6
 
     movrel  r6, fft_data, r11
@@ -372,7 +376,7 @@ extfunc ff_fft_calc\interleave\()_altivec
     movrel  r12, X(ff_cos_tabs), r11
 
     movrel  r6, fft_dispatch_tab\interleave\()_altivec, r11
-    lwz     r3, 0(3)
+    lwz     r3, 0(R(3))
     subi    r3, r3, 2
     slwi    r3, r3, 2+ARCH_PPC64
     lpx     r3, r3, r6
@@ -382,10 +386,10 @@ extfunc ff_fft_calc\interleave\()_altivec
 
     addi    r6, r1, 16*PS
     lvm     r6, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29
-    lwz     r6, 15*PS(1)
+    lwz     r6, 15*PS(R(1))
     mtvrsave r6
-    lp      r1, 0(1)
-    lp      r0, 2*PS(1)
+    lp      r1, 0(R(1))
+    lp      r0, 2*PS(R(1))
     mtlr    r0
     blr
 .endm
@@ -393,15 +397,15 @@ extfunc ff_fft_calc\interleave\()_altivec
 .macro DECL_FFT suffix, bits, n, n2, n4
 fft\n\suffix\()_altivec:
     mflr  r0
-    stp   r0,PS*(\bits-3)(1)
+    stp   r0,PS*(\bits-3)(R(1))
     bl    fft\n2\()_altivec
     addi2 r3,\n*4
     bl    fft\n4\()_altivec
     addi2 r3,\n*2
     bl    fft\n4\()_altivec
     addi2 r3,\n*-6
-    lp    r0,PS*(\bits-3)(1)
-    lp    r4,\bits*PS(12)
+    lp    r0,PS*(\bits-3)(R(1))
+    lp    r4,\bits*PS(R(12))
     mtlr  r0
     li    r5,\n/16
     b     fft_pass\suffix\()_altivec
-- 
2.6.6



More information about the ffmpeg-devel mailing list