ARM: optimised MUL64
authorMåns Rullgård <mans@mansr.com>
Tue, 15 Jul 2008 19:06:29 +0000 (19:06 +0000)
committerMåns Rullgård <mans@mansr.com>
Tue, 15 Jul 2008 19:06:29 +0000 (19:06 +0000)
Originally committed as revision 14244 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/armv4l/mathops.h

index dd53310..e42cefb 100644 (file)
@@ -48,6 +48,15 @@ static inline av_const int MULH(int a, int b)
      hi; })
 #endif
 
+static inline av_const int64_t MUL64(int a, int b)
+{
+    union { uint64_t x; unsigned hl[2]; } x;
+    asm ("smull %0, %1, %2, %3"
+         : "=r"(x.hl[0]), "=r"(x.hl[1]) : "r"(a), "r"(b));
+    return x.x;
+}
+#define MUL64 MUL64
+
 #if defined(HAVE_ARMV5TE)
 
 /* signed 16x16 -> 32 multiply add accumulate */