Skip to content
This repository
Browse code

[ffmpeg] - backport "Fix compilation on ARM with android gcc 4.7" fro…

…m ffmpeg - fixes compilation on gcc 4.8 with ndk r9
  • Loading branch information...
commit 1c7def4212fb21e4e10b50c25607e4c2c78abf7d 1 parent 076844f
Memphiz authored August 14, 2013
74  lib/ffmpeg/libavcodec/arm/dca.h
@@ -34,46 +34,44 @@ static inline int decode_blockcodes(int code1, int code2, int levels,
34 34
 {
35 35
     int v0, v1, v2, v3, v4, v5;
36 36
 
37  
-    __asm__ ("smmul   %8,  %14, %18           \n"
38  
-             "smmul   %11, %15, %18           \n"
39  
-             "smlabb  %14, %8,  %17, %14      \n"
40  
-             "smlabb  %15, %11, %17, %15      \n"
41  
-             "smmul   %9,  %8,  %18           \n"
42  
-             "smmul   %12, %11, %18           \n"
43  
-             "sub     %14, %14, %16, lsr #1   \n"
44  
-             "sub     %15, %15, %16, lsr #1   \n"
45  
-             "smlabb  %8,  %9,  %17, %8       \n"
46  
-             "smlabb  %11, %12, %17, %11      \n"
47  
-             "smmul   %10, %9,  %18           \n"
48  
-             "smmul   %13, %12, %18           \n"
49  
-             "str     %14, %0                 \n"
50  
-             "str     %15, %4                 \n"
51  
-             "sub     %8,  %8,  %16, lsr #1   \n"
52  
-             "sub     %11, %11, %16, lsr #1   \n"
53  
-             "smlabb  %9,  %10, %17, %9       \n"
54  
-             "smlabb  %12, %13, %17, %12      \n"
55  
-             "smmul   %14, %10, %18           \n"
56  
-             "smmul   %15, %13, %18           \n"
57  
-             "str     %8,  %1                 \n"
58  
-             "str     %11, %5                 \n"
59  
-             "sub     %9,  %9,  %16, lsr #1   \n"
60  
-             "sub     %12, %12, %16, lsr #1   \n"
61  
-             "smlabb  %10, %14, %17, %10      \n"
62  
-             "smlabb  %13, %15, %17, %13      \n"
63  
-             "str     %9,  %2                 \n"
64  
-             "str     %12, %6                 \n"
65  
-             "sub     %10, %10, %16, lsr #1   \n"
66  
-             "sub     %13, %13, %16, lsr #1   \n"
67  
-             "str     %10, %3                 \n"
68  
-             "str     %13, %7                 \n"
69  
-             : "=m"(values[0]), "=m"(values[1]),
70  
-               "=m"(values[2]), "=m"(values[3]),
71  
-               "=m"(values[4]), "=m"(values[5]),
72  
-               "=m"(values[6]), "=m"(values[7]),
73  
-               "=&r"(v0), "=&r"(v1), "=&r"(v2),
  37
+    __asm__ ("smmul   %0,  %6,  %10           \n"
  38
+             "smmul   %3,  %7,  %10           \n"
  39
+             "smlabb  %6,  %0,  %9,  %6       \n"
  40
+             "smlabb  %7,  %3,  %9,  %7       \n"
  41
+             "smmul   %1,  %0,  %10           \n"
  42
+             "smmul   %4,  %3,  %10           \n"
  43
+             "sub     %6,  %6,  %8,  lsr #1   \n"
  44
+             "sub     %7,  %7,  %8,  lsr #1   \n"
  45
+             "smlabb  %0,  %1,  %9,  %0       \n"
  46
+             "smlabb  %3,  %4,  %9,  %3       \n"
  47
+             "smmul   %2,  %1,  %10           \n"
  48
+             "smmul   %5,  %4,  %10           \n"
  49
+             "str     %6,  [%11, #0]          \n"
  50
+             "str     %7,  [%11, #16]         \n"
  51
+             "sub     %0,  %0,  %8,  lsr #1   \n"
  52
+             "sub     %3,  %3,  %8,  lsr #1   \n"
  53
+             "smlabb  %1,  %2,  %9,  %1       \n"
  54
+             "smlabb  %4,  %5,  %9,  %4       \n"
  55
+             "smmul   %6,  %2,  %10           \n"
  56
+             "smmul   %7,  %5,  %10           \n"
  57
+             "str     %0,  [%11, #4]          \n"
  58
+             "str     %3,  [%11, #20]         \n"
  59
+             "sub     %1,  %1,  %8,  lsr #1   \n"
  60
+             "sub     %4,  %4,  %8,  lsr #1   \n"
  61
+             "smlabb  %2,  %6,  %9,  %2       \n"
  62
+             "smlabb  %5,  %7,  %9,  %5       \n"
  63
+             "str     %1,  [%11, #8]          \n"
  64
+             "str     %4,  [%11, #24]         \n"
  65
+             "sub     %2,  %2,  %8,  lsr #1   \n"
  66
+             "sub     %5,  %5,  %8,  lsr #1   \n"
  67
+             "str     %2,  [%11, #12]         \n"
  68
+             "str     %5,  [%11, #28]         \n"
  69
+             : "=&r"(v0), "=&r"(v1), "=&r"(v2),
74 70
                "=&r"(v3), "=&r"(v4), "=&r"(v5),
75 71
                "+&r"(code1), "+&r"(code2)
76  
-             : "r"(levels - 1), "r"(-levels), "r"(ff_inverse[levels]));
  72
+             : "r"(levels - 1), "r"(-levels),
  73
+               "r"(ff_inverse[levels]), "r"(values)
  74
+             : "memory");
77 75
 
78 76
     return code1 | code2;
79 77
 }
110  lib/ffmpeg/patches/0055-ffmpeg-backport-fix-compilation-droid-gcc-4-7.patch
... ...
@@ -0,0 +1,110 @@
  1
+From 8067f55edf3719182aed6e5b57b7863889f80218 Mon Sep 17 00:00:00 2001
  2
+From: =?utf8?q?Reimar=20D=C3=B6ffinger?= <Reimar.Doeffinger@gmx.de>
  3
+Date: Sat, 16 Mar 2013 13:36:20 +0100
  4
+Subject: [PATCH] Fix compilation on ARM with android gcc 4.7
  5
+MIME-Version: 1.0
  6
+Content-Type: text/plain; charset=utf8
  7
+Content-Transfer-Encoding: 8bit
  8
+
  9
+With the current code it fails due to running out
  10
+of registers.
  11
+So code the store offsets manually into the assembler
  12
+instead.
  13
+Passes "make fate-dts".
  14
+
  15
+Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
  16
+---
  17
+ libavcodec/arm/dca.h |   74 ++++++++++++++++++++++++--------------------------
  18
+ 1 file changed, 36 insertions(+), 38 deletions(-)
  19
+
  20
+diff --git a/libavcodec/arm/dca.h b/libavcodec/arm/dca.h
  21
+index 2cfd18a..431b62e 100644
  22
+--- a/libavcodec/arm/dca.h
  23
++++ b/libavcodec/arm/dca.h
  24
+@@ -34,46 +34,44 @@ static inline int decode_blockcodes(int code1, int code2, int levels,
  25
+ {
  26
+     int v0, v1, v2, v3, v4, v5;
  27
+ 
  28
+-    __asm__ ("smmul   %8,  %14, %18           \n"
  29
+-             "smmul   %11, %15, %18           \n"
  30
+-             "smlabb  %14, %8,  %17, %14      \n"
  31
+-             "smlabb  %15, %11, %17, %15      \n"
  32
+-             "smmul   %9,  %8,  %18           \n"
  33
+-             "smmul   %12, %11, %18           \n"
  34
+-             "sub     %14, %14, %16, lsr #1   \n"
  35
+-             "sub     %15, %15, %16, lsr #1   \n"
  36
+-             "smlabb  %8,  %9,  %17, %8       \n"
  37
+-             "smlabb  %11, %12, %17, %11      \n"
  38
+-             "smmul   %10, %9,  %18           \n"
  39
+-             "smmul   %13, %12, %18           \n"
  40
+-             "str     %14, %0                 \n"
  41
+-             "str     %15, %4                 \n"
  42
+-             "sub     %8,  %8,  %16, lsr #1   \n"
  43
+-             "sub     %11, %11, %16, lsr #1   \n"
  44
+-             "smlabb  %9,  %10, %17, %9       \n"
  45
+-             "smlabb  %12, %13, %17, %12      \n"
  46
+-             "smmul   %14, %10, %18           \n"
  47
+-             "smmul   %15, %13, %18           \n"
  48
+-             "str     %8,  %1                 \n"
  49
+-             "str     %11, %5                 \n"
  50
+-             "sub     %9,  %9,  %16, lsr #1   \n"
  51
+-             "sub     %12, %12, %16, lsr #1   \n"
  52
+-             "smlabb  %10, %14, %17, %10      \n"
  53
+-             "smlabb  %13, %15, %17, %13      \n"
  54
+-             "str     %9,  %2                 \n"
  55
+-             "str     %12, %6                 \n"
  56
+-             "sub     %10, %10, %16, lsr #1   \n"
  57
+-             "sub     %13, %13, %16, lsr #1   \n"
  58
+-             "str     %10, %3                 \n"
  59
+-             "str     %13, %7                 \n"
  60
+-             : "=m"(values[0]), "=m"(values[1]),
  61
+-               "=m"(values[2]), "=m"(values[3]),
  62
+-               "=m"(values[4]), "=m"(values[5]),
  63
+-               "=m"(values[6]), "=m"(values[7]),
  64
+-               "=&r"(v0), "=&r"(v1), "=&r"(v2),
  65
++    __asm__ ("smmul   %0,  %6,  %10           \n"
  66
++             "smmul   %3,  %7,  %10           \n"
  67
++             "smlabb  %6,  %0,  %9,  %6       \n"
  68
++             "smlabb  %7,  %3,  %9,  %7       \n"
  69
++             "smmul   %1,  %0,  %10           \n"
  70
++             "smmul   %4,  %3,  %10           \n"
  71
++             "sub     %6,  %6,  %8,  lsr #1   \n"
  72
++             "sub     %7,  %7,  %8,  lsr #1   \n"
  73
++             "smlabb  %0,  %1,  %9,  %0       \n"
  74
++             "smlabb  %3,  %4,  %9,  %3       \n"
  75
++             "smmul   %2,  %1,  %10           \n"
  76
++             "smmul   %5,  %4,  %10           \n"
  77
++             "str     %6,  [%11, #0]          \n"
  78
++             "str     %7,  [%11, #16]         \n"
  79
++             "sub     %0,  %0,  %8,  lsr #1   \n"
  80
++             "sub     %3,  %3,  %8,  lsr #1   \n"
  81
++             "smlabb  %1,  %2,  %9,  %1       \n"
  82
++             "smlabb  %4,  %5,  %9,  %4       \n"
  83
++             "smmul   %6,  %2,  %10           \n"
  84
++             "smmul   %7,  %5,  %10           \n"
  85
++             "str     %0,  [%11, #4]          \n"
  86
++             "str     %3,  [%11, #20]         \n"
  87
++             "sub     %1,  %1,  %8,  lsr #1   \n"
  88
++             "sub     %4,  %4,  %8,  lsr #1   \n"
  89
++             "smlabb  %2,  %6,  %9,  %2       \n"
  90
++             "smlabb  %5,  %7,  %9,  %5       \n"
  91
++             "str     %1,  [%11, #8]          \n"
  92
++             "str     %4,  [%11, #24]         \n"
  93
++             "sub     %2,  %2,  %8,  lsr #1   \n"
  94
++             "sub     %5,  %5,  %8,  lsr #1   \n"
  95
++             "str     %2,  [%11, #12]         \n"
  96
++             "str     %5,  [%11, #28]         \n"
  97
++             : "=&r"(v0), "=&r"(v1), "=&r"(v2),
  98
+                "=&r"(v3), "=&r"(v4), "=&r"(v5),
  99
+                "+&r"(code1), "+&r"(code2)
  100
+-             : "r"(levels - 1), "r"(-levels), "r"(ff_inverse[levels]));
  101
++             : "r"(levels - 1), "r"(-levels),
  102
++               "r"(ff_inverse[levels]), "r"(values)
  103
++             : "memory");
  104
+ 
  105
+     return code1 | code2;
  106
+ }
  107
+-- 
  108
+1.7.10.4
  109
+
  110
+

0 notes on commit 1c7def4

Please sign in to comment.
Something went wrong with that request. Please try again.