diff --git a/tests/benchmarks.txt b/tests/benchmarks.txt new file mode 100644 index 0000000..ff5f040 --- /dev/null +++ b/tests/benchmarks.txt @@ -0,0 +1,13 @@ +decode 90 [NOP] +decode 0fcd [BSWAP REG4:5] +decode 660fcd [BSWAP REG2:5] +decode 6650 [PUSH REG2:0] +decode a5 [MOVS_4] +decode f3a5 [MOVS_4] +decode 66a5 [MOVS_2] +decode f366a5 [MOVS_2] +decode f7d7 [NOT REG4:7] +decode f717 [NOT MEM4:7:0x0] +decode f7142f [NOT MEM4:7:1*5:0x0] +decode f7542f12 [NOT MEM4:7:1*5:0x12] +decode f7942f34120000 [NOT MEM4:7:1*5:0x1234] diff --git a/tests/meson.build b/tests/meson.build index 6474b38..89e9437 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,5 +1,13 @@ -cases = [ +test_driver = executable('test_driver', 'driver.c', + dependencies: libx86decode, + c_args: ['-D_GNU_SOURCE']) +test_args = [files('test.py'), test_driver, archmode] + + +## Test cases + +testcases = [ ['enter', 'decode-enter.sh'], ['imul', 'decode-imul.sh'], ['inc', 'decode-inc.sh'], @@ -10,11 +18,19 @@ cases = [ ['sse-movq', 'decode-sse-movq.sh'], ] -test_driver = executable('test_driver', 'driver.c', - dependencies: libx86decode, - c_args: ['-D_GNU_SOURCE']) -test_args = files('test.py') + [test_driver.full_path(), get_option('archmode')] - -foreach case : cases +foreach case : testcases test(case[0], python3, args: test_args + files(case[1])) endforeach + + +## Benchmarks +# +# Note that we don't use meson's benchmark function here, because it doesn't +# give us the output we need by default. + +benchmarks = [ + 'benchmarks.txt', +] + +run_target('benchmark_decode', + command: [python3, test_args, '--benchmark', files(benchmarks)])