Browse code

altivec build tidyup patch by (Brian Foley <bfoley at compsoc dot nuigalway dot ie>)

Originally committed as revision 898 to svn://svn.ffmpeg.org/ffmpeg/trunk

Brian Foley authored on 2002/09/02 17:48:12
Showing 7 changed files
... ...
@@ -25,6 +25,7 @@ make="make"
25 25
 strip="strip"
26 26
 cpu=`uname -m`
27 27
 mmx="default"
28
+altivec="default"
28 29
 case "$cpu" in
29 30
   i386|i486|i586|i686|i86pc|BePC)
30 31
     cpu="x86"
... ...
@@ -161,6 +162,8 @@ for opt do
161 161
   ;;
162 162
   --disable-mmx) mmx="no"
163 163
   ;;
164
+  --disable-altivec) altivec="no"
165
+  ;;
164 166
   --enable-gprof) gprof="yes"
165 167
   ;;
166 168
   --disable-v4l) v4l="no"
... ...
@@ -201,6 +204,27 @@ if test $mmx = "default"; then
201 201
     fi
202 202
 fi
203 203
 
204
+# Can only do AltiVec on PowerPC
205
+if test $altivec = "default"; then
206
+    if test $cpu = "powerpc"; then
207
+        altivec="yes"
208
+    else
209
+        altivec="no"
210
+    fi
211
+fi
212
+
213
+# See does our compiler support Motorola AltiVec C API
214
+if test $altivec = "yes"; then
215
+cat > $TMPC << EOF
216
+int main(void) {
217
+    vector signed int v1, v2, v3;
218
+    v1 = vec_add(v2,v3);
219
+    return 0;
220
+}
221
+EOF
222
+$cc -o $TMPO $TMPC -faltivec 2> /dev/null || altivec="no"
223
+fi
224
+
204 225
 # Checking for CFLAGS
205 226
 if test -z "$CFLAGS"; then
206 227
     CFLAGS="-O3"
... ...
@@ -324,6 +348,7 @@ echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
324 324
 echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
325 325
 echo "  --cpu=CPU                force cpu to CPU  [$cpu]"
326 326
 echo "  --disable-mmx            disable mmx usage"
327
+echo "  --disable-altivec        disable AltiVec usage"
327 328
 echo "  --disable-audio-oss      disable OSS audio support [default=no]"
328 329
 echo "  --disable-v4l            disable video4linux grabbing [default=no]"
329 330
 echo "  --disable-network        disable network support [default=no]"
... ...
@@ -345,6 +370,7 @@ echo "make             $make"
345 345
 echo "CPU              $cpu"
346 346
 echo "Big Endian       $bigendian"
347 347
 echo "MMX enabled      $mmx"
348
+echo "AltiVec enabled  $altivec"
348 349
 echo "gprof enabled    $gprof"
349 350
 echo "zlib enabled     $zlib"
350 351
 echo "mp3lame enabled  $mp3lame"
... ...
@@ -391,6 +417,10 @@ if test "$mmx" = "yes" ; then
391 391
   echo "TARGET_MMX=yes" >> config.mak
392 392
   echo "#define HAVE_MMX 1" >> $TMPH
393 393
 fi
394
+if test "$altivec" = "yes" ; then
395
+  echo "TARGET_ALTIVEC=yes" >> config.mak
396
+  echo "#define HAVE_ALTIVEC 1" >> $TMPH
397
+fi
394 398
 if test "$gprof" = "yes" ; then
395 399
   echo "TARGET_GPROF=yes" >> config.mak
396 400
   echo "#define HAVE_GPROF 1" >> $TMPH
... ...
@@ -73,6 +73,10 @@ CFLAGS += -Wa,-mpca56 -finline-limit=8000 -fforce-addr -freduce-all-givs
73 73
 endif
74 74
 
75 75
 ifeq ($(TARGET_ARCH_POWERPC),yes)
76
+OBJS += ppc/dsputil_ppc.o
77
+endif
78
+
79
+ifeq ($(TARGET_ALTIVEC),yes)
76 80
 CFLAGS += -faltivec
77 81
 OBJS += ppc/dsputil_altivec.o
78 82
 endif
... ...
@@ -1340,9 +1340,7 @@ void dsputil_init(void)
1340 1340
     use_permuted_idct = 0;
1341 1341
 #endif
1342 1342
 #ifdef ARCH_POWERPC
1343
-#ifdef CONFIG_DARWIN
1344
-    dsputil_init_altivec();
1345
-#endif
1343
+    dsputil_init_ppc();
1346 1344
 #endif
1347 1345
 
1348 1346
 #ifdef SIMPLE_IDCT
... ...
@@ -167,9 +167,7 @@ void dsputil_init_alpha(void);
167 167
 #define emms_c()
168 168
 #define __align8 __attribute__ ((aligned (16)))
169 169
 
170
-#ifdef CONFIG_DARWIN
171
-void dsputil_init_altivec(void);
172
-#endif
170
+void dsputil_init_ppc(void);
173 171
 
174 172
 #else
175 173
 
... ...
@@ -127,15 +127,6 @@ int pix_sum_altivec(UINT8 * pix, int line_size)
127 127
     return s;
128 128
 }
129 129
 
130
-void dsputil_init_altivec(void)
131
-{
132
-    if (has_altivec()) {
133
-        pix_abs16x16 = pix_abs16x16_altivec;
134
-        pix_abs8x8 = pix_abs8x8_altivec;
135
-        pix_sum = pix_sum_altivec;
136
-    }
137
-}
138
-
139 130
 int has_altivec(void)
140 131
 {
141 132
 #if CONFIG_DARWIN
142 133
new file mode 100644
... ...
@@ -0,0 +1,5 @@
0
+extern int pix_abs16x16_altivec(uint8_t *pix1, uint8_t *pix2, int line_size);
1
+extern int pix_abs8x8_altivec(uint8_t *pix1, uint8_t *pix2, int line_size);
2
+extern int pix_sum_altivec(UINT8 * pix, int line_size);
3
+
4
+extern int has_altivec(void);
0 5
new file mode 100644
... ...
@@ -0,0 +1,20 @@
0
+#include "../../config.h"
1
+#include "../dsputil.h"
2
+
3
+#ifdef HAVE_ALTIVEC
4
+#include "dsputil_altivec.h"
5
+#endif
6
+
7
+void dsputil_init_ppc(void)
8
+{
9
+#if HAVE_ALTIVEC
10
+    if (has_altivec()) {
11
+        pix_abs16x16 = pix_abs16x16_altivec;
12
+        pix_abs8x8 = pix_abs8x8_altivec;
13
+        pix_sum = pix_sum_altivec;
14
+    } else
15
+#endif
16
+    {
17
+        /* Non-AltiVec PPC optimisations here */
18
+    }
19
+}