[Ffmpeg-devel] ARCH_X86 vs ARCH_X86_32 vs ARCH_X86_64

Diego Biurrun diego
Mon Oct 16 23:04:19 CEST 2006


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.

Diego




More information about the ffmpeg-devel mailing list