FFmpeg/libavutil
Giorgio Vazzana d0a34aeedf md5: optimize second round by using 4-operation form of G()
4-operation form is preferred over 3-operation because it breaks a long
dependency chain, thus allowing a superscalar processor to execute more
operations in parallel.
The idea was taken from: http://www.zorinaq.com/papers/md5-amd64.html

AMD Athlon(tm) II X3 450 Processor, x86_64

$ for i in $(seq 1 4); do ./avutil_md5_test2; done
size: 1048576  runs: 1024  time:    5.821 +- 0.019
size: 1048576  runs: 1024  time:    5.822 +- 0.019
size: 1048576  runs: 1024  time:    5.841 +- 0.018
size: 1048576  runs: 1024  time:    5.821 +- 0.018

$ for i in $(seq 1 4); do ./avutil_md5_test2; done
size: 1048576  runs: 1024  time:    5.646 +- 0.019
size: 1048576  runs: 1024  time:    5.646 +- 0.018
size: 1048576  runs: 1024  time:    5.642 +- 0.019
size: 1048576  runs: 1024  time:    5.641 +- 0.019

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-20 04:27:34 +02:00
..
arm Merge commit '1fda184a85178cfd7b98d9e308d18e1ded76a511' 2013-05-05 12:53:50 +02:00
avr32 Replace FFmpeg with Libav in licence headers 2011-03-19 13:33:20 +00:00
bfin Replace FFmpeg with Libav in licence headers 2011-03-19 13:33:20 +00:00
mips mips: optimization for float aac decoder (sbr module) 2013-02-21 22:43:08 +01:00
ppc Merge commit '1fda184a85178cfd7b98d9e308d18e1ded76a511' 2013-05-05 12:53:50 +02:00
sh4 Replace FFmpeg with Libav in licence headers 2011-03-19 13:33:20 +00:00
tomi Merge remote-tracking branch 'qatar/master' 2013-02-20 12:04:50 +01:00
x86 Merge commit '1fda184a85178cfd7b98d9e308d18e1ded76a511' 2013-05-05 12:53:50 +02:00
adler32.c adler32: add comment for the SIMD code 2012-02-04 20:27:02 +01:00
adler32.h Merge remote-tracking branch 'qatar/master' 2011-11-23 04:02:17 +01:00
aes.c lavu: keep context size variables 2012-10-28 14:33:41 +01:00
aes.h lavu: keep context size variables 2012-10-28 14:33:41 +01:00
atomic_gcc.h Merge commit '6327c10702922eabcb1c6170abd3f03d23ce4c51' 2013-03-12 21:39:38 +01:00
atomic_suncc.h atomic: Add include guards to the implementation headers 2013-03-08 20:54:40 +01:00
atomic_win32.h atomic: Add include guards to the implementation headers 2013-03-08 20:54:40 +01:00
atomic.c Merge commit 'f9f6402e9c9ce3642df981b48507df3a2d956f65' 2013-04-03 14:46:48 +02:00
atomic.h Merge commit 'f9f6402e9c9ce3642df981b48507df3a2d956f65' 2013-04-03 14:46:48 +02:00
attributes.h lavu: disable av_uninit for clang 2012-07-16 19:30:13 +00:00
audio_fifo.c Don't include common.h from avutil.h 2012-08-15 22:32:06 +03:00
audio_fifo.h Make audio FIFO read/write contracts more strict 2013-03-23 13:33:45 +01:00
audioconvert.h lavu: rename audioconvert.* to channel_layout.* and deprecate audioconvert.h 2012-11-11 13:35:12 -05:00
avassert.h av_assert should use AV_LOG_PANIC. 2012-12-05 20:25:32 +01:00
avstring.c Merge commit '4be368b504c6f4a03051448728fc62cd0ed506b2' 2013-03-08 15:37:21 +01:00
avstring.h Merge commit 'efa7f4202088c70caba11d7834641bc6eaf41830' 2013-03-08 14:57:41 +01:00
avutil.h Merge commit '40020e171a3549a2c0b65ce6f2649aec868872f2' 2013-05-18 11:17:52 +02:00
base64.c lavu/base64: return meaningful error code. 2013-01-05 15:40:40 +01:00
base64.h lavu/base64: extend/clarify doxy for the base64 API 2013-01-02 23:52:35 +01:00
blowfish.c Merge commit 'cb45553f577f8e0ebfe05d3287e1b6fa5859b967' 2012-12-05 13:34:45 +01:00
blowfish.h blowfish.h: include author attribution 2012-07-04 23:23:17 +02:00
bprint.c lavu: add escape API 2013-03-07 01:12:04 +01:00
bprint.h lavu: add escape API 2013-03-07 01:12:04 +01:00
bswap.h Merge remote-tracking branch 'qatar/master' 2011-12-13 00:39:48 +01:00
buffer_internal.h avutil/buffer: Fix race in pool. 2013-03-18 19:19:22 +01:00
buffer.c lavu: define FF_MEMORY_POISON and use it 2013-05-13 13:52:26 +02:00
buffer.h Merge remote-tracking branch 'qatar/master' 2013-05-01 18:33:30 +02:00
channel_layout.c Call the common 7.1 wide channel layout "7.1(wide)". 2013-02-09 18:14:46 +01:00
channel_layout.h lavu/channel_layout: document the semantic of layouts. 2012-12-02 18:51:04 +01:00
colorspace.h Replace FFmpeg with Libav in licence headers 2011-03-19 13:33:20 +00:00
common.h lavu/common: make FF_CEIL_RSHIFT faster when shift is constant. 2013-05-13 17:53:16 +02:00
cpu.c Merge commit 'cb45553f577f8e0ebfe05d3287e1b6fa5859b967' 2012-12-05 13:34:45 +01:00
cpu.h cpu.h: define AV_CPU_FLAG_MMX2 for libavutil major 52 2012-11-16 15:04:48 +01:00
crc.c Merge commit '62a43d30cc3b9b2460f2c926beb522df32493625' 2013-02-12 13:11:14 +01:00
crc.h Merge remote-tracking branch 'qatar/master' 2012-11-16 13:23:35 +01:00
des.c Merge commit 'cb45553f577f8e0ebfe05d3287e1b6fa5859b967' 2012-12-05 13:34:45 +01:00
des.h Merge remote-tracking branch 'qatar/master' 2011-09-21 21:25:43 +02:00
dict.c lavu/dict: cosmetic realign. 2013-04-13 23:48:26 +02:00
dict.h Merge commit '38c1466ca41c73c7ce347da702362cb69c151716' 2013-01-26 13:34:30 +01:00
error.c Merge commit 'c3e15f7b39aac2012f09ee4ca86d2bc674ffdbd4' 2012-10-22 14:39:12 +02:00
error.h Merge commit 'c3e15f7b39aac2012f09ee4ca86d2bc674ffdbd4' 2012-10-22 14:39:12 +02:00
eval.c lavu/eval: rename "new_eval_expr()" to "make_eval_expr()" 2013-04-10 13:11:27 +02:00
eval.h lavu: remove disabled FF_API_OLD_EVAL_NAMES code 2012-11-07 23:18:05 +01:00
fifo.c Merge commit 'cb45553f577f8e0ebfe05d3287e1b6fa5859b967' 2012-12-05 13:34:45 +01:00
fifo.h Merge commit '8b8899ac3233b4f7af83ded0dc032fad8902d714' 2012-10-23 15:00:27 +02:00
file.c Merge remote-tracking branch 'qatar/master' 2012-11-30 14:55:12 +01:00
file.h file: typo 2012-10-31 17:01:52 +01:00
float_dsp.c Merge commit '1fda184a85178cfd7b98d9e308d18e1ded76a511' 2013-05-05 12:53:50 +02:00
float_dsp.h floatdsp: restrict->av_restrict 2013-01-24 00:49:47 +01:00
frame.c Merge remote-tracking branch 'qatar/master' 2013-05-15 11:10:09 +02:00
frame.h AVFrame.pkt_dts: improve docs 2013-03-19 00:47:00 +01:00
hash.c lavu/hash: Fix CRC32 calculation 2013-05-15 23:53:40 +02:00
hash.h Add a generic hash API. 2013-05-13 21:42:37 +02:00
hmac.c Merge commit '1fda184a85178cfd7b98d9e308d18e1ded76a511' 2013-05-05 12:53:50 +02:00
hmac.h Merge commit 'ab2ad8bd56882c0ea160b154e8b836eb71abc49d' 2013-01-15 15:57:33 +01:00
imgutils.c replace remaining PIX_FMT_* flags with AV_PIX_FMT_FLAG_* 2013-05-15 11:23:14 +02:00
imgutils.h lavu/imgutils: add consistency checks to av_image_copy_plane() 2012-11-25 18:19:59 +01:00
integer.c integer: switch to av_assert 2012-08-09 01:44:15 +02:00
integer.h avutil: Remove unused arbitrary precision integer code. 2011-06-28 13:14:46 +02:00
internal.h lavu: define FF_MEMORY_POISON and use it 2013-05-13 13:52:26 +02:00
intfloat_readwrite.c avutil/intfloat_readwrite: include common.h for isinf() 2013-04-17 23:22:22 +02:00
intfloat_readwrite.h Merge remote-tracking branch 'qatar/master' 2011-12-12 01:25:37 +01:00
intfloat.h intfloat: Don't use designated initializers in the public headers 2012-07-02 14:05:40 +03:00
intmath.c Merge commit '5ff998a233d759d0de83ea6f95c383d03d25d88e' 2012-11-05 22:51:20 +01:00
intmath.h Merge commit '5ff998a233d759d0de83ea6f95c383d03d25d88e' 2012-11-05 22:51:20 +01:00
intreadwrite.h lavu/intreadwrite: add AV_[RW][BLN]48 2013-02-13 15:35:54 +00:00
lfg.c avformat: Remove non-compiling and/or silly commented-out printf/av_log statements 2012-10-01 10:24:28 +02:00
lfg.h Merge remote-tracking branch 'qatar/master' 2012-10-06 13:45:08 +02:00
libavutil.v Merge commit '468ea9d5b14f92fe61f47f034e67066f65163f5f' 2012-10-23 13:34:42 +02:00
libm.h libm: Add fallback definition for cbrt() using pow() 2013-01-22 16:02:31 +01:00
lls.c Merge commit '1fda184a85178cfd7b98d9e308d18e1ded76a511' 2013-05-05 12:53:50 +02:00
lls.h Merge commit '4da950c0ae224b9b8ef952dadf614be2c050023e' 2013-03-01 13:44:46 +01:00
log2_tab.c Merge commit '930c9d4373e0f3cb7c64fcfc129127a309f6d066' 2012-10-13 14:24:58 +02:00
log.c avutil/log: Fix context pointer used for get_category() 2013-04-30 20:06:24 +02:00
log.h Merge commit '523c7bd23c781aa0f3a85044896f5e18e8b52534' 2012-12-19 14:28:58 +01:00
lzo.c Merge commit 'ca6c3f2c53be70aa3c38e8f1292809db89ea1ba6' 2013-03-16 14:10:09 +01:00
lzo.h Merge remote-tracking branch 'qatar/master' 2012-10-25 13:15:58 +02:00
Makefile Rename ffadler to ffhash and expand it using the generic hash API 2013-05-16 17:58:56 +02:00
mathematics.c av_rescale: support passing MIN/MAX through 2013-01-03 00:02:22 +01:00
mathematics.h lavu/math: fix than/then typo, and add a comma. 2013-01-03 00:02:51 +01:00
md5.c md5: optimize second round by using 4-operation form of G() 2013-05-20 04:27:34 +02:00
md5.h md5: avoid unnecessary copying. 2013-05-17 21:16:02 +02:00
mem.c lavu/mem: add av_dynarray2_add() 2013-05-13 13:52:31 +02:00
mem.h lavu/mem: add av_dynarray2_add() 2013-05-13 13:52:31 +02:00
murmur3.c murmur3: fix memleak 2013-05-15 12:10:09 +02:00
murmur3.h Add 128 bit murmur3 hash function. 2013-05-13 21:42:37 +02:00
old_pix_fmts.h Merge commit '78071a1420b425dfb787ac739048f523007b8139' 2012-10-08 19:42:49 +02:00
opencl_internal.c lavu/opencl_internal: use av_opencl_errstr 2013-05-06 12:08:04 +02:00
opencl_internal.h lavu/opencl:add opencl set param function 2013-04-26 03:04:42 +02:00
opencl.c lavu/opencl: add opencl public error API 2013-05-05 13:44:29 +02:00
opencl.h lavu/opencl: add opencl public error API 2013-05-05 13:44:29 +02:00
opt.c lavu/opt: add AV_OPT_TYPE_COLOR 2013-05-17 11:32:53 +00:00
opt.h lavu/opt: add AV_OPT_TYPE_COLOR 2013-05-17 11:32:53 +00:00
parseutils.c Force using a 64bit intermediate when calculating calendar time with av_timegm(). 2013-03-08 02:42:33 +01:00
parseutils.h lavu/parseutils: remove spurious "]]" in date format specification 2013-02-22 23:45:31 +01:00
pca.c pca: use av_calloc() 2013-04-15 20:31:06 +02:00
pca.h Remove unused, never built libavutil/pca.[ch] 2011-06-29 23:49:03 +01:00
pixdesc.c replace remaining PIX_FMT_* flags with AV_PIX_FMT_FLAG_* 2013-05-15 11:23:14 +02:00
pixdesc.h Merge remote-tracking branch 'qatar/master' 2013-05-15 11:10:09 +02:00
pixfmt.h lavu: add planar 16 bit and 8 bit rgb with alpha 2013-05-03 16:58:22 +00:00
qsort.h qsort: flip compare direction to match libc qsort() 2012-06-22 22:48:00 +02:00
random_seed.c Merge commit '0a75d1da23b8659ec49391469bb592da12760077' 2012-10-12 14:15:33 +02:00
random_seed.h Merge remote-tracking branch 'qatar/master' 2011-11-23 04:02:17 +01:00
rational.c Merge commit 'd46c588f3cb1963a00e990ceaf4ba9ffa05a716d' 2013-05-16 09:11:04 +02:00
rational.h Merge remote-tracking branch 'qatar/master' 2012-08-05 22:17:02 +02:00
rc4.c Replace FFmpeg with Libav in licence headers 2011-03-19 13:33:20 +00:00
rc4.h Merge remote-tracking branch 'qatar/master' 2011-06-24 03:07:04 +02:00
samplefmt.c av_samples_alloc_array_and_samples: Fix sizeof type. 2013-04-21 00:26:17 +02:00
samplefmt.h lavu/samplefmt: add av_samples_alloc_array_and_pointers() 2013-03-31 18:00:44 +02:00
sha.c Merge commit '1fda184a85178cfd7b98d9e308d18e1ded76a511' 2013-05-05 12:53:50 +02:00
sha.h lavu: keep context size variables 2012-10-28 14:33:41 +01:00
softfloat.c Remove unused softfloat implementation. 2011-05-11 13:43:30 +02:00
softfloat.h Remove unused softfloat implementation. 2011-05-11 13:43:30 +02:00
time.c Merge remote-tracking branch 'qatar/master' 2012-06-22 22:34:02 +02:00
time.h Merge remote-tracking branch 'qatar/master' 2012-06-22 22:34:02 +02:00
timecode.c lavu/timecode: fix time code calculation for 60000/1001 drop frame 2013-01-24 21:06:24 +01:00
timecode.h lavu: drop disabled FF_API_OLD_TC_ADJUST_FRAMENUM code 2012-11-04 18:10:39 +01:00
timer.h Merge remote-tracking branch 'qatar/master' 2012-08-16 16:20:30 +02:00
timestamp.h lavu/timestamp: remove duplicate definition of AV_TS_MAX_STRING_SIZE 2012-06-10 00:37:02 +02:00
tree.c tree-test: fix printf() types 2012-10-31 03:10:35 +01:00
tree.h lavu: keep context size variables 2012-10-28 14:33:41 +01:00
utils.c avutil/avutil_version: Run checks just once 2013-04-16 17:04:16 +02:00
version.h lavu/opt: add AV_OPT_TYPE_COLOR 2013-05-17 11:32:53 +00:00
x86_cpu.h x86_cpu.h: newline at the end to shutup some warnings in opencc 2012-09-13 19:31:02 +02:00
xga_font_data.c Move xGA font data from lavc to lavu. 2012-10-01 22:24:17 +02:00
xga_font_data.h Mark data symbols shared between libraries with av_export 2012-10-20 01:56:50 +02:00
xtea.c xtea: fix unused variable warning for config_small 2012-12-29 03:37:46 +01:00
xtea.h Merge remote-tracking branch 'qatar/master' 2012-08-10 16:25:23 +02:00