• Mans Rullgard's avatar
    x86: remove FASTDIV inline asm · 5b170c0b
    Mans Rullgard authored
    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: 's avatarMans Rullgard <mans@mansr.com>
    5b170c0b
Name
Last commit
Last update
..
arm Loading commit data...
avr32 Loading commit data...
bfin Loading commit data...
mips Loading commit data...
ppc Loading commit data...
sh4 Loading commit data...
tomi Loading commit data...
x86 Loading commit data...
Makefile Loading commit data...
adler32.c Loading commit data...
adler32.h Loading commit data...
aes.c Loading commit data...
aes.h Loading commit data...
attributes.h Loading commit data...
audio_fifo.c Loading commit data...
audio_fifo.h Loading commit data...
audioconvert.c Loading commit data...
audioconvert.h Loading commit data...
avassert.h Loading commit data...
avstring.c Loading commit data...
avstring.h Loading commit data...
avutil.h Loading commit data...
base64.c Loading commit data...
base64.h Loading commit data...
blowfish.c Loading commit data...
blowfish.h Loading commit data...
bswap.h Loading commit data...
colorspace.h Loading commit data...
common.h Loading commit data...
cpu.c Loading commit data...
cpu.h Loading commit data...
crc.c Loading commit data...
crc.h Loading commit data...
crc_data.h Loading commit data...
des.c Loading commit data...
des.h Loading commit data...
dict.c Loading commit data...
dict.h Loading commit data...
error.c Loading commit data...
error.h Loading commit data...
eval.c Loading commit data...
eval.h Loading commit data...
fifo.c Loading commit data...
fifo.h Loading commit data...
file.c Loading commit data...
file.h Loading commit data...
float_dsp.c Loading commit data...
float_dsp.h Loading commit data...
imgutils.c Loading commit data...
imgutils.h Loading commit data...
internal.h Loading commit data...
intfloat.h Loading commit data...
intfloat_readwrite.c Loading commit data...
intfloat_readwrite.h Loading commit data...
intmath.h Loading commit data...
intreadwrite.h Loading commit data...
inverse.c Loading commit data...
lfg.c Loading commit data...
lfg.h Loading commit data...
libavutil.v Loading commit data...
libm.h Loading commit data...
lls.c Loading commit data...
lls.h Loading commit data...
log.c Loading commit data...
log.h Loading commit data...
lzo.c Loading commit data...
lzo.h Loading commit data...
mathematics.c Loading commit data...
mathematics.h Loading commit data...
md5.c Loading commit data...
md5.h Loading commit data...
mem.c Loading commit data...
mem.h Loading commit data...
opt.c Loading commit data...
opt.h Loading commit data...
parseutils.c Loading commit data...
parseutils.h Loading commit data...
pixdesc.c Loading commit data...
pixdesc.h Loading commit data...
pixfmt.h Loading commit data...
random_seed.c Loading commit data...
random_seed.h Loading commit data...
rational.c Loading commit data...
rational.h Loading commit data...
rc4.c Loading commit data...
rc4.h Loading commit data...
samplefmt.c Loading commit data...
samplefmt.h Loading commit data...
sha.c Loading commit data...
sha.h Loading commit data...
time.c Loading commit data...
time.h Loading commit data...
timer.h Loading commit data...
tree.c Loading commit data...
tree.h Loading commit data...
utils.c Loading commit data...
version.h Loading commit data...
xtea.c Loading commit data...
xtea.h Loading commit data...