OSDN Git Service

Revert "get_bits: remove x86 inline asm in A32 bitstream reader"
authorElvis Presley <elvis@e.p>
Thu, 15 Sep 2011 04:01:15 +0000 (06:01 +0200)
committerElvis Presley <elvis@e.p>
Thu, 15 Sep 2011 13:59:04 +0000 (15:59 +0200)
This reverts commit 23ce6e72123a40895baaeefeb27c7c18748bd67e.

libavcodec/get_bits.h

index 96d33b3..3b09dfd 100644 (file)
@@ -201,11 +201,19 @@ static inline void skip_bits_long(GetBitContext *s, int n){
         }                                                               \
     } while (0)
 
+#if ARCH_X86
+#   define SKIP_CACHE(name, gb, num)                            \
+    __asm__("shldl %2, %1, %0          \n\t"                    \
+            "shll  %2, %1              \n\t"                    \
+            : "+r" (name##_cache0), "+r" (name##_cache1)        \
+            : "Ic" ((uint8_t)(num)))
+#else
 #   define SKIP_CACHE(name, gb, num) do {               \
         name##_cache0 <<= (num);                        \
         name##_cache0 |= NEG_USR32(name##_cache1,num);  \
         name##_cache1 <<= (num);                        \
     } while (0)
+#endif
 
 #   define SKIP_COUNTER(name, gb, num) name##_bit_count += (num)