mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
meson: convert tests/fp and check-softfloat
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
@@ -8378,7 +8378,7 @@ DIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
|
||||
DIRS="$DIRS roms/seabios"
|
||||
LINKS="Makefile"
|
||||
LINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile"
|
||||
LINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile"
|
||||
LINKS="$LINKS tests/tcg/Makefile.target"
|
||||
LINKS="$LINKS tests/plugin/Makefile"
|
||||
LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
|
||||
LINKS="$LINKS pc-bios/s390-ccw/Makefile"
|
||||
|
||||
+2
-156
@@ -437,9 +437,6 @@ tests/test-bufferiszero$(EXESUF): tests/test-bufferiszero.o $(test-util-obj-y)
|
||||
tests/atomic_add-bench$(EXESUF): tests/atomic_add-bench.o $(test-util-obj-y)
|
||||
tests/atomic64-bench$(EXESUF): tests/atomic64-bench.o $(test-util-obj-y)
|
||||
|
||||
tests/fp/%:
|
||||
$(MAKE) -C $(dir $@) $(notdir $@)
|
||||
|
||||
tests/test-qdev-global-props$(EXESUF): tests/test-qdev-global-props.o \
|
||||
hw/core/qdev.o hw/core/qdev-properties.o hw/core/hotplug.o\
|
||||
hw/core/bus.o \
|
||||
@@ -675,157 +672,6 @@ check-report-unit.tap: $(check-unit-y)
|
||||
|
||||
check-report.tap: $(patsubst %,check-report-qtest-%.tap, $(QTEST_TARGETS)) check-report-unit.tap
|
||||
|
||||
# FPU Emulation tests (aka softfloat)
|
||||
#
|
||||
# As we still have some places that need fixing the rules are a little
|
||||
# more complex than they need to be and have to override some of the
|
||||
# generic Makefile expansions. Once we are cleanly passing all
|
||||
# the tests we can simplify the make syntax.
|
||||
|
||||
FP_TEST_BIN=$(BUILD_DIR)/tests/fp/fp-test
|
||||
|
||||
# the build dir is created by configure
|
||||
$(FP_TEST_BIN): config-host.h $(test-util-obj-y)
|
||||
$(call quiet-command, \
|
||||
$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" $(notdir $@), \
|
||||
"BUILD", "$(notdir $@)")
|
||||
|
||||
# The full test suite can take a bit of time, default to a quick run
|
||||
# "-l 2 -r all" can take more than a day for some operations and is best
|
||||
# run manually
|
||||
FP_TL=-l 1 -r all
|
||||
|
||||
# $1 = tests, $2 = description, $3 = test flags
|
||||
test-softfloat = $(call quiet-command, \
|
||||
cd $(BUILD_DIR)/tests/fp && \
|
||||
./fp-test -s $(if $3,$3,$(FP_TL)) $1 > $2.out 2>&1 || \
|
||||
(cat $2.out && exit 1;), \
|
||||
"FLOAT TEST", $2)
|
||||
|
||||
# Conversion Routines: Float to Float
|
||||
# FIXME: f32_to_f128 (broken), f64_to_f128 (broken)
|
||||
# FIXME: f128_to_f32(broken), f128_to_f64 (broken)
|
||||
# FIXME: f128_to_extF80 (broken)
|
||||
check-softfloat-conv-f2f: $(FP_TEST_BIN)
|
||||
$(call test-softfloat, \
|
||||
f16_to_f32 f16_to_f64 \
|
||||
f16_to_extF80 f16_to_f128 \
|
||||
f32_to_f16 f32_to_f64 \
|
||||
f32_to_extF80 \
|
||||
f64_to_f16 f64_to_f32 \
|
||||
extF80_to_f16 extF80_to_f32 \
|
||||
extF80_to_f64 extF80_to_f128 \
|
||||
f128_to_f16, \
|
||||
float-to-float)
|
||||
|
||||
# Conversion Routines: Int and Uint to Float
|
||||
# FIXME: i32_to_extF80 (broken), i64_to_extF80 (broken)
|
||||
# ui32_to_f128 (not implemented)
|
||||
check-softfloat-conv-to-float: $(FP_TEST_BIN)
|
||||
$(call test-softfloat, \
|
||||
i32_to_f16 i64_to_f16 \
|
||||
i32_to_f32 i64_to_f32 \
|
||||
i32_to_f64 i64_to_f64 \
|
||||
i32_to_f128 i64_to_f128, int-to-float)
|
||||
$(call test-softfloat, \
|
||||
ui32_to_f16 ui64_to_f16 \
|
||||
ui32_to_f32 ui64_to_f32 \
|
||||
ui32_to_f64 ui64_to_f64 \
|
||||
ui32_to_extF80 ui64_to_extF80 \
|
||||
ui64_to_f128, uint-to-float)
|
||||
|
||||
# Conversion Routines: Float to integers
|
||||
# FIXME: extF80_roundToInt (broken)
|
||||
check-softfloat-conv-to-int: $(FP_TEST_BIN)
|
||||
$(call test-softfloat, \
|
||||
f16_to_i32 f16_to_i32_r_minMag \
|
||||
f32_to_i32 f32_to_i32_r_minMag \
|
||||
f64_to_i32 f64_to_i32_r_minMag \
|
||||
extF80_to_i32 extF80_to_i32_r_minMag \
|
||||
f128_to_i32 f128_to_i32_r_minMag \
|
||||
f16_to_i64 f16_to_i64_r_minMag \
|
||||
f32_to_i64 f32_to_i64_r_minMag \
|
||||
f64_to_i64 f64_to_i64_r_minMag \
|
||||
extF80_to_i64 extF80_to_i64_r_minMag \
|
||||
f128_to_i64 f128_to_i64_r_minMag, \
|
||||
float-to-int)
|
||||
$(call test-softfloat, \
|
||||
f16_to_ui32 f16_to_ui32_r_minMag \
|
||||
f32_to_ui32 f32_to_ui32_r_minMag \
|
||||
f64_to_ui32 f64_to_ui32_r_minMag \
|
||||
extF80_to_ui32 extF80_to_ui32_r_minMag \
|
||||
f128_to_ui32 f128_to_ui32_r_minMag \
|
||||
f16_to_ui64 f16_to_ui64_r_minMag \
|
||||
f32_to_ui64 f32_to_ui64_r_minMag \
|
||||
f64_to_ui64 f64_to_ui64_r_minMag \
|
||||
extF80_to_ui64 extF80_to_ui64_r_minMag \
|
||||
f128_to_ui64 f128_to_ui64_r_minMag, \
|
||||
float-to-uint)
|
||||
$(call test-softfloat, \
|
||||
f16_roundToInt f32_roundToInt \
|
||||
f64_roundToInt f128_roundToInt, \
|
||||
round-to-integer)
|
||||
|
||||
.PHONY: check-softfloat-conv
|
||||
check-softfloat-conv: check-softfloat-conv-f2f
|
||||
check-softfloat-conv: check-softfloat-conv-to-float
|
||||
check-softfloat-conv: check-softfloat-conv-to-int
|
||||
|
||||
# Generic rule for all float operations
|
||||
#
|
||||
# Some patterns are overridden due to broken or missing tests.
|
||||
# Hopefully these can be removed over time.
|
||||
|
||||
check-softfloat-%: $(FP_TEST_BIN)
|
||||
$(call test-softfloat, f16_$* f32_$* f64_$* extF80_$* f128_$*, $*)
|
||||
|
||||
# Float Compare routines
|
||||
SF_COMPARE_OPS=eq eq_signaling le le_quiet lt_quiet
|
||||
SF_COMPARE_RULES=$(patsubst %,check-softfloat-%, $(SF_COMPARE_OPS))
|
||||
|
||||
# FIXME: extF80_lt_quiet (broken)
|
||||
check-softfloat-lt_quiet: $(FP_TEST_BIN)
|
||||
$(call test-softfloat, \
|
||||
f16_lt_quiet f32_lt_quiet f64_lt_quiet \
|
||||
f128_lt_quiet, \
|
||||
lt_quiet)
|
||||
|
||||
.PHONY: check-softfloat-compare
|
||||
check-softfloat-compare: $(SF_COMPARE_RULES)
|
||||
|
||||
# Math Operations
|
||||
|
||||
# FIXME: extF80_mulAdd (missing)
|
||||
check-softfloat-mulAdd: $(FP_TEST_BIN)
|
||||
$(call test-softfloat, \
|
||||
f16_mulAdd f32_mulAdd f64_mulAdd f128_mulAdd, \
|
||||
mulAdd,-l 1)
|
||||
|
||||
# FIXME: extF80_rem (broken)
|
||||
check-softfloat-rem: $(FP_TEST_BIN)
|
||||
$(call test-softfloat, \
|
||||
f16_rem f32_rem f64_rem f128_rem, \
|
||||
rem)
|
||||
|
||||
SF_MATH_OPS=add sub mul mulAdd div rem sqrt
|
||||
SF_MATH_RULES=$(patsubst %,check-softfloat-%, $(SF_MATH_OPS))
|
||||
|
||||
.PHONY: check-softfloat-ops
|
||||
check-softfloat-ops: $(SF_MATH_RULES)
|
||||
|
||||
# Finally a generic rule to test all of softfoat. If TCG isnt't
|
||||
# enabled we define a null operation which skips the tests.
|
||||
|
||||
.PHONY: check-softfloat
|
||||
ifeq ($(CONFIG_TCG),y)
|
||||
build-softfloat: $(FP_TEST_BIN)
|
||||
check-softfloat: build-softfloat check-softfloat-conv check-softfloat-compare check-softfloat-ops
|
||||
else
|
||||
build-softfloat check-softfloat:
|
||||
$(call quiet-command, /bin/true, "FLOAT TEST", \
|
||||
"SKIPPED for non-TCG builds")
|
||||
endif
|
||||
|
||||
# Plugins
|
||||
ifeq ($(CONFIG_PLUGIN),y)
|
||||
.PHONY: plugins
|
||||
@@ -953,7 +799,7 @@ check-qtest: $(patsubst %,check-qtest-%, $(QTEST_TARGETS))
|
||||
ifeq ($(CONFIG_TOOLS),y)
|
||||
check-block: $(patsubst %,check-%, $(check-block-y))
|
||||
endif
|
||||
check-build: build-unit build-softfloat build-qtest
|
||||
check-build: build-unit build-qtest
|
||||
|
||||
check-clean:
|
||||
rm -rf $(check-unit-y) tests/*.o tests/*/*.o $(QEMU_IOTESTS_HELPERS-y)
|
||||
@@ -962,7 +808,7 @@ check-clean:
|
||||
rm -f tests/qtest/dbus-vmstate1-gen-timestamp
|
||||
rm -rf $(TESTS_VENV_DIR) $(TESTS_RESULTS_DIR)
|
||||
|
||||
check: check-block check-qapi-schema check-unit check-softfloat check-qtest
|
||||
check: check-block check-qapi-schema check-unit check-qtest
|
||||
|
||||
clean: check-clean
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2,3 +2,7 @@ test('decodetree', sh,
|
||||
args: [ files('decode/check.sh'), config_host['PYTHON'], files('../scripts/decodetree.py') ],
|
||||
workdir: meson.current_source_dir() / 'decode',
|
||||
suite: 'decodetree')
|
||||
|
||||
if 'CONFIG_TCG' in config_host
|
||||
subdir('fp')
|
||||
endif
|
||||
|
||||
Reference in New Issue
Block a user