summaryrefslogtreecommitdiff
path: root/libavcodec/arm/mathops.h
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2011-06-05 13:44:28 +0100
committerMans Rullgard <mans@mansr.com>2011-06-06 17:33:40 +0100
commit21c65125424ef3dd7e276dea14f8e8ef3292e388 (patch)
treea011a4d55db0de271be4e482df7c1bf94a8f85e9 /libavcodec/arm/mathops.h
parent0018b7f04378a0ff83c6c6d097fc6bdc97212970 (diff)
ARM: remove MUL64 and MAC64 inline asm
Current GCC versions know how to generate these instructions properly and avoiding inline asm gives better code. The MULH function for ARMv5 uses the same instruction and is also not needed any more. The MLS64 macro remains since negating an input would normally not be allowed as it would fail for INT_MIN. In our uses, the inputs never have this value and thus negating is safe. Signed-off-by: Mans Rullgard <mans@mansr.com>
Diffstat (limited to 'libavcodec/arm/mathops.h')
-rw-r--r--libavcodec/arm/mathops.h31
1 files changed, 1 insertions, 30 deletions
diff --git a/libavcodec/arm/mathops.h b/libavcodec/arm/mathops.h
index 3870fce3e2..b27b18f871 100644
--- a/libavcodec/arm/mathops.h
+++ b/libavcodec/arm/mathops.h
@@ -28,45 +28,16 @@
#if HAVE_INLINE_ASM
-#define MULH MULH
-#define MUL64 MUL64
-
#if HAVE_ARMV6
+#define MULH MULH
static inline av_const int MULH(int a, int b)
{
int r;
__asm__ ("smmul %0, %1, %2" : "=r"(r) : "r"(a), "r"(b));
return r;
}
-
-static inline av_const int64_t MUL64(int a, int b)
-{
- int64_t x;
- __asm__ ("smull %Q0, %R0, %1, %2" : "=r"(x) : "r"(a), "r"(b));
- return x;
-}
-#else
-static inline av_const int MULH(int a, int b)
-{
- int lo, hi;
- __asm__ ("smull %0, %1, %2, %3" : "=&r"(lo), "=&r"(hi) : "r"(b), "r"(a));
- return hi;
-}
-
-static inline av_const int64_t MUL64(int a, int b)
-{
- int64_t x;
- __asm__ ("smull %Q0, %R0, %1, %2" : "=&r"(x) : "r"(a), "r"(b));
- return x;
-}
#endif
-static inline av_const int64_t MAC64(int64_t d, int a, int b)
-{
- __asm__ ("smlal %Q0, %R0, %1, %2" : "+r"(d) : "r"(a), "r"(b));
- return d;
-}
-#define MAC64(d, a, b) ((d) = MAC64(d, a, b))
#define MLS64(d, a, b) MAC64(d, -(a), b)
#if HAVE_ARMV5TE