xref: /openbmc/qemu/tests/fp/meson.build (revision 90d00452)
13941996bSPaolo Bonzini# There are namespace pollution issues on Windows, due to osdep.h
23941996bSPaolo Bonzini# bringing in Windows headers that define a FLOAT128 type.
33941996bSPaolo Bonziniif targetos == 'windows'
43941996bSPaolo Bonzini  subdir_done()
53941996bSPaolo Bonziniendif
63941996bSPaolo Bonzini
73941996bSPaolo Bonzinifpcflags = [
83941996bSPaolo Bonzini  # softfloat defines
93941996bSPaolo Bonzini  '-DSOFTFLOAT_ROUND_ODD',
103941996bSPaolo Bonzini  '-DINLINE_LEVEL=5',
113941996bSPaolo Bonzini  '-DSOFTFLOAT_FAST_DIV32TO16',
123941996bSPaolo Bonzini  '-DSOFTFLOAT_FAST_DIV64TO32',
133941996bSPaolo Bonzini  '-DSOFTFLOAT_FAST_INT64',
143941996bSPaolo Bonzini  # testfloat defines
153941996bSPaolo Bonzini  '-DFLOAT16',
163941996bSPaolo Bonzini  '-DFLOAT64',
173941996bSPaolo Bonzini  '-DEXTFLOAT80',
183941996bSPaolo Bonzini  '-DFLOAT128',
193941996bSPaolo Bonzini  '-DFLOAT_ROUND_ODD',
203941996bSPaolo Bonzini  '-DLONG_DOUBLE_IS_EXTFLOAT80',
213941996bSPaolo Bonzini]
223941996bSPaolo Bonzini
233941996bSPaolo Bonzinisfdir = 'berkeley-softfloat-3/source'
243941996bSPaolo Bonzinisfspedir = sfdir / '8086-SSE'
253941996bSPaolo Bonzinitfdir = 'berkeley-testfloat-3/source'
263941996bSPaolo Bonzini
273941996bSPaolo Bonzinisfinc = include_directories(sfdir / 'include', sfspedir)
283941996bSPaolo Bonzini
293941996bSPaolo Bonzinitfcflags = [
304f07e71bSThomas Huth  '-Wno-implicit-fallthrough',
313941996bSPaolo Bonzini  '-Wno-strict-prototypes',
323941996bSPaolo Bonzini  '-Wno-unknown-pragmas',
333941996bSPaolo Bonzini  '-Wno-uninitialized',
343941996bSPaolo Bonzini  '-Wno-missing-prototypes',
353941996bSPaolo Bonzini  '-Wno-return-type',
363941996bSPaolo Bonzini  '-Wno-unused-function',
373941996bSPaolo Bonzini  '-Wno-error',
383941996bSPaolo Bonzini]
393941996bSPaolo Bonzini
403941996bSPaolo Bonzinitfgencases = [
413941996bSPaolo Bonzini  tfdir / 'genCases_ui32.c',
423941996bSPaolo Bonzini  tfdir / 'genCases_ui64.c',
433941996bSPaolo Bonzini  tfdir / 'genCases_i32.c',
443941996bSPaolo Bonzini  tfdir / 'genCases_i64.c',
453941996bSPaolo Bonzini  tfdir / 'genCases_f16.c',
463941996bSPaolo Bonzini  tfdir / 'genCases_f32.c',
473941996bSPaolo Bonzini  tfdir / 'genCases_f64.c',
483941996bSPaolo Bonzini  tfdir / 'genCases_extF80.c',
493941996bSPaolo Bonzini  tfdir / 'genCases_f128.c',
503941996bSPaolo Bonzini]
513941996bSPaolo Bonzini
523941996bSPaolo Bonzinitfwritecase = [
533941996bSPaolo Bonzini  tfdir / 'writeCase_a_ui32.c',
543941996bSPaolo Bonzini  tfdir / 'writeCase_a_ui64.c',
553941996bSPaolo Bonzini  tfdir / 'writeCase_a_f16.c',
563941996bSPaolo Bonzini  tfdir / 'writeCase_ab_f16.c',
573941996bSPaolo Bonzini  tfdir / 'writeCase_abc_f16.c',
583941996bSPaolo Bonzini  tfdir / 'writeCase_a_f32.c',
593941996bSPaolo Bonzini  tfdir / 'writeCase_ab_f32.c',
603941996bSPaolo Bonzini  tfdir / 'writeCase_abc_f32.c',
613941996bSPaolo Bonzini  tfdir / 'writeCase_a_f64.c',
623941996bSPaolo Bonzini  tfdir / 'writeCase_ab_f64.c',
633941996bSPaolo Bonzini  tfdir / 'writeCase_abc_f64.c',
643941996bSPaolo Bonzini  tfdir / 'writeCase_a_extF80M.c',
653941996bSPaolo Bonzini  tfdir / 'writeCase_ab_extF80M.c',
663941996bSPaolo Bonzini  tfdir / 'writeCase_a_f128M.c',
673941996bSPaolo Bonzini  tfdir / 'writeCase_ab_f128M.c',
683941996bSPaolo Bonzini  tfdir / 'writeCase_abc_f128M.c',
693941996bSPaolo Bonzini  tfdir / 'writeCase_z_bool.c',
703941996bSPaolo Bonzini  tfdir / 'writeCase_z_ui32.c',
713941996bSPaolo Bonzini  tfdir / 'writeCase_z_ui64.c',
723941996bSPaolo Bonzini  tfdir / 'writeCase_z_f16.c',
733941996bSPaolo Bonzini  tfdir / 'writeCase_z_f32.c',
743941996bSPaolo Bonzini  tfdir / 'writeCase_z_f64.c',
753941996bSPaolo Bonzini  tfdir / 'writeCase_z_extF80M.c',
763941996bSPaolo Bonzini  tfdir / 'writeCase_z_f128M.c',
773941996bSPaolo Bonzini]
783941996bSPaolo Bonzini
793941996bSPaolo Bonzinitftest = [
803941996bSPaolo Bonzini  tfdir / 'test_a_ui32_z_f16.c',
813941996bSPaolo Bonzini  tfdir / 'test_a_ui32_z_f32.c',
823941996bSPaolo Bonzini  tfdir / 'test_a_ui32_z_f64.c',
833941996bSPaolo Bonzini  tfdir / 'test_a_ui32_z_extF80.c',
843941996bSPaolo Bonzini  tfdir / 'test_a_ui32_z_f128.c',
853941996bSPaolo Bonzini  tfdir / 'test_a_ui64_z_f16.c',
863941996bSPaolo Bonzini  tfdir / 'test_a_ui64_z_f32.c',
873941996bSPaolo Bonzini  tfdir / 'test_a_ui64_z_f64.c',
883941996bSPaolo Bonzini  tfdir / 'test_a_ui64_z_extF80.c',
893941996bSPaolo Bonzini  tfdir / 'test_a_ui64_z_f128.c',
903941996bSPaolo Bonzini  tfdir / 'test_a_i32_z_f16.c',
913941996bSPaolo Bonzini  tfdir / 'test_a_i32_z_f32.c',
923941996bSPaolo Bonzini  tfdir / 'test_a_i32_z_f64.c',
933941996bSPaolo Bonzini  tfdir / 'test_a_i32_z_extF80.c',
943941996bSPaolo Bonzini  tfdir / 'test_a_i32_z_f128.c',
953941996bSPaolo Bonzini  tfdir / 'test_a_i64_z_f16.c',
963941996bSPaolo Bonzini  tfdir / 'test_a_i64_z_f32.c',
973941996bSPaolo Bonzini  tfdir / 'test_a_i64_z_f64.c',
983941996bSPaolo Bonzini  tfdir / 'test_a_i64_z_extF80.c',
993941996bSPaolo Bonzini  tfdir / 'test_a_i64_z_f128.c',
1003941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_ui32_rx.c',
1013941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_ui64_rx.c',
1023941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_i32_rx.c',
1033941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_i64_rx.c',
1043941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_ui32_x.c',
1053941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_ui64_x.c',
1063941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_i32_x.c',
1073941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_i64_x.c',
1083941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_f32.c',
1093941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_f64.c',
1103941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_extF80.c',
1113941996bSPaolo Bonzini  tfdir / 'test_a_f16_z_f128.c',
1123941996bSPaolo Bonzini  tfdir / 'test_az_f16.c',
1133941996bSPaolo Bonzini  tfdir / 'test_az_f16_rx.c',
1143941996bSPaolo Bonzini  tfdir / 'test_abz_f16.c',
1153941996bSPaolo Bonzini  tfdir / 'test_abcz_f16.c',
1163941996bSPaolo Bonzini  tfdir / 'test_ab_f16_z_bool.c',
1173941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_ui32_rx.c',
1183941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_ui64_rx.c',
1193941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_i32_rx.c',
1203941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_i64_rx.c',
1213941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_ui32_x.c',
1223941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_ui64_x.c',
1233941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_i32_x.c',
1243941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_i64_x.c',
1253941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_f16.c',
1263941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_f64.c',
1273941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_extF80.c',
1283941996bSPaolo Bonzini  tfdir / 'test_a_f32_z_f128.c',
1293941996bSPaolo Bonzini  tfdir / 'test_az_f32.c',
1303941996bSPaolo Bonzini  tfdir / 'test_az_f32_rx.c',
1313941996bSPaolo Bonzini  tfdir / 'test_abz_f32.c',
1323941996bSPaolo Bonzini  tfdir / 'test_abcz_f32.c',
1333941996bSPaolo Bonzini  tfdir / 'test_ab_f32_z_bool.c',
1343941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_ui32_rx.c',
1353941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_ui64_rx.c',
1363941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_i32_rx.c',
1373941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_i64_rx.c',
1383941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_ui32_x.c',
1393941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_ui64_x.c',
1403941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_i32_x.c',
1413941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_i64_x.c',
1423941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_f16.c',
1433941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_f32.c',
1443941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_extF80.c',
1453941996bSPaolo Bonzini  tfdir / 'test_a_f64_z_f128.c',
1463941996bSPaolo Bonzini  tfdir / 'test_az_f64.c',
1473941996bSPaolo Bonzini  tfdir / 'test_az_f64_rx.c',
1483941996bSPaolo Bonzini  tfdir / 'test_abz_f64.c',
1493941996bSPaolo Bonzini  tfdir / 'test_abcz_f64.c',
1503941996bSPaolo Bonzini  tfdir / 'test_ab_f64_z_bool.c',
1513941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_ui32_rx.c',
1523941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_ui64_rx.c',
1533941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_i32_rx.c',
1543941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_i64_rx.c',
1553941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_ui32_x.c',
1563941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_ui64_x.c',
1573941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_i32_x.c',
1583941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_i64_x.c',
1593941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_f16.c',
1603941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_f32.c',
1613941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_f64.c',
1623941996bSPaolo Bonzini  tfdir / 'test_a_extF80_z_f128.c',
1633941996bSPaolo Bonzini  tfdir / 'test_az_extF80.c',
1643941996bSPaolo Bonzini  tfdir / 'test_az_extF80_rx.c',
1653941996bSPaolo Bonzini  tfdir / 'test_abz_extF80.c',
1663941996bSPaolo Bonzini  tfdir / 'test_ab_extF80_z_bool.c',
1673941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_ui32_rx.c',
1683941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_ui64_rx.c',
1693941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_i32_rx.c',
1703941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_i64_rx.c',
1713941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_ui32_x.c',
1723941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_ui64_x.c',
1733941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_i32_x.c',
1743941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_i64_x.c',
1753941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_f16.c',
1763941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_f32.c',
1773941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_f64.c',
1783941996bSPaolo Bonzini  tfdir / 'test_a_f128_z_extF80.c',
1793941996bSPaolo Bonzini  tfdir / 'test_az_f128.c',
1803941996bSPaolo Bonzini  tfdir / 'test_az_f128_rx.c',
1813941996bSPaolo Bonzini  tfdir / 'test_abz_f128.c',
1823941996bSPaolo Bonzini  tfdir / 'test_abcz_f128.c',
1833941996bSPaolo Bonzini  tfdir / 'test_ab_f128_z_bool.c',
1843941996bSPaolo Bonzini]
1853941996bSPaolo Bonzini
1863941996bSPaolo Bonzinilibtestfloat = static_library(
1873941996bSPaolo Bonzini  'testfloat',
1883941996bSPaolo Bonzini  files(
1893941996bSPaolo Bonzini    tfdir / 'uint128_inline.c',
1903941996bSPaolo Bonzini    tfdir / 'uint128.c',
1913941996bSPaolo Bonzini    tfdir / 'fail.c',
1923941996bSPaolo Bonzini    tfdir / 'functions_common.c',
1933941996bSPaolo Bonzini    tfdir / 'functionInfos.c',
1943941996bSPaolo Bonzini    tfdir / 'standardFunctionInfos.c',
1953941996bSPaolo Bonzini    tfdir / 'random.c',
1963941996bSPaolo Bonzini    tfdir / 'genCases_common.c',
1973941996bSPaolo Bonzini    tfgencases,
1983941996bSPaolo Bonzini    tfdir / 'genCases_writeTestsTotal.c',
1993941996bSPaolo Bonzini    tfdir / 'verCases_inline.c',
2003941996bSPaolo Bonzini    tfdir / 'verCases_common.c',
2013941996bSPaolo Bonzini    tfdir / 'verCases_writeFunctionName.c',
2023941996bSPaolo Bonzini    tfdir / 'readHex.c',
2033941996bSPaolo Bonzini    tfdir / 'writeHex.c',
2043941996bSPaolo Bonzini    tfwritecase,
2053941996bSPaolo Bonzini    tfdir / 'testLoops_common.c',
2063941996bSPaolo Bonzini    tftest,
2073941996bSPaolo Bonzini  ),
2083941996bSPaolo Bonzini  include_directories: sfinc,
2093941996bSPaolo Bonzini  c_args: tfcflags + fpcflags,
2103941996bSPaolo Bonzini)
2113941996bSPaolo Bonzini
2123941996bSPaolo Bonzinisfcflags = [
2134f07e71bSThomas Huth  '-Wno-implicit-fallthrough',
2143941996bSPaolo Bonzini  '-Wno-missing-prototypes',
2153941996bSPaolo Bonzini  '-Wno-redundant-decls',
2163941996bSPaolo Bonzini  '-Wno-return-type',
2173941996bSPaolo Bonzini  '-Wno-error',
2183941996bSPaolo Bonzini]
2193941996bSPaolo Bonzini
2203941996bSPaolo Bonzinilibsoftfloat = static_library(
2213941996bSPaolo Bonzini  'softfloat',
2223941996bSPaolo Bonzini  files(
2233941996bSPaolo Bonzini    # primitives
2243941996bSPaolo Bonzini    sfdir / 's_eq128.c',
2253941996bSPaolo Bonzini    sfdir / 's_le128.c',
2263941996bSPaolo Bonzini    sfdir / 's_lt128.c',
2273941996bSPaolo Bonzini    sfdir / 's_shortShiftLeft128.c',
2283941996bSPaolo Bonzini    sfdir / 's_shortShiftRight128.c',
2293941996bSPaolo Bonzini    sfdir / 's_shortShiftRightJam64.c',
2303941996bSPaolo Bonzini    sfdir / 's_shortShiftRightJam64Extra.c',
2313941996bSPaolo Bonzini    sfdir / 's_shortShiftRightJam128.c',
2323941996bSPaolo Bonzini    sfdir / 's_shortShiftRightJam128Extra.c',
2333941996bSPaolo Bonzini    sfdir / 's_shiftRightJam32.c',
2343941996bSPaolo Bonzini    sfdir / 's_shiftRightJam64.c',
2353941996bSPaolo Bonzini    sfdir / 's_shiftRightJam64Extra.c',
2363941996bSPaolo Bonzini    sfdir / 's_shiftRightJam128.c',
2373941996bSPaolo Bonzini    sfdir / 's_shiftRightJam128Extra.c',
2383941996bSPaolo Bonzini    sfdir / 's_shiftRightJam256M.c',
2393941996bSPaolo Bonzini    sfdir / 's_countLeadingZeros8.c',
2403941996bSPaolo Bonzini    sfdir / 's_countLeadingZeros16.c',
2413941996bSPaolo Bonzini    sfdir / 's_countLeadingZeros32.c',
2423941996bSPaolo Bonzini    sfdir / 's_countLeadingZeros64.c',
2433941996bSPaolo Bonzini    sfdir / 's_add128.c',
2443941996bSPaolo Bonzini    sfdir / 's_add256M.c',
2453941996bSPaolo Bonzini    sfdir / 's_sub128.c',
2463941996bSPaolo Bonzini    sfdir / 's_sub256M.c',
2473941996bSPaolo Bonzini    sfdir / 's_mul64ByShifted32To128.c',
2483941996bSPaolo Bonzini    sfdir / 's_mul64To128.c',
2493941996bSPaolo Bonzini    sfdir / 's_mul128By32.c',
2503941996bSPaolo Bonzini    sfdir / 's_mul128To256M.c',
2513941996bSPaolo Bonzini    sfdir / 's_approxRecip_1Ks.c',
2523941996bSPaolo Bonzini    sfdir / 's_approxRecip32_1.c',
2533941996bSPaolo Bonzini    sfdir / 's_approxRecipSqrt_1Ks.c',
2543941996bSPaolo Bonzini    sfdir / 's_approxRecipSqrt32_1.c',
2553941996bSPaolo Bonzini    # others
2563941996bSPaolo Bonzini    sfdir / 's_roundToUI32.c',
2573941996bSPaolo Bonzini    sfdir / 's_roundToUI64.c',
2583941996bSPaolo Bonzini    sfdir / 's_roundToI32.c',
2593941996bSPaolo Bonzini    sfdir / 's_roundToI64.c',
2603941996bSPaolo Bonzini    sfdir / 's_normSubnormalF16Sig.c',
2613941996bSPaolo Bonzini    sfdir / 's_roundPackToF16.c',
2623941996bSPaolo Bonzini    sfdir / 's_normRoundPackToF16.c',
2633941996bSPaolo Bonzini    sfdir / 's_addMagsF16.c',
2643941996bSPaolo Bonzini    sfdir / 's_subMagsF16.c',
2653941996bSPaolo Bonzini    sfdir / 's_mulAddF16.c',
2663941996bSPaolo Bonzini    sfdir / 's_normSubnormalF32Sig.c',
2673941996bSPaolo Bonzini    sfdir / 's_roundPackToF32.c',
2683941996bSPaolo Bonzini    sfdir / 's_normRoundPackToF32.c',
2693941996bSPaolo Bonzini    sfdir / 's_addMagsF32.c',
2703941996bSPaolo Bonzini    sfdir / 's_subMagsF32.c',
2713941996bSPaolo Bonzini    sfdir / 's_mulAddF32.c',
2723941996bSPaolo Bonzini    sfdir / 's_normSubnormalF64Sig.c',
2733941996bSPaolo Bonzini    sfdir / 's_roundPackToF64.c',
2743941996bSPaolo Bonzini    sfdir / 's_normRoundPackToF64.c',
2753941996bSPaolo Bonzini    sfdir / 's_addMagsF64.c',
2763941996bSPaolo Bonzini    sfdir / 's_subMagsF64.c',
2773941996bSPaolo Bonzini    sfdir / 's_mulAddF64.c',
2783941996bSPaolo Bonzini    sfdir / 's_normSubnormalExtF80Sig.c',
2793941996bSPaolo Bonzini    sfdir / 's_roundPackToExtF80.c',
2803941996bSPaolo Bonzini    sfdir / 's_normRoundPackToExtF80.c',
2813941996bSPaolo Bonzini    sfdir / 's_addMagsExtF80.c',
2823941996bSPaolo Bonzini    sfdir / 's_subMagsExtF80.c',
2833941996bSPaolo Bonzini    sfdir / 's_normSubnormalF128Sig.c',
2843941996bSPaolo Bonzini    sfdir / 's_roundPackToF128.c',
2853941996bSPaolo Bonzini    sfdir / 's_normRoundPackToF128.c',
2863941996bSPaolo Bonzini    sfdir / 's_addMagsF128.c',
2873941996bSPaolo Bonzini    sfdir / 's_subMagsF128.c',
2883941996bSPaolo Bonzini    sfdir / 's_mulAddF128.c',
2893941996bSPaolo Bonzini    sfdir / 'softfloat_state.c',
2903941996bSPaolo Bonzini    sfdir / 'ui32_to_f16.c',
2913941996bSPaolo Bonzini    sfdir / 'ui32_to_f32.c',
2923941996bSPaolo Bonzini    sfdir / 'ui32_to_f64.c',
2933941996bSPaolo Bonzini    sfdir / 'ui32_to_extF80.c',
2943941996bSPaolo Bonzini    sfdir / 'ui32_to_extF80M.c',
2953941996bSPaolo Bonzini    sfdir / 'ui32_to_f128.c',
2963941996bSPaolo Bonzini    sfdir / 'ui32_to_f128M.c',
2973941996bSPaolo Bonzini    sfdir / 'ui64_to_f16.c',
2983941996bSPaolo Bonzini    sfdir / 'ui64_to_f32.c',
2993941996bSPaolo Bonzini    sfdir / 'ui64_to_f64.c',
3003941996bSPaolo Bonzini    sfdir / 'ui64_to_extF80.c',
3013941996bSPaolo Bonzini    sfdir / 'ui64_to_extF80M.c',
3023941996bSPaolo Bonzini    sfdir / 'ui64_to_f128.c',
3033941996bSPaolo Bonzini    sfdir / 'ui64_to_f128M.c',
3043941996bSPaolo Bonzini    sfdir / 'i32_to_f16.c',
3053941996bSPaolo Bonzini    sfdir / 'i32_to_f32.c',
3063941996bSPaolo Bonzini    sfdir / 'i32_to_f64.c',
3073941996bSPaolo Bonzini    sfdir / 'i32_to_extF80.c',
3083941996bSPaolo Bonzini    sfdir / 'i32_to_extF80M.c',
3093941996bSPaolo Bonzini    sfdir / 'i32_to_f128.c',
3103941996bSPaolo Bonzini    sfdir / 'i32_to_f128M.c',
3113941996bSPaolo Bonzini    sfdir / 'i64_to_f16.c',
3123941996bSPaolo Bonzini    sfdir / 'i64_to_f32.c',
3133941996bSPaolo Bonzini    sfdir / 'i64_to_f64.c',
3143941996bSPaolo Bonzini    sfdir / 'i64_to_extF80.c',
3153941996bSPaolo Bonzini    sfdir / 'i64_to_extF80M.c',
3163941996bSPaolo Bonzini    sfdir / 'i64_to_f128.c',
3173941996bSPaolo Bonzini    sfdir / 'i64_to_f128M.c',
3183941996bSPaolo Bonzini    sfdir / 'f16_to_ui32.c',
3193941996bSPaolo Bonzini    sfdir / 'f16_to_ui64.c',
3203941996bSPaolo Bonzini    sfdir / 'f16_to_i32.c',
3213941996bSPaolo Bonzini    sfdir / 'f16_to_i64.c',
3223941996bSPaolo Bonzini    sfdir / 'f16_to_ui32_r_minMag.c',
3233941996bSPaolo Bonzini    sfdir / 'f16_to_ui64_r_minMag.c',
3243941996bSPaolo Bonzini    sfdir / 'f16_to_i32_r_minMag.c',
3253941996bSPaolo Bonzini    sfdir / 'f16_to_i64_r_minMag.c',
3263941996bSPaolo Bonzini    sfdir / 'f16_to_f32.c',
3273941996bSPaolo Bonzini    sfdir / 'f16_to_f64.c',
3283941996bSPaolo Bonzini    sfdir / 'f16_to_extF80.c',
3293941996bSPaolo Bonzini    sfdir / 'f16_to_extF80M.c',
3303941996bSPaolo Bonzini    sfdir / 'f16_to_f128.c',
3313941996bSPaolo Bonzini    sfdir / 'f16_to_f128M.c',
3323941996bSPaolo Bonzini    sfdir / 'f16_roundToInt.c',
3333941996bSPaolo Bonzini    sfdir / 'f16_add.c',
3343941996bSPaolo Bonzini    sfdir / 'f16_sub.c',
3353941996bSPaolo Bonzini    sfdir / 'f16_mul.c',
3363941996bSPaolo Bonzini    sfdir / 'f16_mulAdd.c',
3373941996bSPaolo Bonzini    sfdir / 'f16_div.c',
3383941996bSPaolo Bonzini    sfdir / 'f16_rem.c',
3393941996bSPaolo Bonzini    sfdir / 'f16_sqrt.c',
3403941996bSPaolo Bonzini    sfdir / 'f16_eq.c',
3413941996bSPaolo Bonzini    sfdir / 'f16_le.c',
3423941996bSPaolo Bonzini    sfdir / 'f16_lt.c',
3433941996bSPaolo Bonzini    sfdir / 'f16_eq_signaling.c',
3443941996bSPaolo Bonzini    sfdir / 'f16_le_quiet.c',
3453941996bSPaolo Bonzini    sfdir / 'f16_lt_quiet.c',
3463941996bSPaolo Bonzini    sfdir / 'f16_isSignalingNaN.c',
3473941996bSPaolo Bonzini    sfdir / 'f32_to_ui32.c',
3483941996bSPaolo Bonzini    sfdir / 'f32_to_ui64.c',
3493941996bSPaolo Bonzini    sfdir / 'f32_to_i32.c',
3503941996bSPaolo Bonzini    sfdir / 'f32_to_i64.c',
3513941996bSPaolo Bonzini    sfdir / 'f32_to_ui32_r_minMag.c',
3523941996bSPaolo Bonzini    sfdir / 'f32_to_ui64_r_minMag.c',
3533941996bSPaolo Bonzini    sfdir / 'f32_to_i32_r_minMag.c',
3543941996bSPaolo Bonzini    sfdir / 'f32_to_i64_r_minMag.c',
3553941996bSPaolo Bonzini    sfdir / 'f32_to_f16.c',
3563941996bSPaolo Bonzini    sfdir / 'f32_to_f64.c',
3573941996bSPaolo Bonzini    sfdir / 'f32_to_extF80.c',
3583941996bSPaolo Bonzini    sfdir / 'f32_to_extF80M.c',
3593941996bSPaolo Bonzini    sfdir / 'f32_to_f128.c',
3603941996bSPaolo Bonzini    sfdir / 'f32_to_f128M.c',
3613941996bSPaolo Bonzini    sfdir / 'f32_roundToInt.c',
3623941996bSPaolo Bonzini    sfdir / 'f32_add.c',
3633941996bSPaolo Bonzini    sfdir / 'f32_sub.c',
3643941996bSPaolo Bonzini    sfdir / 'f32_mul.c',
3653941996bSPaolo Bonzini    sfdir / 'f32_mulAdd.c',
3663941996bSPaolo Bonzini    sfdir / 'f32_div.c',
3673941996bSPaolo Bonzini    sfdir / 'f32_rem.c',
3683941996bSPaolo Bonzini    sfdir / 'f32_sqrt.c',
3693941996bSPaolo Bonzini    sfdir / 'f32_eq.c',
3703941996bSPaolo Bonzini    sfdir / 'f32_le.c',
3713941996bSPaolo Bonzini    sfdir / 'f32_lt.c',
3723941996bSPaolo Bonzini    sfdir / 'f32_eq_signaling.c',
3733941996bSPaolo Bonzini    sfdir / 'f32_le_quiet.c',
3743941996bSPaolo Bonzini    sfdir / 'f32_lt_quiet.c',
3753941996bSPaolo Bonzini    sfdir / 'f32_isSignalingNaN.c',
3763941996bSPaolo Bonzini    sfdir / 'f64_to_ui32.c',
3773941996bSPaolo Bonzini    sfdir / 'f64_to_ui64.c',
3783941996bSPaolo Bonzini    sfdir / 'f64_to_i32.c',
3793941996bSPaolo Bonzini    sfdir / 'f64_to_i64.c',
3803941996bSPaolo Bonzini    sfdir / 'f64_to_ui32_r_minMag.c',
3813941996bSPaolo Bonzini    sfdir / 'f64_to_ui64_r_minMag.c',
3823941996bSPaolo Bonzini    sfdir / 'f64_to_i32_r_minMag.c',
3833941996bSPaolo Bonzini    sfdir / 'f64_to_i64_r_minMag.c',
3843941996bSPaolo Bonzini    sfdir / 'f64_to_f16.c',
3853941996bSPaolo Bonzini    sfdir / 'f64_to_f32.c',
3863941996bSPaolo Bonzini    sfdir / 'f64_to_extF80.c',
3873941996bSPaolo Bonzini    sfdir / 'f64_to_extF80M.c',
3883941996bSPaolo Bonzini    sfdir / 'f64_to_f128.c',
3893941996bSPaolo Bonzini    sfdir / 'f64_to_f128M.c',
3903941996bSPaolo Bonzini    sfdir / 'f64_roundToInt.c',
3913941996bSPaolo Bonzini    sfdir / 'f64_add.c',
3923941996bSPaolo Bonzini    sfdir / 'f64_sub.c',
3933941996bSPaolo Bonzini    sfdir / 'f64_mul.c',
3943941996bSPaolo Bonzini    sfdir / 'f64_mulAdd.c',
3953941996bSPaolo Bonzini    sfdir / 'f64_div.c',
3963941996bSPaolo Bonzini    sfdir / 'f64_rem.c',
3973941996bSPaolo Bonzini    sfdir / 'f64_sqrt.c',
3983941996bSPaolo Bonzini    sfdir / 'f64_eq.c',
3993941996bSPaolo Bonzini    sfdir / 'f64_le.c',
4003941996bSPaolo Bonzini    sfdir / 'f64_lt.c',
4013941996bSPaolo Bonzini    sfdir / 'f64_eq_signaling.c',
4023941996bSPaolo Bonzini    sfdir / 'f64_le_quiet.c',
4033941996bSPaolo Bonzini    sfdir / 'f64_lt_quiet.c',
4043941996bSPaolo Bonzini    sfdir / 'f64_isSignalingNaN.c',
4053941996bSPaolo Bonzini    sfdir / 'extF80_to_ui32.c',
4063941996bSPaolo Bonzini    sfdir / 'extF80_to_ui64.c',
4073941996bSPaolo Bonzini    sfdir / 'extF80_to_i32.c',
4083941996bSPaolo Bonzini    sfdir / 'extF80_to_i64.c',
4093941996bSPaolo Bonzini    sfdir / 'extF80_to_ui32_r_minMag.c',
4103941996bSPaolo Bonzini    sfdir / 'extF80_to_ui64_r_minMag.c',
4113941996bSPaolo Bonzini    sfdir / 'extF80_to_i32_r_minMag.c',
4123941996bSPaolo Bonzini    sfdir / 'extF80_to_i64_r_minMag.c',
4133941996bSPaolo Bonzini    sfdir / 'extF80_to_f16.c',
4143941996bSPaolo Bonzini    sfdir / 'extF80_to_f32.c',
4153941996bSPaolo Bonzini    sfdir / 'extF80_to_f64.c',
4163941996bSPaolo Bonzini    sfdir / 'extF80_to_f128.c',
4173941996bSPaolo Bonzini    sfdir / 'extF80_roundToInt.c',
4183941996bSPaolo Bonzini    sfdir / 'extF80_add.c',
4193941996bSPaolo Bonzini    sfdir / 'extF80_sub.c',
4203941996bSPaolo Bonzini    sfdir / 'extF80_mul.c',
4213941996bSPaolo Bonzini    sfdir / 'extF80_div.c',
4223941996bSPaolo Bonzini    sfdir / 'extF80_rem.c',
4233941996bSPaolo Bonzini    sfdir / 'extF80_sqrt.c',
4243941996bSPaolo Bonzini    sfdir / 'extF80_eq.c',
4253941996bSPaolo Bonzini    sfdir / 'extF80_le.c',
4263941996bSPaolo Bonzini    sfdir / 'extF80_lt.c',
4273941996bSPaolo Bonzini    sfdir / 'extF80_eq_signaling.c',
4283941996bSPaolo Bonzini    sfdir / 'extF80_le_quiet.c',
4293941996bSPaolo Bonzini    sfdir / 'extF80_lt_quiet.c',
4303941996bSPaolo Bonzini    sfdir / 'extF80_isSignalingNaN.c',
4313941996bSPaolo Bonzini    sfdir / 'extF80M_to_ui32.c',
4323941996bSPaolo Bonzini    sfdir / 'extF80M_to_ui64.c',
4333941996bSPaolo Bonzini    sfdir / 'extF80M_to_i32.c',
4343941996bSPaolo Bonzini    sfdir / 'extF80M_to_i64.c',
4353941996bSPaolo Bonzini    sfdir / 'extF80M_to_ui32_r_minMag.c',
4363941996bSPaolo Bonzini    sfdir / 'extF80M_to_ui64_r_minMag.c',
4373941996bSPaolo Bonzini    sfdir / 'extF80M_to_i32_r_minMag.c',
4383941996bSPaolo Bonzini    sfdir / 'extF80M_to_i64_r_minMag.c',
4393941996bSPaolo Bonzini    sfdir / 'extF80M_to_f16.c',
4403941996bSPaolo Bonzini    sfdir / 'extF80M_to_f32.c',
4413941996bSPaolo Bonzini    sfdir / 'extF80M_to_f64.c',
4423941996bSPaolo Bonzini    sfdir / 'extF80M_to_f128M.c',
4433941996bSPaolo Bonzini    sfdir / 'extF80M_roundToInt.c',
4443941996bSPaolo Bonzini    sfdir / 'extF80M_add.c',
4453941996bSPaolo Bonzini    sfdir / 'extF80M_sub.c',
4463941996bSPaolo Bonzini    sfdir / 'extF80M_mul.c',
4473941996bSPaolo Bonzini    sfdir / 'extF80M_div.c',
4483941996bSPaolo Bonzini    sfdir / 'extF80M_rem.c',
4493941996bSPaolo Bonzini    sfdir / 'extF80M_sqrt.c',
4503941996bSPaolo Bonzini    sfdir / 'extF80M_eq.c',
4513941996bSPaolo Bonzini    sfdir / 'extF80M_le.c',
4523941996bSPaolo Bonzini    sfdir / 'extF80M_lt.c',
4533941996bSPaolo Bonzini    sfdir / 'extF80M_eq_signaling.c',
4543941996bSPaolo Bonzini    sfdir / 'extF80M_le_quiet.c',
4553941996bSPaolo Bonzini    sfdir / 'extF80M_lt_quiet.c',
4563941996bSPaolo Bonzini    sfdir / 'f128_to_ui32.c',
4573941996bSPaolo Bonzini    sfdir / 'f128_to_ui64.c',
4583941996bSPaolo Bonzini    sfdir / 'f128_to_i32.c',
4593941996bSPaolo Bonzini    sfdir / 'f128_to_i64.c',
4603941996bSPaolo Bonzini    sfdir / 'f128_to_ui32_r_minMag.c',
4613941996bSPaolo Bonzini    sfdir / 'f128_to_ui64_r_minMag.c',
4623941996bSPaolo Bonzini    sfdir / 'f128_to_i32_r_minMag.c',
4633941996bSPaolo Bonzini    sfdir / 'f128_to_i64_r_minMag.c',
4643941996bSPaolo Bonzini    sfdir / 'f128_to_f16.c',
4653941996bSPaolo Bonzini    sfdir / 'f128_to_f32.c',
4663941996bSPaolo Bonzini    sfdir / 'f128_to_extF80.c',
4673941996bSPaolo Bonzini    sfdir / 'f128_to_f64.c',
4683941996bSPaolo Bonzini    sfdir / 'f128_roundToInt.c',
4693941996bSPaolo Bonzini    sfdir / 'f128_add.c',
4703941996bSPaolo Bonzini    sfdir / 'f128_sub.c',
4713941996bSPaolo Bonzini    sfdir / 'f128_mul.c',
4723941996bSPaolo Bonzini    sfdir / 'f128_mulAdd.c',
4733941996bSPaolo Bonzini    sfdir / 'f128_div.c',
4743941996bSPaolo Bonzini    sfdir / 'f128_rem.c',
4753941996bSPaolo Bonzini    sfdir / 'f128_sqrt.c',
4763941996bSPaolo Bonzini    sfdir / 'f128_eq.c',
4773941996bSPaolo Bonzini    sfdir / 'f128_le.c',
4783941996bSPaolo Bonzini    sfdir / 'f128_lt.c',
4793941996bSPaolo Bonzini    sfdir / 'f128_eq_signaling.c',
4803941996bSPaolo Bonzini    sfdir / 'f128_le_quiet.c',
4813941996bSPaolo Bonzini    sfdir / 'f128_lt_quiet.c',
4823941996bSPaolo Bonzini    sfdir / 'f128_isSignalingNaN.c',
4833941996bSPaolo Bonzini    sfdir / 'f128M_to_ui32.c',
4843941996bSPaolo Bonzini    sfdir / 'f128M_to_ui64.c',
4853941996bSPaolo Bonzini    sfdir / 'f128M_to_i32.c',
4863941996bSPaolo Bonzini    sfdir / 'f128M_to_i64.c',
4873941996bSPaolo Bonzini    sfdir / 'f128M_to_ui32_r_minMag.c',
4883941996bSPaolo Bonzini    sfdir / 'f128M_to_ui64_r_minMag.c',
4893941996bSPaolo Bonzini    sfdir / 'f128M_to_i32_r_minMag.c',
4903941996bSPaolo Bonzini    sfdir / 'f128M_to_i64_r_minMag.c',
4913941996bSPaolo Bonzini    sfdir / 'f128M_to_f16.c',
4923941996bSPaolo Bonzini    sfdir / 'f128M_to_f32.c',
4933941996bSPaolo Bonzini    sfdir / 'f128M_to_extF80M.c',
4943941996bSPaolo Bonzini    sfdir / 'f128M_to_f64.c',
4953941996bSPaolo Bonzini    sfdir / 'f128M_roundToInt.c',
4963941996bSPaolo Bonzini    sfdir / 'f128M_add.c',
4973941996bSPaolo Bonzini    sfdir / 'f128M_sub.c',
4983941996bSPaolo Bonzini    sfdir / 'f128M_mul.c',
4993941996bSPaolo Bonzini    sfdir / 'f128M_mulAdd.c',
5003941996bSPaolo Bonzini    sfdir / 'f128M_div.c',
5013941996bSPaolo Bonzini    sfdir / 'f128M_rem.c',
5023941996bSPaolo Bonzini    sfdir / 'f128M_sqrt.c',
5033941996bSPaolo Bonzini    sfdir / 'f128M_eq.c',
5043941996bSPaolo Bonzini    sfdir / 'f128M_le.c',
5053941996bSPaolo Bonzini    sfdir / 'f128M_lt.c',
5063941996bSPaolo Bonzini    sfdir / 'f128M_eq_signaling.c',
5073941996bSPaolo Bonzini    sfdir / 'f128M_le_quiet.c',
5083941996bSPaolo Bonzini    sfdir / 'f128M_lt_quiet.c',
5093941996bSPaolo Bonzini    # spe
5103941996bSPaolo Bonzini    sfspedir / 'softfloat_raiseFlags.c',
5113941996bSPaolo Bonzini    sfspedir / 's_f16UIToCommonNaN.c',
5123941996bSPaolo Bonzini    sfspedir / 's_commonNaNToF16UI.c',
5133941996bSPaolo Bonzini    sfspedir / 's_propagateNaNF16UI.c',
5143941996bSPaolo Bonzini    sfspedir / 's_f32UIToCommonNaN.c',
5153941996bSPaolo Bonzini    sfspedir / 's_commonNaNToF32UI.c',
5163941996bSPaolo Bonzini    sfspedir / 's_propagateNaNF32UI.c',
5173941996bSPaolo Bonzini    sfspedir / 's_f64UIToCommonNaN.c',
5183941996bSPaolo Bonzini    sfspedir / 's_commonNaNToF64UI.c',
5193941996bSPaolo Bonzini    sfspedir / 's_propagateNaNF64UI.c',
5203941996bSPaolo Bonzini    sfspedir / 'extF80M_isSignalingNaN.c',
5213941996bSPaolo Bonzini    sfspedir / 's_extF80UIToCommonNaN.c',
5223941996bSPaolo Bonzini    sfspedir / 's_commonNaNToExtF80UI.c',
5233941996bSPaolo Bonzini    sfspedir / 's_propagateNaNExtF80UI.c',
5243941996bSPaolo Bonzini    sfspedir / 'f128M_isSignalingNaN.c',
5253941996bSPaolo Bonzini    sfspedir / 's_f128UIToCommonNaN.c',
5263941996bSPaolo Bonzini    sfspedir / 's_commonNaNToF128UI.c',
5273941996bSPaolo Bonzini    sfspedir / 's_propagateNaNF128UI.c',
5283941996bSPaolo Bonzini  ),
5293941996bSPaolo Bonzini  include_directories: sfinc,
5303941996bSPaolo Bonzini  c_args: sfcflags + fpcflags,
5313941996bSPaolo Bonzini)
5323941996bSPaolo Bonzini
5333941996bSPaolo Bonzinifpcflags += [
5343941996bSPaolo Bonzini  # work around TARGET_* poisoning
5353941996bSPaolo Bonzini  '-DHW_POISON_H',
5363941996bSPaolo Bonzini  # define a target to match testfloat's implementation-defined choices, such as
5373941996bSPaolo Bonzini  # whether to raise the invalid flag when dealing with NaNs in muladd.
5383941996bSPaolo Bonzini  '-DTARGET_ARM',
5393941996bSPaolo Bonzini  # FIXME: uiZ may be used uninitialized in this function
5403941996bSPaolo Bonzini  '-Wno-uninitialized',
5413941996bSPaolo Bonzini]
5423941996bSPaolo Bonzini
5433941996bSPaolo Bonzinifptest = executable(
5443941996bSPaolo Bonzini  'fp-test',
5453941996bSPaolo Bonzini  ['fp-test.c', tfdir / 'slowfloat.c', '../../fpu/softfloat.c'],
5463941996bSPaolo Bonzini  link_with: [libtestfloat, libsoftfloat],
5473941996bSPaolo Bonzini  dependencies: [qemuutil],
5483941996bSPaolo Bonzini  include_directories: [sfinc, include_directories(tfdir)],
5493941996bSPaolo Bonzini  c_args: fpcflags,
5503941996bSPaolo Bonzini)
5513941996bSPaolo Bonzinisoftfloat_conv_tests = {
5523941996bSPaolo Bonzini    'float-to-float': 'f16_to_f32 f16_to_f64 f16_to_extF80 f16_to_f128 ' +
5533941996bSPaolo Bonzini                      'f32_to_f16 f32_to_f64 f32_to_extF80 ' +
5543941996bSPaolo Bonzini                      'f64_to_f16 f64_to_f32 ' +
5553941996bSPaolo Bonzini                      'extF80_to_f16 extF80_to_f32 ' +
5563941996bSPaolo Bonzini                      'extF80_to_f64 extF80_to_f128 ' +
5573941996bSPaolo Bonzini                      'f128_to_f16',
5583941996bSPaolo Bonzini    'int-to-float': 'i32_to_f16 i64_to_f16 i32_to_f32 i64_to_f32 ' +
559*90d00452SAlex Bennée                    'i32_to_f64 i64_to_f64 ' +
560*90d00452SAlex Bennée                    'i32_to_extF80 i64_to_extF80 ' +
561*90d00452SAlex Bennée                    'i32_to_f128 i64_to_f128',
5623941996bSPaolo Bonzini    'uint-to-float': 'ui32_to_f16 ui64_to_f16 ui32_to_f32 ui64_to_f32 ' +
5633941996bSPaolo Bonzini                     'ui32_to_f64 ui64_to_f64 ui64_to_f128 ' +
5643941996bSPaolo Bonzini                     'ui32_to_extF80 ui64_to_extF80',
5653941996bSPaolo Bonzini    'float-to-int': 'f16_to_i32 f16_to_i32_r_minMag ' +
5663941996bSPaolo Bonzini                    'f32_to_i32 f32_to_i32_r_minMag ' +
5673941996bSPaolo Bonzini                    'f64_to_i32 f64_to_i32_r_minMag ' +
5683941996bSPaolo Bonzini                    'extF80_to_i32 extF80_to_i32_r_minMag ' +
5693941996bSPaolo Bonzini                    'f128_to_i32 f128_to_i32_r_minMag ' +
5703941996bSPaolo Bonzini                    'f16_to_i64 f16_to_i64_r_minMag ' +
5713941996bSPaolo Bonzini                    'f32_to_i64 f32_to_i64_r_minMag ' +
5723941996bSPaolo Bonzini                    'f64_to_i64 f64_to_i64_r_minMag ' +
5733941996bSPaolo Bonzini                    'extF80_to_i64 extF80_to_i64_r_minMag ' +
5743941996bSPaolo Bonzini                    'f128_to_i64 f128_to_i64_r_minMag',
5753941996bSPaolo Bonzini    'float-to-uint': 'f16_to_ui32 f16_to_ui32_r_minMag ' +
5763941996bSPaolo Bonzini                     'f32_to_ui32 f32_to_ui32_r_minMag ' +
5773941996bSPaolo Bonzini                     'f64_to_ui32 f64_to_ui32_r_minMag ' +
5783941996bSPaolo Bonzini                     'extF80_to_ui32 extF80_to_ui32_r_minMag ' +
5793941996bSPaolo Bonzini                     'f128_to_ui32 f128_to_ui32_r_minMag ' +
5803941996bSPaolo Bonzini                     'f16_to_ui64 f16_to_ui64_r_minMag ' +
5813941996bSPaolo Bonzini                     'f32_to_ui64 f32_to_ui64_r_minMag ' +
5823941996bSPaolo Bonzini                     'f64_to_ui64 f64_to_ui64_r_minMag ' +
5833941996bSPaolo Bonzini                     'extF80_to_ui64 extF80_to_ui64_r_minMag ' +
5843941996bSPaolo Bonzini                     'f128_to_ui64 f128_to_ui64_r_minMag',
5853941996bSPaolo Bonzini    'round-to-integer': 'f16_roundToInt f32_roundToInt ' +
586*90d00452SAlex Bennée                        'f64_roundToInt extF80_roundToInt f128_roundToInt'
5873941996bSPaolo Bonzini}
5883941996bSPaolo Bonzinisoftfloat_tests = {
5893941996bSPaolo Bonzini    'eq_signaling' : 'compare',
5903941996bSPaolo Bonzini    'le' : 'compare',
5913941996bSPaolo Bonzini    'le_quiet' : 'compare',
5923941996bSPaolo Bonzini    'lt_quiet' : 'compare',
5933941996bSPaolo Bonzini    'add': 'ops',
5943941996bSPaolo Bonzini    'sub': 'ops',
5953941996bSPaolo Bonzini    'mul': 'ops',
5963941996bSPaolo Bonzini    'div': 'ops',
5973941996bSPaolo Bonzini    'rem': 'ops',
5983941996bSPaolo Bonzini    'sqrt': 'ops'
5993941996bSPaolo Bonzini}
6003941996bSPaolo Bonzini# The full test suite can take a bit of time, default to a quick run
6013941996bSPaolo Bonzini# "-l 2 -r all" can take more than a day for some operations and is best
6023941996bSPaolo Bonzini# run manually
6033941996bSPaolo Bonzinifptest_args = ['-s', '-l', '1']
6043941996bSPaolo Bonzinifptest_rounding_args = ['-r', 'all']
6053941996bSPaolo Bonzini
6063941996bSPaolo Bonzini# Conversion Routines:
6073941996bSPaolo Bonziniforeach k, v : softfloat_conv_tests
60834f02e9fSPaolo Bonzini  test('fp-test-' + k, fptest,
6093941996bSPaolo Bonzini       args: fptest_args + fptest_rounding_args + v.split(),
6103941996bSPaolo Bonzini       suite: ['softfloat', 'softfloat-conv'])
6113941996bSPaolo Bonziniendforeach
6123941996bSPaolo Bonzini
6133941996bSPaolo Bonziniforeach k, v : softfloat_tests
61434f02e9fSPaolo Bonzini  test('fp-test-' + k, fptest,
6153941996bSPaolo Bonzini       args: fptest_args + fptest_rounding_args +
616*90d00452SAlex Bennée             ['f16_' + k, 'f32_' + k, 'f64_' + k, 'f128_' + k, 'extF80_' + k],
6173941996bSPaolo Bonzini       suite: ['softfloat', 'softfloat-' + v])
6183941996bSPaolo Bonziniendforeach
619*90d00452SAlex Bennée
620*90d00452SAlex Bennée# FIXME: extF80_{mulAdd} (missing)
62134f02e9fSPaolo Bonzinitest('fp-test-mulAdd', fptest,
6223941996bSPaolo Bonzini     # no fptest_rounding_args
6233941996bSPaolo Bonzini     args: fptest_args +
6243941996bSPaolo Bonzini           ['f16_mulAdd', 'f32_mulAdd', 'f64_mulAdd', 'f128_mulAdd'],
625dc1d91acSPaolo Bonzini     suite: ['softfloat-slow', 'softfloat-ops-slow'], timeout: 90)
6263941996bSPaolo Bonzini
6273941996bSPaolo Bonzinifpbench = executable(
6283941996bSPaolo Bonzini  'fp-bench',
6293941996bSPaolo Bonzini  ['fp-bench.c', '../../fpu/softfloat.c'],
6303941996bSPaolo Bonzini  link_with: [libtestfloat, libsoftfloat],
6313941996bSPaolo Bonzini  dependencies: [qemuutil],
6323941996bSPaolo Bonzini  include_directories: [sfinc, include_directories(tfdir)],
6333941996bSPaolo Bonzini  c_args: fpcflags,
6343941996bSPaolo Bonzini)
6352fa3546cSRichard Henderson
6362fa3546cSRichard Hendersonfptestlog2 = executable(
6372fa3546cSRichard Henderson  'fp-test-log2',
6382fa3546cSRichard Henderson  ['fp-test-log2.c', '../../fpu/softfloat.c'],
6392fa3546cSRichard Henderson  link_with: [libsoftfloat],
6402fa3546cSRichard Henderson  dependencies: [qemuutil],
6412fa3546cSRichard Henderson  include_directories: [sfinc],
6422fa3546cSRichard Henderson  c_args: fpcflags,
6432fa3546cSRichard Henderson)
6442fa3546cSRichard Hendersontest('fp-test-log2', fptestlog2,
6452fa3546cSRichard Henderson     suite: ['softfloat', 'softfloat-ops'])
646