Originally committed as revision 898 to svn://svn.ffmpeg.org/ffmpeg/trunk
Brian Foley authored on 2002/09/02 17:48:12... | ... |
@@ -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 |
... | ... |
@@ -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 |
+} |