comparison get_bits.h @ 11200:cd8a77473dd1 libavcodec

Move NEG_[US]SR32 macros to mathops.h
author mru
date Wed, 17 Feb 2010 23:58:59 +0000
parents 87bcae769ee7
children 5401fc245167
comparison
equal deleted inserted replaced
11199:f1b38a8588b2 11200:cd8a77473dd1
47 //#define LIBMPEG2_BITSTREAM_READER 47 //#define LIBMPEG2_BITSTREAM_READER
48 //#define A32_BITSTREAM_READER 48 //#define A32_BITSTREAM_READER
49 # endif 49 # endif
50 #endif 50 #endif
51 51
52 #if ARCH_X86
53 // avoid +32 for shift optimization (gcc should do that ...)
54 static inline int32_t NEG_SSR32( int32_t a, int8_t s){
55 __asm__ ("sarl %1, %0\n\t"
56 : "+r" (a)
57 : "ic" ((uint8_t)(-s))
58 );
59 return a;
60 }
61 static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
62 __asm__ ("shrl %1, %0\n\t"
63 : "+r" (a)
64 : "ic" ((uint8_t)(-s))
65 );
66 return a;
67 }
68 #else
69 # define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s)))
70 # define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s)))
71 #endif
72
73 /* bit input */ 52 /* bit input */
74 /* buffer, buffer_end and size_in_bits must be present and used by every reader */ 53 /* buffer, buffer_end and size_in_bits must be present and used by every reader */
75 typedef struct GetBitContext { 54 typedef struct GetBitContext {
76 const uint8_t *buffer, *buffer_end; 55 const uint8_t *buffer, *buffer_end;
77 #ifdef ALT_BITSTREAM_READER 56 #ifdef ALT_BITSTREAM_READER