]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/arm/vp56_arith.h
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavcodec / arm / vp56_arith.h
index cd02579e5bde2e1ffebd5c3ace3766bb0cf381c6..ece9ac2a6c412025f3839c95c2ec4f95985b4fbe 100644 (file)
 #ifndef AVCODEC_ARM_VP56_ARITH_H
 #define AVCODEC_ARM_VP56_ARITH_H
 
+#if CONFIG_THUMB
+#   define A(x)
+#   define T(x) x
+#else
+#   define A(x) x
+#   define T(x)
+#endif
+
 #if HAVE_ARMV6 && HAVE_INLINE_ASM
 
 #define vp56_rac_get_prob vp56_rac_get_prob_armv6
@@ -32,15 +40,21 @@ static inline int vp56_rac_get_prob_armv6(VP56RangeCoder *c, int pr)
     unsigned bit;
 
     __asm__ ("adds    %3,  %3,  %0           \n"
+             "itt     cs                     \n"
              "cmpcs   %7,  %4                \n"
-             "ldrcsh  %2,  [%4], #2          \n"
+           A("ldrcsh  %2,  [%4], #2          \n")
+           T("ldrhcs  %2,  [%4], #2          \n")
              "rsb     %0,  %6,  #256         \n"
              "smlabb  %0,  %5,  %6,  %0      \n"
+           T("itttt   cs                     \n")
              "rev16cs %2,  %2                \n"
-             "orrcs   %1,  %1,  %2,  lsl %3  \n"
+           T("lslcs   %2,  %2,  %3           \n")
+           T("orrcs   %1,  %1,  %2           \n")
+           A("orrcs   %1,  %1,  %2,  lsl %3  \n")
              "subcs   %3,  %3,  #16          \n"
              "lsr     %0,  %0,  #8           \n"
              "cmp     %1,  %0,  lsl #16      \n"
+             "ittte   ge                     \n"
              "subge   %1,  %1,  %0,  lsl #16 \n"
              "subge   %0,  %5,  %0           \n"
              "movge   %2,  #1                \n"
@@ -64,12 +78,17 @@ static inline int vp56_rac_get_prob_branchy_armv6(VP56RangeCoder *c, int pr)
     unsigned tmp;
 
     __asm__ ("adds    %3,  %3,  %0           \n"
+             "itt     cs                     \n"
              "cmpcs   %7,  %4                \n"
-             "ldrcsh  %2,  [%4], #2          \n"
+           A("ldrcsh  %2,  [%4], #2          \n")
+           T("ldrhcs  %2,  [%4], #2          \n")
              "rsb     %0,  %6,  #256         \n"
              "smlabb  %0,  %5,  %6,  %0      \n"
+           T("itttt   cs                     \n")
              "rev16cs %2,  %2                \n"
-             "orrcs   %1,  %1,  %2,  lsl %3  \n"
+           T("lslcs   %2,  %2,  %3           \n")
+           T("orrcs   %1,  %1,  %2           \n")
+           A("orrcs   %1,  %1,  %2,  lsl %3  \n")
              "subcs   %3,  %3,  #16          \n"
              "lsr     %0,  %0,  #8           \n"
              "lsl     %2,  %0,  #16          \n"