mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-02 03:06:28 +02:00
8bc67ec2c0
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=<pattern>' to run benchmarks for all functions that starts with <pattern>, and '<integer>' 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. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
34 lines
947 B
Makefile
34 lines
947 B
Makefile
# libavcodec tests
|
|
AVCODECOBJS-$(CONFIG_H264PRED) += h264pred.o
|
|
|
|
CHECKASMOBJS-$(CONFIG_AVCODEC) += $(AVCODECOBJS-yes)
|
|
|
|
|
|
-include $(SRC_PATH)/tests/checkasm/$(ARCH)/Makefile
|
|
|
|
CHECKASMOBJS += $(CHECKASMOBJS-yes) checkasm.o
|
|
CHECKASMOBJS := $(sort $(CHECKASMOBJS:%=tests/checkasm/%))
|
|
|
|
-include $(CHECKASMOBJS:.o=.d)
|
|
|
|
CHECKASMDIRS := $(sort $(dir $(CHECKASMOBJS)))
|
|
$(CHECKASMOBJS): | $(CHECKASMDIRS)
|
|
OBJDIRS += $(CHECKASMDIRS)
|
|
|
|
# We rely on function pointers intentionally declared without specified argument types.
|
|
tests/checkasm/%.o: CFLAGS := $(CFLAGS:-Wstrict-prototypes=-Wno-strict-prototypes)
|
|
|
|
CHECKASM := tests/checkasm/checkasm$(EXESUF)
|
|
|
|
$(CHECKASM): $(EXEOBJS) $(CHECKASMOBJS) $(FF_DEP_LIBS)
|
|
$(LD) $(LDFLAGS) $(LDEXEFLAGS) $(LD_O) $(CHECKASMOBJS) $(FF_EXTRALIBS)
|
|
|
|
checkasm: $(CHECKASM)
|
|
|
|
clean:: checkasmclean
|
|
|
|
checkasmclean:
|
|
$(RM) $(CHECKASM) $(CLEANSUFFIXES:%=tests/checkasm/%) $(CLEANSUFFIXES:%=tests/checkasm/$(ARCH)/%)
|
|
|
|
.PHONY: checkasm
|