It provides the following features:
- verify correctness by comparing output to the C version.
- detect failure to save and restore clobbered callee-saved registers.
- detect 32-bit parameters being used as if they were 64-bit in x86-64 (the upper halves are not guaranteed to be zero - but in practice they very often are, which makes those bugs hard to spot otherwise).
- easy benchmarking.
Compile by running 'make checkasm'. Execute by running 'tests/checkasm/checkasm'.
Optional arguments are '--bench' to run benchmarks for all functions, '--bench=
Contains unit tests for most h264pred functions to get started, more tests can be added afterwards using those as a reference.
Loosely based on code from x264. Currently only supports x86 and x86-64, but additional architectures shouldn't be too much of an obstacle to add.
Note that functions with floating point parameters or floating point return values are not supported. Some compiler-specific features or preprocessor hacks would likely be required to add support for that.
8bc67ec Checkasm: assembly testing and benchmarking tool
.gitignore | 1 +
tests/Makefile | 2 +
tests/checkasm/Makefile | 33 +++
tests/checkasm/checkasm.c | 484 +++++++++++++++++++++++++++++++++++++++
tests/checkasm/checkasm.h | 115 ++++++++++
tests/checkasm/h264pred.c | 252 ++++++++++++++++++++
tests/checkasm/x86/Makefile | 6 +
tests/checkasm/x86/checkasm.asm | 193 ++++++++++++++++
8 files changed, 1086 insertions(+)
Upstream: git.libav.org