diff options
author | Diego Biurrun <diego@biurrun.de> | 2012-10-11 03:16:05 +0400 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2012-10-11 20:29:36 +0400 |
commit | 9734b8ba56d05e970c353dfd5baafa43fdb08024 (patch) | |
tree | e1f40e82ce4aa2ab7dc081115278057e08ffbbb6 /libavcodec/arm | |
parent | 0a75d1da23b8659ec49391469bb592da12760077 (diff) |
Move avutil tables only used in libavcodec to libavcodec.
Diffstat (limited to 'libavcodec/arm')
-rw-r--r-- | libavcodec/arm/mathops.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libavcodec/arm/mathops.h b/libavcodec/arm/mathops.h index 3803fcde8c..17a687da6a 100644 --- a/libavcodec/arm/mathops.h +++ b/libavcodec/arm/mathops.h @@ -36,6 +36,30 @@ static inline av_const int MULH(int a, int b) __asm__ ("smmul %0, %1, %2" : "=r"(r) : "r"(a), "r"(b)); return r; } + +#define FASTDIV FASTDIV +static av_always_inline av_const int FASTDIV(int a, int b) +{ + int r; + __asm__ ("cmp %2, #2 \n\t" + "ldr %0, [%3, %2, lsl #2] \n\t" + "ite le \n\t" + "lsrle %0, %1, #1 \n\t" + "smmulgt %0, %0, %1 \n\t" + : "=&r"(r) : "r"(a), "r"(b), "r"(ff_inverse) : "cc"); + return r; +} + +#else /* HAVE_ARMV6 */ + +#define FASTDIV FASTDIV +static av_always_inline av_const int FASTDIV(int a, int b) +{ + int r, t; + __asm__ ("umull %1, %0, %2, %3" + : "=&r"(r), "=&r"(t) : "r"(a), "r"(ff_inverse[b])); + return r; +} #endif #define MLS64(d, a, b) MAC64(d, -(a), b) |