Signed-off-by: Pierrick Bouvier <[email protected]>
---
tests/tcg/meson.build | 1 +
tests/tcg/x86_64/Makefile.target | 40 ----------------
tests/tcg/x86_64/meson.build | 81 ++++++++++++++++++++++++++++++++
3 files changed, 82 insertions(+), 40 deletions(-)
delete mode 100644 tests/tcg/x86_64/Makefile.target
create mode 100644 tests/tcg/x86_64/meson.build
diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build
index a0d629f40a1..d2f73ba655c 100644
--- a/tests/tcg/meson.build
+++ b/tests/tcg/meson.build
@@ -152,6 +152,7 @@ subdir('riscv64')
subdir('s390x')
subdir('sh4')
subdir('tricore')
+subdir('x86_64')
image_targets = {}
exe_targets = []
diff --git a/tests/tcg/x86_64/Makefile.target b/tests/tcg/x86_64/Makefile.target
deleted file mode 100644
index 8ed44b08793..00000000000
--- a/tests/tcg/x86_64/Makefile.target
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- Mode: makefile -*-
-#
-# x86_64 tests - included from tests/tcg/Makefile.target
-#
-# Currently we only build test-x86_64 and test-i386-ssse3 from
-# $(SRC_PATH)/tests/tcg/i386/
-#
-
-#include $(SRC_PATH)/tests/tcg/i386/Makefile.target
-
-X86_64_TESTS += test-2413
-
-ifeq ($(filter %-linux-user, $(TARGET)),$(TARGET))
-X86_64_TESTS += vsyscall
-X86_64_TESTS += noexec
-X86_64_TESTS += cmpxchg
-X86_64_TESTS += adox
-X86_64_TESTS += test-1648
-X86_64_TESTS += test-2175
-X86_64_TESTS += cross-modifying-code
-X86_64_TESTS += fma
-TESTS=$(MULTIARCH_TESTS) $(X86_64_TESTS) #test-x86_64
-else
-TESTS=$(MULTIARCH_TESTS)
-endif
-
-adox: CFLAGS=-O2
-
-run-test-i386-ssse3: QEMU_OPTS += -cpu max
-run-plugin-test-i386-ssse3-%: QEMU_OPTS += -cpu max
-
-cross-modifying-code: CFLAGS+=-pthread
-cross-modifying-code: LDFLAGS+=-pthread
-
-#test-x86_64: LDFLAGS+=-lm -lc
-#test-x86_64: test-i386.c test-i386.h test-i386-shift.h test-i386-muldiv.h
-# $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
-
-%: $(SRC_PATH)/tests/tcg/x86_64/%.c
- $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
diff --git a/tests/tcg/x86_64/meson.build b/tests/tcg/x86_64/meson.build
new file mode 100644
index 00000000000..9d655a466d4
--- /dev/null
+++ b/tests/tcg/x86_64/meson.build
@@ -0,0 +1,81 @@
+cc = 'x86_64-linux-gnu-gcc'
+cc_dockerfile = 'debian-amd64-cross'
+cc_docker_host_arch = ['x86_64']
+
+tests = []
+
+tests += tcg_tests['multiarch-linux-user']['tests']
+
+test_3dnow_h = custom_target('test_3dnow_h',
+ command: [files('../i386/test-mmx.py'),
+ files('../i386/x86.csv'),
+ '@OUTPUT@',
+ '3DNOW'],
+ output: 'test-3dnow.h')
+
+test_avx_h = custom_target('test_avx_h',
+ command: [files('../i386/test-avx.py'),
+ files('../i386/x86.csv'),
+ '@OUTPUT@'],
+ output: 'test-avx.h')
+
+test_mmx_h = custom_target('test_mmx_h',
+ command: [files('../i386/test-mmx.py'),
+ files('../i386/x86.csv'),
+ '@OUTPUT@',
+ 'MMX', 'SSE', 'SSE2', 'SSE3', 'SSSE3'],
+ output: 'test-mmx.h')
+
+tests += {
+ '../i386/test-i386-ssse3.c': {},
+ '../i386/test-3dnow.c': {
+ 'cflags': ['-I', meson.current_build_dir(),
+ '-masm=intel', '-O'],
+ 'depends': [test_3dnow_h],
+ },
+ '../i386/test-avx.c': {
+ 'cflags': ['-I', meson.current_build_dir(),
+ '-mavx', '-masm=intel', '-O'],
+ 'depends': [test_avx_h],
+ },
+ '../i386/test-flags.c': {},
+ '../i386/test-mmx.c': {
+ 'cflags': ['-I', meson.current_build_dir(),
+ '-masm=intel', '-O'],
+ 'depends': [test_mmx_h],
+ },
+ '../i386/test-i386.c': {
+ 'cflags': ['-lm', '-lc'],
+ 'exe_name': 'test-x86_64'
+ },
+ '../i386/test-i386-adcox.c': {'cflags': ['-O2']},
+ '../i386/test-i386-bmi2.c': {'cflags': ['-O2', '-fwrapv']},
+}
+
+tests += {
+ 'adox.c': {'cflags': ['-O2']},
+ 'cmpxchg.c': {},
+ 'cross-modifying-code.c': {
+ 'cflags': ['-pthread', '-Wl,--no-warn-rwx-segments']
+ },
+ 'fma.c': {},
+ 'noexec.c': {},
+ 'test-1648.c': {},
+ 'test-2175.c': {},
+ 'test-2413.c': {},
+ 'vsyscall.c': {},
+}
+
+if 'qemu-x86_64' in emulators
+ tcg_tests += {
+ 'x86_64-linux-user': {
+ 'cc': cc,
+ 'cc_dockerfile': cc_dockerfile,
+ 'cc_docker_host_arch': cc_docker_host_arch,
+ 'folder': 'x86_64',
+ 'gdb_arch': 'x86_64',
+ 'qemu': emulators['qemu-x86_64'],
+ 'tests': tests,
+ }
+ }
+endif
--
2.47.3