[Ffmpeg-devel] ARCH_X86 vs ARCH_X86_32 vs ARCH_X86_64
Diego Biurrun
diego
Mon Oct 16 23:14:05 CEST 2006
On Mon, Oct 16, 2006 at 11:04:19PM +0200, Diego Biurrun wrote:
> On Mon, Oct 16, 2006 at 11:00:59PM +0200, Diego Biurrun wrote:
> > On Sun, Oct 08, 2006 at 11:55:55PM +0200, Diego Biurrun wrote:
> > > I'd like to introduce a define that encompasses both x86 and x86_64 to
> > > simplify statements like
> > >
> > > #if defined(ARCH_X86) || defined(ARCH_X86_64)
> > >
> > > of which we have tons in the code and be able to use it in the Makefiles
> > > where or expressions are troublesome.
> > >
> > > My first idea was to rename ARCH_X86 --> ARCH_X86_32 and use ARCH_X86
> > > for the general case. It seems like the cleanest and most
> > > straightforward solution to me, but I'm getting second thoughts. I'm
> > > afraid that ARCH_X86 semantics are kind of set in stone through years of
> > > usage (in autoconf as well).
> >
> > OK, here is a first patch that introduces ARCH_X86_32. Testing welcome.
> >
> > --- libavcodec/cabac.h (revision 6713)
> > +++ libavcodec/cabac.h (working copy)
> > @@ -362,7 +362,7 @@
> >
> > static int always_inline get_cabac_inline(CABACContext *c, uint8_t * const state){
> > //FIXME gcc generates duplicate load/stores for c->low and c->range
> > -#if defined(ARCH_X86) && !(defined(PIC) && defined(__GNUC__))
> > +#if defined(ARCH_X86_32) && !(defined(PIC) && defined(__GNUC__))
> > int bit;
> >
> > #define LOW "0"
> > --- libavcodec/mathops.h (revision 6713)
> > +++ libavcodec/mathops.h (working copy)
> > @@ -22,7 +22,7 @@
> > #ifndef MATHOPS_H
> > #define MATHOPS_H
> >
> > -#ifdef ARCH_X86
> > +#ifdef ARCH_X86_32
> >
> > #include "i386/mathops.h"
> >
> > Index: libavutil/internal.h
> > ===================================================================
> > --- libavutil/internal.h (revision 6713)
> > +++ libavutil/internal.h (working copy)
> > @@ -217,7 +217,7 @@
> > static always_inline long int lrintf(float x)
> > {
> > #ifdef __MINGW32__
> > -# ifdef ARCH_X86
> > +# ifdef ARCH_X86_32
> > int32_t i;
> > asm volatile(
> > "fistpl %0\n\t"
> > --- libavutil/common.h (revision 6713)
> > +++ libavutil/common.h (working copy)
> > @@ -344,7 +344,7 @@
> > );
> > return (d << 32) | (a & 0xffffffff);
> > }
> > -#elif defined(ARCH_X86)
> > +#elif defined(ARCH_X86_32)
> > static inline long long read_time(void)
> > {
> > long long l;
>
> Note: I suspect that most or all of these conditions are bogus and might
> well work on x86_64 as well. Somebody please replace them all by
> ARCH_X86_64 and test that as well.
And here is the corresponding patch for MPlayer, testing on x86_64 very
welcome as well.
Diego
-------------- next part --------------
Index: configure
===================================================================
--- configure (revision 20277)
+++ configure (working copy)
@@ -879,8 +879,10 @@
case "$host_arch" in
i[3-9]86|x86|x86pc|k5|k6|k6-2|k6-3|pentium*|athlon*|i586-i686)
- _def_arch="#define ARCH_X86 1"
- _target_arch="TARGET_ARCH_X86 = yes"
+ _def_arch_x86="#define ARCH_X86 1"
+ _target_arch_x86="TARGET_ARCH_X86 = yes"
+ _def_arch="#define ARCH_X86_32 1"
+ _target_arch="TARGET_ARCH_X86_32 = yes"
case "$pvendor" in
@@ -1102,6 +1104,8 @@
x86_64|amd64)
_def_arch='#define ARCH_X86_64 1'
_target_arch='TARGET_ARCH_X86_64 = yes'
+ _def_arch_x86="#define ARCH_X86 1"
+ _target_arch_x86="TARGET_ARCH_X86 = yes"
iproc='x86_64'
# gcc >= 3.4.0 doesn't support -mcpu, we have to use -mtune instead
@@ -7633,6 +7673,7 @@
# --- Some stuff for autoconfigure ----
$_target_arch
+$_target_arch_x86
$_confwin32
TARGET_CPU=$iproc
TARGET_MMX = $_mmx
@@ -8097,6 +8135,7 @@
$_def_words_endian
$_def_arch
+$_def_arch_x86
/* For the PPC. G5 has the dcbzl when in 64bit mode but G4s and earlier do not
have the instruction. */
More information about the ffmpeg-devel
mailing list