Browse Source

Move NEG_[US]SR32 macros to mathops.h

Originally committed as revision 21873 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.6
Måns Rullgård 15 years ago
parent
commit
5e46be96f8
3 changed files with 27 additions and 21 deletions
  1. +0
    -21
      libavcodec/get_bits.h
  2. +8
    -0
      libavcodec/mathops.h
  3. +19
    -0
      libavcodec/x86/mathops.h

+ 0
- 21
libavcodec/get_bits.h View File

@@ -49,27 +49,6 @@
# endif
#endif

#if ARCH_X86
// avoid +32 for shift optimization (gcc should do that ...)
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
__asm__ ("sarl %1, %0\n\t"
: "+r" (a)
: "ic" ((uint8_t)(-s))
);
return a;
}
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
__asm__ ("shrl %1, %0\n\t"
: "+r" (a)
: "ic" ((uint8_t)(-s))
);
return a;
}
#else
# define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s)))
# define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s)))
#endif

/* bit input */
/* buffer, buffer_end and size_in_bits must be present and used by every reader */
typedef struct GetBitContext {


+ 8
- 0
libavcodec/mathops.h View File

@@ -131,5 +131,13 @@ if ((y) < (x)) {\
}
#endif

#ifndef NEG_SSR32
# define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s)))
#endif

#ifndef NEG_USR32
# define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s)))
#endif

#endif /* AVCODEC_MATHOPS_H */


+ 19
- 0
libavcodec/x86/mathops.h View File

@@ -78,4 +78,23 @@ __asm__ volatile(\
);
#endif

// avoid +32 for shift optimization (gcc should do that ...)
#define NEG_SSR32 NEG_SSR32
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
__asm__ ("sarl %1, %0\n\t"
: "+r" (a)
: "ic" ((uint8_t)(-s))
);
return a;
}

#define NEG_USR32 NEG_USR32
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
__asm__ ("shrl %1, %0\n\t"
: "+r" (a)
: "ic" ((uint8_t)(-s))
);
return a;
}

#endif /* AVCODEC_X86_MATHOPS_H */

Loading…
Cancel
Save