From 3bc55f15f04e228d84373099e323bbeb5b40c107 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Sok=C3=B3=C5=82?= Date: Thu, 25 Jul 2024 22:03:30 +0000 Subject: [PATCH] BLD: `test` port --- driver/level3/meson.build | 11 +++ kernel/meson.build | 196 ++++++++++++++++++++++++++++++++++---- meson.build | 1 + test/meson.build | 40 ++++++++ test/test_runner.c | 25 +++++ 5 files changed, 253 insertions(+), 20 deletions(-) create mode 100644 test/meson.build create mode 100644 test/test_runner.c diff --git a/driver/level3/meson.build b/driver/level3/meson.build index a4415899d..2a1c22eac 100644 --- a/driver/level3/meson.build +++ b/driver/level3/meson.build @@ -143,6 +143,11 @@ driver_kops = [ '_LN', '_LT', '']}, } }, + { 'base': 'syrk_thread', + 'sources': { + 'syrk_thread.c': {'mode': [''], 'exts': ['']} + } + }, { 'base': '?syrk_kernel', 'sources': { 'syrk_kernel.c': {'mode': ['s', 'd', # 'q'], @@ -158,6 +163,12 @@ driver_kops = [ '_LN', '_LT']}, } }, + { 'base': '?syr2k_kernel', + 'sources': { + 'syr2k_kernel.c': {'mode': ['s', 'd', 'c', 'z'], + 'exts': ['_U', '_L']}, + } + }, { 'base': '?hemm', 'sources': { 'zhemm_k.c': {'mode': ['c', 'z'], # 'x'], diff --git a/kernel/meson.build b/kernel/meson.build index a0faa49c9..2f2dfa8e4 100644 --- a/kernel/meson.build +++ b/kernel/meson.build @@ -638,37 +638,163 @@ base_kops = [ 's': {'exts': { # TODO(rg): These actually use $(SGEMM_UNROLL_M) to choose the size '_iunucopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_8.c', - 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, '_iunncopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_8.c', - 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, '_ilnucopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_8.c', - 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, '_ilnncopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_8.c', - 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, '_iutucopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_8.c', - 'addl': ['-UOUTER', '-ULOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, '_iutncopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_8.c', - 'addl': ['-UOUTER', '-ULOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, '_iltucopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_8.c', - 'addl': ['-UOUTER', '-DLOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, '_iltncopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_8.c', - 'addl': ['-UOUTER', '-DLOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, '_ounucopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_4.c', - 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, '_ounncopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_4.c', - 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, '_olnucopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_4.c', - 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, '_olnncopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_4.c', - 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, '_outucopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_4.c', - 'addl': ['-DOUTER', '-ULOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, '_outncopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_4.c', - 'addl': ['-DOUTER', '-ULOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, '_oltucopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_4.c', - 'addl': ['-DOUTER', '-DLOWER', '-DUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, '_oltncopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_4.c', - 'addl': ['-DOUTER', '-DLOWER', '-UUNIT']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, + }}, + 'd': {'exts': { + '_iunucopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, + '_iunncopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, + '_ilnucopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, + '_ilnncopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, + '_iutucopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, + '_iutncopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, + '_iltucopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, + '_iltncopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, + '_ounucopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, + '_ounncopy': {'dir': 'generic', 'kernel': 'trmm_uncopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, + '_olnucopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, + '_olnncopy': {'dir': 'generic', 'kernel': 'trmm_lncopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, + '_outucopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, + '_outncopy': {'dir': 'generic', 'kernel': 'trmm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, + '_oltucopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, + '_oltncopy': {'dir': 'generic', 'kernel': 'trmm_ltcopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, + }}, + 'c': {'exts': { + '_iunucopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, + '_iunncopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, + '_ilnucopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, + '_ilnncopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, + '_iutucopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, + '_iutncopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, + '_iltucopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, + '_iltncopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, + '_ounucopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, + '_ounncopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, + '_olnucopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, + '_olnncopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, + '_outucopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, + '_outncopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, + '_oltucopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, + '_oltncopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, + }}, + 'z': {'exts': { + '_iunucopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, + '_iunncopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, + '_ilnucopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, + '_ilnncopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, + '_iutucopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-DUNIT']}, + '_iutncopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER', '-UUNIT']}, + '_iltucopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-DUNIT']}, + '_iltncopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER', '-UUNIT']}, + '_ounucopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, + '_ounncopy': {'dir': 'generic', 'kernel': 'ztrmm_uncopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, + '_olnucopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, + '_olnncopy': {'dir': 'generic', 'kernel': 'ztrmm_lncopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, + '_outucopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-DUNIT']}, + '_outncopy': {'dir': 'generic', 'kernel': 'ztrmm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER', '-UUNIT']}, + '_oltucopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-DUNIT']}, + '_oltncopy': {'dir': 'generic', 'kernel': 'ztrmm_ltcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER', '-UUNIT']}, + }}, + }, + }, + { 'base': '?hemm', + 'modes': { + 'c': {'exts': { + '_iutcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER']}, + '_iltcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER']}, + '_outcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER']}, + '_oltcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER']}, + }}, + 'z': {'exts': { + '_iutcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER']}, + '_iltcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER']}, + '_outcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER']}, + '_oltcopy': {'dir': 'generic', 'kernel': 'zhemm_utcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER']}, }}, }, }, @@ -856,13 +982,43 @@ base_kops = [ 's': {'exts': { # TODO(rg): These actually use $(SGEMM_UNROLL_M) to choose the size '_iutcopy': {'dir': 'generic', 'kernel': 'symm_ucopy_8.c', - 'addl': ['-UOUTER', '-ULOWER']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER']}, '_iltcopy': {'dir': 'generic', 'kernel': 'symm_lcopy_8.c', - 'addl': ['-UOUTER', '-DLOWER']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER']}, '_outcopy': {'dir': 'generic', 'kernel': 'symm_ucopy_4.c', - 'addl': ['-DOUTER', '-ULOWER']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER']}, '_oltcopy': {'dir': 'generic', 'kernel': 'symm_lcopy_4.c', - 'addl': ['-DOUTER', '-DLOWER']}, + 'addl': ['-UDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER']}, + }}, + 'd': {'exts': { + '_iutcopy': {'dir': 'generic', 'kernel': 'symm_ucopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-ULOWER']}, + '_iltcopy': {'dir': 'generic', 'kernel': 'symm_lcopy_8.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-UOUTER', '-DLOWER']}, + '_outcopy': {'dir': 'generic', 'kernel': 'symm_ucopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-ULOWER']}, + '_oltcopy': {'dir': 'generic', 'kernel': 'symm_lcopy_4.c', + 'addl': ['-DDOUBLE', '-UCOMPLEX', '-DOUTER', '-DLOWER']}, + }}, + 'c': {'exts': { + '_iutcopy': {'dir': 'generic', 'kernel': 'zsymm_ucopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER']}, + '_iltcopy': {'dir': 'generic', 'kernel': 'zsymm_lcopy_8.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER']}, + '_outcopy': {'dir': 'generic', 'kernel': 'zsymm_ucopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER']}, + '_oltcopy': {'dir': 'generic', 'kernel': 'zsymm_lcopy_4.c', + 'addl': ['-UDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER']}, + }}, + 'z': {'exts': { + '_iutcopy': {'dir': 'generic', 'kernel': 'zsymm_ucopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-ULOWER']}, + '_iltcopy': {'dir': 'generic', 'kernel': 'zsymm_lcopy_8.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-UOUTER', '-DLOWER']}, + '_outcopy': {'dir': 'generic', 'kernel': 'zsymm_ucopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-ULOWER']}, + '_oltcopy': {'dir': 'generic', 'kernel': 'zsymm_lcopy_4.c', + 'addl': ['-DDOUBLE', '-DCOMPLEX', '-DOUTER', '-DLOWER']}, }}, }, }, diff --git a/meson.build b/meson.build index acff8c443..01d9e37c9 100644 --- a/meson.build +++ b/meson.build @@ -552,5 +552,6 @@ pkg.generate(_openblas, ) if build_testing + subdir('test') subdir('utest') endif diff --git a/test/meson.build b/test/meson.build new file mode 100644 index 000000000..80e6450a4 --- /dev/null +++ b/test/meson.build @@ -0,0 +1,40 @@ +_test_input_array = [ + {'id': 'sblat1', 'has_dat': false}, + {'id': 'sblat2', 'has_dat': true}, + {'id': 'sblat3', 'has_dat': true}, + {'id': 'dblat1', 'has_dat': false}, + {'id': 'dblat2', 'has_dat': true}, + {'id': 'dblat3', 'has_dat': true}, + {'id': 'cblat1', 'has_dat': false}, + {'id': 'cblat2', 'has_dat': true}, + {'id': 'cblat3', 'has_dat': true}, + {'id': 'cblat3_3m', 'has_dat': true}, + {'id': 'zblat1', 'has_dat': false}, + {'id': 'zblat2', 'has_dat': true}, + {'id': 'zblat3', 'has_dat': true}, + {'id': 'zblat3_3m', 'has_dat': true}, +] + +_test_runner = executable('test_runner', sources: ['test_runner.c'], install: false) + +foreach _test : _test_input_array + test_id = _test['id'] + executable( + test_id, + sources: f'@test_id@.f', + link_with: [_openblas], + dependencies: [dependency('threads')], + ) + + _args = [f'./@test_id@'] + if _test['has_dat'] + _args += [ meson.current_source_dir() / f'@test_id@.dat'] + endif + + test( + test_id, + _test_runner, + args: _args, + workdir: meson.current_build_dir(), + ) +endforeach diff --git a/test/test_runner.c b/test/test_runner.c new file mode 100644 index 000000000..a9a6b3ee5 --- /dev/null +++ b/test/test_runner.c @@ -0,0 +1,25 @@ +#include +#include +#include + +int main(int argc, char *argv[]) { + if (argc != 2 && argc != 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return EXIT_FAILURE; + } + + char command[1024]; + if (argc == 2) { + snprintf(command, sizeof(command), "%s", argv[1]); + } else { + snprintf(command, sizeof(command), "%s < %s", argv[1], argv[2]); + } + + int result = system(command); + if (result != 0) { + fprintf(stderr, "Error: Command '%s' failed with return code %d.\n", command, result); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +}