diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2006-10-07 19:14:25 +0000 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2006-10-07 19:14:25 +0000 |
commit | 87ea51e0b5f4c70c549f98a5eab483070a1e07f3 (patch) | |
tree | 5b3e5fdbc4197529a1edabe90320ad9a33d8c828 | |
parent | 104f8c10b8a19080e0c1439e3e689abfcafbfaa9 (diff) | |
download | ffmpeg-87ea51e0b5f4c70c549f98a5eab483070a1e07f3.tar.gz |
fix the dcbz check and move it in configure
Originally committed as revision 6580 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rwxr-xr-x | configure | 22 | ||||
-rw-r--r-- | libavcodec/ppc/dsputil_ppc.c | 4 | ||||
-rw-r--r-- | libavcodec/ppc/dsputil_ppc.h | 11 |
3 files changed, 24 insertions, 13 deletions
@@ -349,6 +349,7 @@ mmx="default" armv5te="default" iwmmxt="default" altivec="default" +dcbzl="no" mmi="default" case "$cpu" in i386|i486|i586|i686|i86pc|BePC) @@ -1139,6 +1140,19 @@ if test "$?" != 0; then die "C compiler test failed." fi +# check for assembler specific support + +if test $cpu = "powerpc"; then +check_cc <<EOF && dcbzl=yes +int main(void) { + register long zero = 0; + char data[1024]; + asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero)); +return 0; +} +EOF +fi + # check for SIMD availability # AltiVec flags: The FSF version of GCC differs from the Apple version @@ -1572,6 +1586,7 @@ if test $cpu = "mips"; then fi if test $cpu = "powerpc"; then echo "AltiVec enabled $altivec" + echo "dcbzl available $dcbzl" fi echo "gprof enabled $gprof" echo "zlib enabled $zlib" @@ -1763,6 +1778,13 @@ if test "$mmi" = "yes" ; then echo "TARGET_MMI=yes" >> config.mak echo "#define HAVE_MMI 1" >> $TMPH fi + +if test "$dcbzl" = "yes" ; then + echo "#define HAVE_DCBZL 1" >> $TMPH +else + echo "#undef HAVE_DCBZL" >> $TMPH +fi + if test "$altivec" = "yes" ; then echo "TARGET_ALTIVEC=yes" >> config.mak echo "#define HAVE_ALTIVEC 1" >> $TMPH diff --git a/libavcodec/ppc/dsputil_ppc.c b/libavcodec/ppc/dsputil_ppc.c index e271a78132..cf1281aa0c 100644 --- a/libavcodec/ppc/dsputil_ppc.c +++ b/libavcodec/ppc/dsputil_ppc.c @@ -175,7 +175,7 @@ POWERPC_PERF_STOP_COUNT(powerpc_clear_blocks_dcbz32, 1); /* same as above, when dcbzl clear a whole 128B cache line i.e. the PPC970 aka G5 */ -#ifndef NO_DCBZL +#ifdef HAVE_DCBZL void clear_blocks_dcbz128_ppc(DCTELEM *blocks) { POWERPC_PERF_DECLARE(powerpc_clear_blocks_dcbz128, 1); @@ -205,7 +205,7 @@ void clear_blocks_dcbz128_ppc(DCTELEM *blocks) } #endif -#ifndef NO_DCBZL +#ifdef HAVE_DCBZL /* check dcbz report how many bytes are set to 0 by dcbz */ /* update 24/06/2003 : replace dcbz by dcbzl to get the intended effect (Apple "fixed" dcbz) diff --git a/libavcodec/ppc/dsputil_ppc.h b/libavcodec/ppc/dsputil_ppc.h index 2d0d4f0c51..ab2b05780f 100644 --- a/libavcodec/ppc/dsputil_ppc.h +++ b/libavcodec/ppc/dsputil_ppc.h @@ -21,17 +21,6 @@ #ifndef _DSPUTIL_PPC_ #define _DSPUTIL_PPC_ -#ifdef CONFIG_DARWIN -/* The Apple assembler shipped w/ gcc-3.3 knows about DCBZL, previous assemblers don't - We assume here that the Darwin GCC is from Apple.... */ -#if (__GNUC__ * 100 + __GNUC_MINOR__ < 303) -#define NO_DCBZL -#endif -#else /* CONFIG_DARWIN */ -/* I don't think any non-Apple assembler knows about DCBZL */ -#define NO_DCBZL -#endif /* CONFIG_DARWIN */ - #ifdef POWERPC_PERFORMANCE_REPORT void powerpc_display_perf_report(void); /* the 604* have 2, the G3* have 4, the G4s have 6, |