PPC: implement MULH() in assembler
authorMåns Rullgård <mans@mansr.com>
Mon, 4 May 2009 17:31:15 +0000 (17:31 +0000)
committerMåns Rullgård <mans@mansr.com>
Mon, 4 May 2009 17:31:15 +0000 (17:31 +0000)
Left to its own devices, gcc calculates the full 64-bit product only to
discard the low 32 bits.  This forces it to do the right thing.

20% faster MP3 decoding on G4.

Originally committed as revision 18737 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/ppc/mathops.h

index adf04cb..2b5a5c4 100644 (file)
     __rt; })
 #endif
 
+#define MULH MULH
+static inline av_const int MULH(int a, int b){
+    int r;
+    __asm__ ("mulhw %0, %1, %2" : "=r"(r) : "r"(a), "r"(b));
+    return r;
+}
+
 #endif /* AVCODEC_PPC_MATHOPS_H */