-extern const uint32_t ff_inverse[256];
-
-#if defined(ARCH_X86)
-# define FASTDIV(a,b) \
- ({\
- int ret,dmy;\
- asm volatile(\
- "mull %3"\
- :"=d"(ret),"=a"(dmy)\
- :"1"(a),"g"(ff_inverse[b])\
- );\
- ret;\
- })
-#elif defined(HAVE_ARMV6)
-static inline av_const int FASTDIV(int a, int b)
-{
- int r;
- asm volatile("cmp %2, #0 \n\t"
- "smmul %0, %1, %2 \n\t"
- "rsblt %0, %0, #0 \n\t"
- : "=r"(r) : "r"(a), "r"(ff_inverse[b]));
- return r;
-}
-#elif defined(ARCH_ARMV4L)
-# define FASTDIV(a,b) \
- ({\
- int ret,dmy;\
- asm volatile(\
- "umull %1, %0, %2, %3"\
- :"=&r"(ret),"=&r"(dmy)\
- :"r"(a),"r"(ff_inverse[b])\
- );\
- ret;\
- })
-#elif defined(CONFIG_FASTDIV)
-# define FASTDIV(a,b) ((uint32_t)((((uint64_t)a)*ff_inverse[b])>>32))
-#else
-# define FASTDIV(a,b) ((a)/(b))
-#endif
-