x86: remove FASTDIV inline asm
authorMans Rullgard <mans@mansr.com>
Sat, 18 Aug 2012 19:22:10 +0000 (20:22 +0100)
committerMans Rullgard <mans@mansr.com>
Wed, 22 Aug 2012 13:29:10 +0000 (14:29 +0100)
commit5b170c0bea06c5556fe5a74f436c46a88e69e8fc
tree22908d21b178c6b087be2028e3b1f7f415c541c8
parent6fa488678f39fe45abe898fd7ef457849d0a8d99
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>
libavutil/intmath.h
libavutil/x86/intmath.h [deleted file]