Checkasm: assembly testing and benchmarking tool

Multimedia / Libav - Henrik Gramner [gramner.com] - 12 July 2015 09:39 UTC

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=' to run benchmarks for all functions that starts with , and '' to seed the PRNG for reproducible results.

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


  • Share