[FFmpeg-devel] [PATCH] forgotten "enable ppc64" for arch == ppc64
Måns Rullgård
mans
Tue May 26 00:11:22 CEST 2009
Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
> On Mon, May 25, 2009 at 08:10:05PM +0100, M?ns Rullg?rd wrote:
>> Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
>>
>> > Hello,
>> > I noticed that on the FATE ppc64 machine HAVE_PPC64 is 0.
>> > This I think should fix it, though I am not sure how it is _supposed_
>> > to behave:
>> > Index: configure
>> > ===================================================================
>> > --- configure (revision 18938)
>> > +++ configure (working copy)
>> > @@ -1516,6 +1516,7 @@
>> > arch="ppc"
>> > enable fast_64bit
>> > enable fast_unaligned
>> > + enable ppc64
>> > ;;
>> > s390|s390x)
>> > arch="s390"
>> >
>> > It seems quite messed-up still, because the CPU check does enable ppc64
>> > for
>> > G5|g5|970|ppc970|PowerPC970|power4*|Power4*|Cell|CELL|cell
>> > but doesn't seem to set "enable fast_64bit" for those??
>>
>> HAVE_PPC64 should be changed to ARCH_PPC64, and the subarch variable
>> in configure set accordingly. This and fast_64bit should be set in
>> $arch handling, not $cpu.
>
> not possible, $arch is handled before $cpu and $cpu enables ppc64.
> Still I think attached patch might work (test is still running).
>
> Index: configure
> ===================================================================
> --- configure (revision 18945)
> +++ configure (working copy)
> @@ -833,6 +833,7 @@
> mips64
> parisc
> ppc
> + ppc64
> s390
> sh4
> sparc
> @@ -906,7 +907,6 @@
> mkstemp
> pld
> posix_memalign
> - ppc64
> round
> roundf
> sdl
Yes.
> @@ -1514,7 +1514,7 @@
> ;;
> ppc64)
> arch="ppc"
> - enable fast_64bit
> + subarch="ppc64"
> enable fast_unaligned
> ;;
Leave "enable fast_64bit" there.
> s390|s390x)
> @@ -1808,12 +1808,13 @@
> G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
> add_cflags -mcpu=970 -mpowerpc-gfxopt -mpowerpc64
> warn_altivec disabled PPC970
> - enable ppc64
> + subarch="ppc64"
> ;;
> Cell|CELL|cell)
> add_cflags -mcpu=cell
> warn_altivec disabled Cell
> - enable ppc64 ldbrx
> + subarch="ppc64"
> + enable ldbrx
> ;;
Remove all ppc64 manipulations here.
> # targets that do NOT support conditional mov (cmov)
> i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
> @@ -1921,6 +1922,8 @@
> enabled ppc && check_asm ppc4xx '"maclhw r10, r11, r12"'
> enabled ppc && check_asm xform_asm '"lwzx 0, %y0" :: "Z"(*(int*)0)'
>
> +enabled ppc64 && enable fast_64bit
> +
Drop that line.
> # check for SIMD availability
>
> # AltiVec flags: The FSF version of GCC differs from the Apple version
> Index: libavcodec/ppc/mathops.h
> ===================================================================
> --- libavcodec/ppc/mathops.h (revision 18945)
> +++ libavcodec/ppc/mathops.h (working copy)
> @@ -44,7 +44,7 @@
> return r;
> }
>
> -#if !HAVE_PPC64
> +#if !ARCH_PPC64
> static inline av_const int64_t MAC64(int64_t d, int a, int b)
> {
> union { uint64_t x; unsigned hl[2]; } x = { d };
> Index: libavcodec/ppc/dsputil_ppc.h
> ===================================================================
> --- libavcodec/ppc/dsputil_ppc.h (revision 18945)
> +++ libavcodec/ppc/dsputil_ppc.h (working copy)
> @@ -27,7 +27,7 @@
> void powerpc_display_perf_report(void);
> /* the 604* have 2, the G3* have 4, the G4s have 6,
> and the G5 are completely different (they MUST use
> - HAVE_PPC64, and let's hope all future 64 bis PPC
> + ARCH_PPC64, and let's hope all future 64 bis PPC
> will use the same PMCs... */
> #define POWERPC_NUM_PMC_ENABLED 6
> /* if you add to the enum below, also add to the perfname array
> @@ -70,7 +70,7 @@
> };
> extern unsigned long long perfdata[POWERPC_NUM_PMC_ENABLED][powerpc_perf_total][powerpc_data_total];
>
> -#if !HAVE_PPC64
> +#if !ARCH_PPC64
> #define POWERP_PMC_DATATYPE unsigned long
> #define POWERPC_GET_PMC1(a) __asm__ volatile("mfspr %0, 937" : "=r" (a))
> #define POWERPC_GET_PMC2(a) __asm__ volatile("mfspr %0, 938" : "=r" (a))
> @@ -88,7 +88,7 @@
> #define POWERPC_GET_PMC5(a) do {} while (0)
> #define POWERPC_GET_PMC6(a) do {} while (0)
> #endif
> -#else /* HAVE_PPC64 */
> +#else /* ARCH_PPC64 */
> #define POWERP_PMC_DATATYPE unsigned long long
> #define POWERPC_GET_PMC1(a) __asm__ volatile("mfspr %0, 771" : "=r" (a))
> #define POWERPC_GET_PMC2(a) __asm__ volatile("mfspr %0, 772" : "=r" (a))
> @@ -106,7 +106,7 @@
> #define POWERPC_GET_PMC5(a) do {} while (0)
> #define POWERPC_GET_PMC6(a) do {} while (0)
> #endif
> -#endif /* HAVE_PPC64 */
> +#endif /* ARCH_PPC64 */
> #define POWERPC_PERF_DECLARE(a, cond) \
> POWERP_PMC_DATATYPE \
> pmc_start[POWERPC_NUM_PMC_ENABLED], \
These seem to be the only uses of HAVE_PPC64, so that looks OK.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list