Commit ab6c65f6 authored by Brian Foley's avatar Brian Foley Committed by Michael Niedermayer
Browse files

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
parent 004c18ee
......@@ -25,6 +25,7 @@ make="make"
strip="strip"
cpu=`uname -m`
mmx="default"
altivec="default"
case "$cpu" in
i386|i486|i586|i686|i86pc|BePC)
cpu="x86"
......@@ -161,6 +162,8 @@ for opt do
;;
--disable-mmx) mmx="no"
;;
--disable-altivec) altivec="no"
;;
--enable-gprof) gprof="yes"
;;
--disable-v4l) v4l="no"
......@@ -201,6 +204,27 @@ if test $mmx = "default"; then
fi
fi
# Can only do AltiVec on PowerPC
if test $altivec = "default"; then
if test $cpu = "powerpc"; then
altivec="yes"
else
altivec="no"
fi
fi
# See does our compiler support Motorola AltiVec C API
if test $altivec = "yes"; then
cat > $TMPC << EOF
int main(void) {
vector signed int v1, v2, v3;
v1 = vec_add(v2,v3);
return 0;
}
EOF
$cc -o $TMPO $TMPC -faltivec 2> /dev/null || altivec="no"
fi
# Checking for CFLAGS
if test -z "$CFLAGS"; then
CFLAGS="-O3"
......@@ -324,6 +348,7 @@ echo " --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
echo " --extra-libs=ELIBS add ELIBS [$ELIBS]"
echo " --cpu=CPU force cpu to CPU [$cpu]"
echo " --disable-mmx disable mmx usage"
echo " --disable-altivec disable AltiVec usage"
echo " --disable-audio-oss disable OSS audio support [default=no]"
echo " --disable-v4l disable video4linux grabbing [default=no]"
echo " --disable-network disable network support [default=no]"
......@@ -345,6 +370,7 @@ echo "make $make"
echo "CPU $cpu"
echo "Big Endian $bigendian"
echo "MMX enabled $mmx"
echo "AltiVec enabled $altivec"
echo "gprof enabled $gprof"
echo "zlib enabled $zlib"
echo "mp3lame enabled $mp3lame"
......@@ -391,6 +417,10 @@ if test "$mmx" = "yes" ; then
echo "TARGET_MMX=yes" >> config.mak
echo "#define HAVE_MMX 1" >> $TMPH
fi
if test "$altivec" = "yes" ; then
echo "TARGET_ALTIVEC=yes" >> config.mak
echo "#define HAVE_ALTIVEC 1" >> $TMPH
fi
if test "$gprof" = "yes" ; then
echo "TARGET_GPROF=yes" >> config.mak
echo "#define HAVE_GPROF 1" >> $TMPH
......
......@@ -73,6 +73,10 @@ CFLAGS += -Wa,-mpca56 -finline-limit=8000 -fforce-addr -freduce-all-givs
endif
ifeq ($(TARGET_ARCH_POWERPC),yes)
OBJS += ppc/dsputil_ppc.o
endif
ifeq ($(TARGET_ALTIVEC),yes)
CFLAGS += -faltivec
OBJS += ppc/dsputil_altivec.o
endif
......
......@@ -1340,9 +1340,7 @@ void dsputil_init(void)
use_permuted_idct = 0;
#endif
#ifdef ARCH_POWERPC
#ifdef CONFIG_DARWIN
dsputil_init_altivec();
#endif
dsputil_init_ppc();
#endif
#ifdef SIMPLE_IDCT
......
......@@ -167,9 +167,7 @@ void dsputil_init_alpha(void);
#define emms_c()
#define __align8 __attribute__ ((aligned (16)))
#ifdef CONFIG_DARWIN
void dsputil_init_altivec(void);
#endif
void dsputil_init_ppc(void);
#else
......
......@@ -127,15 +127,6 @@ int pix_sum_altivec(UINT8 * pix, int line_size)
return s;
}
void dsputil_init_altivec(void)
{
if (has_altivec()) {
pix_abs16x16 = pix_abs16x16_altivec;
pix_abs8x8 = pix_abs8x8_altivec;
pix_sum = pix_sum_altivec;
}
}
int has_altivec(void)
{
#if CONFIG_DARWIN
......
extern int pix_abs16x16_altivec(uint8_t *pix1, uint8_t *pix2, int line_size);
extern int pix_abs8x8_altivec(uint8_t *pix1, uint8_t *pix2, int line_size);
extern int pix_sum_altivec(UINT8 * pix, int line_size);
extern int has_altivec(void);
#include "../../config.h"
#include "../dsputil.h"
#ifdef HAVE_ALTIVEC
#include "dsputil_altivec.h"
#endif
void dsputil_init_ppc(void)
{
#if HAVE_ALTIVEC
if (has_altivec()) {
pix_abs16x16 = pix_abs16x16_altivec;
pix_abs8x8 = pix_abs8x8_altivec;
pix_sum = pix_sum_altivec;
} else
#endif
{
/* Non-AltiVec PPC optimisations here */
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment