21 #ifndef AVCODEC_ARM_VP56_ARITH_H 
   22 #define AVCODEC_ARM_VP56_ARITH_H 
   32 #if CONFIG_THUMB || defined __clang__ 
   42 #define vp56_rac_get_prob vp56_rac_get_prob_armv6 
   50     __asm__ (
"adds    %3,  %3,  %0           \n" 
   53            L(
"ldrcsh  %2,  [%4], #2          \n")
 
   54            U(
"ldrhcs  %2,  [%4], #2          \n")
 
   56              "smlabb  %0,  %5,  %6,  %0      \n" 
   59            T(
"lslcs   %2,  %2,  %3           \n")
 
   60            T(
"orrcs   %1,  %1,  %2           \n")
 
   61            A(
"orrcs   %1,  %1,  %2,  lsl %3  \n")
 
   62              "subcs   %3,  %3,  #16          \n" 
   64              "cmp     %1,  %0,  lsl #16      \n" 
   66              "subge   %1,  %1,  %0,  lsl #16 \n" 
   72              : 
"r"(high), 
"r"(pr), 
"r"(c->
end - 1),
 
   73                "0"(shift), 
"1"(code_word)
 
   79 #define vp56_rac_get_prob_branchy vp56_rac_get_prob_branchy_armv6 
   80 static inline int vp56_rac_get_prob_branchy_armv6(
VP56RangeCoder *
c, 
int pr)
 
   88     __asm__ (
"adds    %3,  %3,  %0           \n" 
   91            L(
"ldrcsh  %2,  [%4], #2          \n")
 
   92            U(
"ldrhcs  %2,  [%4], #2          \n")
 
   94              "smlabb  %0,  %5,  %6,  %0      \n" 
   97            T(
"lslcs   %2,  %2,  %3           \n")
 
   98            T(
"orrcs   %1,  %1,  %2           \n")
 
   99            A(
"orrcs   %1,  %1,  %2,  lsl %3  \n")
 
  100              "subcs   %3,  %3,  #16          \n" 
  103              : 
"=&r"(low), 
"+&r"(code_word), 
"=&r"(tmp),
 
  105              : 
"r"(high), 
"r"(pr), 
"r"(c->
end - 1), 
"0"(shift)
 
  108     if (code_word >= tmp) {
 
  109         c->
high      = high - low;
 
static int shift(int a, int b)
 
const uint8_t ff_vp56_norm_shift[256]
vp56 specific range coder implementation