summaryrefslogtreecommitdiff
path: root/libavutil/intmath.h
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2012-08-18 20:22:10 +0100
committerMans Rullgard <mans@mansr.com>2012-08-22 14:29:10 +0100
commit5b170c0bea06c5556fe5a74f436c46a88e69e8fc (patch)
tree22908d21b178c6b087be2028e3b1f7f415c541c8 /libavutil/intmath.h
parent6fa488678f39fe45abe898fd7ef457849d0a8d99 (diff)
x86: remove FASTDIV inline asm
GCC 4.3 and later do the right thing with the plain C code. Earlier versions in 32-bit mode generate one extra instruction, needlessly zeroing what would be the high half of the shifted value. At least two gcc configurations miscompile the inline asm in some situations. In 64-bit mode, all gcc versions generate imul r64, r64 followed by shr. On Intel i7 and later, this imul is faster 32-bit mul. On older Intel and all AMD, it is slightly slower. On Atom it is much slower. Considering where the FASTDIV macro is used, any overall negative performance impact of this change should be negligible. If anyone cares, they should file a bug against gcc and get the instruction selection fixed. Signed-off-by: Mans Rullgard <mans@mansr.com>
Diffstat (limited to 'libavutil/intmath.h')
-rw-r--r--libavutil/intmath.h2
1 files changed, 0 insertions, 2 deletions
diff --git a/libavutil/intmath.h b/libavutil/intmath.h
index 1be96da933..ba198c942c 100644
--- a/libavutil/intmath.h
+++ b/libavutil/intmath.h
@@ -34,8 +34,6 @@ extern const uint32_t ff_inverse[257];
#if ARCH_ARM
# include "arm/intmath.h"
-#elif ARCH_X86
-# include "x86/intmath.h"
#endif
#if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4)