From: Florian Krohm Date: Mon, 22 Sep 2025 15:55:23 +0000 (+0000) Subject: s390: Remove a few BFP testcases X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2c79953bd75b4c9bb36a4ff4ccfa3675e1aa7e36;p=thirdparty%2Fvalgrind.git s390: Remove a few BFP testcases Namely: fgx, fixbr, rounding-4, and rounding-5 Those insn tests are covered by bfp-emit.pl Part of fixing https://bugs.kde.org/show_bug.cgi?id=509572 --- diff --git a/.gitignore b/.gitignore index a5e97008b..6cf083afe 100644 --- a/.gitignore +++ b/.gitignore @@ -2136,7 +2136,8 @@ /none/tests/s390x/sub /none/tests/s390x/sub-z14 /none/tests/s390x/sub_EI -/none/tests/s390x/tcxb +/none/tests/s390x/bfp-tdc +/none/tests/s390x/hfp /none/tests/s390x/xc /none/tests/s390x/xor /none/tests/s390x/xor_EI @@ -2144,7 +2145,6 @@ /none/tests/s390x/stcke /none/tests/s390x/stckf /none/tests/s390x/op_exception -/none/tests/s390x/fgx /none/tests/s390x/condloadstore /none/tests/s390x/fold_And16 /none/tests/s390x/stfle @@ -2187,8 +2187,6 @@ /none/tests/s390x/rounding-1 /none/tests/s390x/rounding-2 /none/tests/s390x/rounding-3 -/none/tests/s390x/rounding-4 -/none/tests/s390x/rounding-5 /none/tests/s390x/bfp-1 /none/tests/s390x/bfp-2 /none/tests/s390x/bfp-3 @@ -2231,7 +2229,6 @@ /none/tests/s390x/srnmt /none/tests/s390x/pfpo /none/tests/s390x/rxsbg -/none/tests/s390x/fixbr /none/tests/s390x/popcnt /none/tests/s390x/vector /none/tests/s390x/lsc2 diff --git a/none/tests/s390x/Makefile.am b/none/tests/s390x/Makefile.am index 57dbb55db..8a373c4c8 100644 --- a/none/tests/s390x/Makefile.am +++ b/none/tests/s390x/Makefile.am @@ -5,11 +5,11 @@ dist_noinst_SCRIPTS = filter_stderr bfp-emit.pl INSN_TESTS = clc clcle cvb cvd icm lpr lam_stam xc mvst add sub mul \ and or xor insert div srst fold_And16 flogr sub_EI add_EI \ and_EI or_EI xor_EI insert_EI mul_GE add_GE condloadstore \ - op_exception fgx stck stckf stcke stfle cksm mvcl clcl troo \ + op_exception stck stckf stcke stfle cksm mvcl clcl troo \ trto trot trtt tr tre cij cgij clij clgij crj cgrj clrj clgrj \ cs csg cds cdsg cu21 cu21_1 cu24 cu24_1 cu42 cu12 cu12_1 \ ex_sig ex_clone cu14 cu14_1 cu41 fpconv ecag fpext_warn \ - bfp-tdc rounding-1 rounding-2 rounding-3 rounding-4 rounding-5 bfp-1 \ + bfp-tdc rounding-1 rounding-2 rounding-3 bfp-1 \ bfp-2 bfp-3 bfp-4 srnm srnmb comp-1 comp-2 exrl tmll tm stmg \ ex clst mvc test_fork test_sig rounding-6 rxsbg popcnt \ high-word traps \ @@ -22,7 +22,7 @@ INSN_TESTS = clc clcle cvb cvd icm lpr lam_stam xc mvst add sub mul \ vector_float add-z14 sub-z14 mul-z14 bic \ misc3 vec2 vec2_float \ dfp-1 dfp-2 dfp-3 dfp-4 dfpconv dfpext dfptest pfpo srnmt \ - fpext fixbr hfp + fpext hfp check_PROGRAMS = $(INSN_TESTS) \ allexec \ @@ -39,7 +39,6 @@ EXTRA_DIST = \ ecag.stdout.exp-z13 ecag.stdout.exp-z14 ecag.stdout.exp-z15 \ ecag.stdout.exp-z16 \ op00.stderr.exp op00.vgtest \ - fixbr.vgtest fixbr.stderr.exp fixbr.stdout.exp \ fpext.vgtest fpext.stderr.exp fpext.stdout.exp \ fpext_fail.vgtest fpext_fail.stderr.exp fpext_fail.stdout.exp \ test.h opcodes.h add.h and.h div.h insert.h dfp_utils.h \ diff --git a/none/tests/s390x/fgx.c b/none/tests/s390x/fgx.c deleted file mode 100644 index 6c7905395..000000000 --- a/none/tests/s390x/fgx.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include "opcodes.h" - -int main() -{ - register long g asm("r7"); - register double f asm("f8"); - double f1; - - memset(&f1, 0x0f, sizeof(double)); - f = f1; - g = 42; - printf("test LGDR\n\n"); - printf("before g = %ld\n", g); - printf("before f = %a\n", f); - printf("copy f to g\n"); - asm volatile ( LGDR(7,8) : "=d"(g) : "f"(f)); - printf("after g = %16.16lx\n", g); /* 0x0x0x0...... */ - printf("after f = %a\n", f); - - printf("\ntest LDGR\n\n"); - f = 3.14; - printf("before g = %16.16lx\n", g); /* 0x0x0x0...... */ - printf("before f = %a\n", f); - printf("copy g to f\n"); - asm volatile ( LDGR(8,7) : "=f"(f) : "d"(g)); - printf("after g = %16.16lx\n", g); /* 0x0x0x0...... */ - printf("after f = %a\n", f); - - return 0; -} - diff --git a/none/tests/s390x/fgx.stderr.exp b/none/tests/s390x/fgx.stderr.exp deleted file mode 100644 index 139597f9c..000000000 --- a/none/tests/s390x/fgx.stderr.exp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/none/tests/s390x/fgx.stdout.exp b/none/tests/s390x/fgx.stdout.exp deleted file mode 100644 index 242ff5ed8..000000000 --- a/none/tests/s390x/fgx.stdout.exp +++ /dev/null @@ -1,15 +0,0 @@ -test LGDR - -before g = 42 -before f = 0x1.f0f0f0f0f0f0fp-783 -copy f to g -after g = 0f0f0f0f0f0f0f0f -after f = 0x1.f0f0f0f0f0f0fp-783 - -test LDGR - -before g = 0f0f0f0f0f0f0f0f -before f = 0x1.91eb851eb851fp+1 -copy g to f -after g = 0f0f0f0f0f0f0f0f -after f = 0x1.f0f0f0f0f0f0fp-783 diff --git a/none/tests/s390x/fgx.vgtest b/none/tests/s390x/fgx.vgtest deleted file mode 100644 index 7bd7dac43..000000000 --- a/none/tests/s390x/fgx.vgtest +++ /dev/null @@ -1 +0,0 @@ -prog: fgx diff --git a/none/tests/s390x/fixbr.c b/none/tests/s390x/fixbr.c deleted file mode 100644 index ba99210b5..000000000 --- a/none/tests/s390x/fixbr.c +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include -#include -#include -#include -#include "opcodes.h" -#include "rounding.h" - -/* Test "fixbr" with rounding mode given in insn (m3 field) - Covers all generally available rounding modes that can be mapped to - IRRoundingMode. As a consequence m3=1 which is "round to nearest with - ties away from 0" is not tested here. -*/ - -const char * -rtext(unsigned m3_round) -{ - switch (m3_round) { - case 0: return "[-> per fpc]"; - case 1: return "[-> nearest away]"; - case 3: return "[-> prepare short]"; // floating point extension fac needed - case 4: return "[-> nearest even]"; - case 5: return "[-> 0]"; - case 6: return "[-> +inf]"; - case 7: return "[-> -inf]"; - } - assert(0); -} - -#define round_to_int(value,round) \ -do { \ - long double src = value; \ - long double dst; \ - \ - __asm__ volatile ("fixbr %[dst]," #round ",%[src]\n\t" \ - : [dst] "=f"(dst) \ - : [src] "f"(src)); \ - \ - printf("fixbr %.5Lf\t-> %Lg %s\n", \ - src, dst, rtext(round)); \ -} while (0) - -#define fixbr(value,round) round_to_int(value,round) - -void -set_rounding_mode(unsigned mode) -{ - register unsigned r asm("1") = mode; - __asm__ volatile ( SFPC(1) : : "d"(r) ); -} - - -int main(void) -{ - int j; - static const long double dval[] = { - 1.25, 1.5, 2.5, 1.75, -1.25, -1.5, -2.5, -1.75, 0.0, - }; - - assert(sizeof(long double) == 16); - - /* f128 -> f128, round to int */ - for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) { - set_rounding_mode(FPC_BFP_ROUND_ZERO); - fixbr(dval[j], M3_BFP_ROUND_NEAREST_EVEN); - set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN); - fixbr(dval[j], M3_BFP_ROUND_ZERO); - fixbr(dval[j], M3_BFP_ROUND_POSINF); - fixbr(dval[j], M3_BFP_ROUND_NEGINF); - } - - return 0; -} diff --git a/none/tests/s390x/fixbr.stderr.exp b/none/tests/s390x/fixbr.stderr.exp deleted file mode 100644 index 139597f9c..000000000 --- a/none/tests/s390x/fixbr.stderr.exp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/none/tests/s390x/fixbr.stdout.exp b/none/tests/s390x/fixbr.stdout.exp deleted file mode 100644 index 787c0d8d2..000000000 --- a/none/tests/s390x/fixbr.stdout.exp +++ /dev/null @@ -1,36 +0,0 @@ -fixbr 1.25000 -> 1 [-> nearest even] -fixbr 1.25000 -> 1 [-> 0] -fixbr 1.25000 -> 2 [-> +inf] -fixbr 1.25000 -> 1 [-> -inf] -fixbr 1.50000 -> 2 [-> nearest even] -fixbr 1.50000 -> 1 [-> 0] -fixbr 1.50000 -> 2 [-> +inf] -fixbr 1.50000 -> 1 [-> -inf] -fixbr 2.50000 -> 2 [-> nearest even] -fixbr 2.50000 -> 2 [-> 0] -fixbr 2.50000 -> 3 [-> +inf] -fixbr 2.50000 -> 2 [-> -inf] -fixbr 1.75000 -> 2 [-> nearest even] -fixbr 1.75000 -> 1 [-> 0] -fixbr 1.75000 -> 2 [-> +inf] -fixbr 1.75000 -> 1 [-> -inf] -fixbr -1.25000 -> -1 [-> nearest even] -fixbr -1.25000 -> -1 [-> 0] -fixbr -1.25000 -> -1 [-> +inf] -fixbr -1.25000 -> -2 [-> -inf] -fixbr -1.50000 -> -2 [-> nearest even] -fixbr -1.50000 -> -1 [-> 0] -fixbr -1.50000 -> -1 [-> +inf] -fixbr -1.50000 -> -2 [-> -inf] -fixbr -2.50000 -> -2 [-> nearest even] -fixbr -2.50000 -> -2 [-> 0] -fixbr -2.50000 -> -2 [-> +inf] -fixbr -2.50000 -> -3 [-> -inf] -fixbr -1.75000 -> -2 [-> nearest even] -fixbr -1.75000 -> -1 [-> 0] -fixbr -1.75000 -> -1 [-> +inf] -fixbr -1.75000 -> -2 [-> -inf] -fixbr 0.00000 -> 0 [-> nearest even] -fixbr 0.00000 -> 0 [-> 0] -fixbr 0.00000 -> 0 [-> +inf] -fixbr 0.00000 -> 0 [-> -inf] diff --git a/none/tests/s390x/fixbr.vgtest b/none/tests/s390x/fixbr.vgtest deleted file mode 100644 index 22eb7afab..000000000 --- a/none/tests/s390x/fixbr.vgtest +++ /dev/null @@ -1,2 +0,0 @@ -prog: fixbr -prereq: test -e fixbr && ../../../tests/s390x_features s390x-fpext diff --git a/none/tests/s390x/rounding-4.c b/none/tests/s390x/rounding-4.c deleted file mode 100644 index a4a0e9603..000000000 --- a/none/tests/s390x/rounding-4.c +++ /dev/null @@ -1,95 +0,0 @@ -#include -#include -#include "opcodes.h" - -/* Test "load rounded" with universally available rounding modes. - Rounding mode is provided via FPC. - Also test "load lengthened" (which is independent of rounding modes). */ - -volatile double d; -volatile float f; - -const char * -rtext(unsigned fpc_round) -{ - switch (fpc_round) { - case 0: return "[-> near]"; - case 1: return "[-> zero]"; - case 2: return "[-> +inf]"; - case 3: return "[-> -inf]"; - } - assert(0); -} - -void -set_rounding_mode(unsigned mode) -{ - printf("setting FPC rounding mode to %s\n", rtext(mode)); - register unsigned r asm("1") = mode; - __asm__ volatile ( SFPC(1) : : "d"(r) ); -} - - -void -load_rounded(void) -{ - f = d; - printf("load rounded d = %10.3f f = %10.3f\n", d, f); -} - -void -load_lengthened(void) -{ - d = f; - printf("load lengthened d = %22.20g f = %22.20g\n", d, f); -} - -/* Tests for load rounded and load lengthened */ -int main() -{ - d = 12345678.25; - set_rounding_mode(0); - load_rounded(); - set_rounding_mode(1); - load_rounded(); - set_rounding_mode(2); - load_rounded(); - set_rounding_mode(3); - load_rounded(); - printf("======================================\n"); - d = 12345678.75; - set_rounding_mode(0); - load_rounded(); - set_rounding_mode(1); - load_rounded(); - set_rounding_mode(2); - load_rounded(); - set_rounding_mode(3); - load_rounded(); - printf("======================================\n"); - d = -12345678.25; - set_rounding_mode(0); - load_rounded(); - set_rounding_mode(1); - load_rounded(); - set_rounding_mode(2); - load_rounded(); - set_rounding_mode(3); - load_rounded(); - printf("======================================\n"); - d = -12345678.75; - set_rounding_mode(0); - load_rounded(); - set_rounding_mode(1); - load_rounded(); - set_rounding_mode(2); - load_rounded(); - set_rounding_mode(3); - load_rounded(); - printf("\n"); - - f = 1234.5678f; - load_lengthened(); - - return 0; -} diff --git a/none/tests/s390x/rounding-4.stderr.exp b/none/tests/s390x/rounding-4.stderr.exp deleted file mode 100644 index 139597f9c..000000000 --- a/none/tests/s390x/rounding-4.stderr.exp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/none/tests/s390x/rounding-4.stdout.exp b/none/tests/s390x/rounding-4.stdout.exp deleted file mode 100644 index e0b58fb92..000000000 --- a/none/tests/s390x/rounding-4.stdout.exp +++ /dev/null @@ -1,37 +0,0 @@ -setting FPC rounding mode to [-> near] -load rounded d = 12345678.250 f = 12345678.000 -setting FPC rounding mode to [-> zero] -load rounded d = 12345678.250 f = 12345678.000 -setting FPC rounding mode to [-> +inf] -load rounded d = 12345678.250 f = 12345679.000 -setting FPC rounding mode to [-> -inf] -load rounded d = 12345678.250 f = 12345678.000 -====================================== -setting FPC rounding mode to [-> near] -load rounded d = 12345678.750 f = 12345679.000 -setting FPC rounding mode to [-> zero] -load rounded d = 12345678.750 f = 12345678.000 -setting FPC rounding mode to [-> +inf] -load rounded d = 12345678.750 f = 12345679.000 -setting FPC rounding mode to [-> -inf] -load rounded d = 12345678.750 f = 12345678.000 -====================================== -setting FPC rounding mode to [-> near] -load rounded d = -12345678.250 f = -12345678.000 -setting FPC rounding mode to [-> zero] -load rounded d = -12345678.250 f = -12345678.000 -setting FPC rounding mode to [-> +inf] -load rounded d = -12345678.250 f = -12345678.000 -setting FPC rounding mode to [-> -inf] -load rounded d = -12345678.250 f = -12345679.000 -====================================== -setting FPC rounding mode to [-> near] -load rounded d = -12345678.750 f = -12345679.000 -setting FPC rounding mode to [-> zero] -load rounded d = -12345678.750 f = -12345678.000 -setting FPC rounding mode to [-> +inf] -load rounded d = -12345678.750 f = -12345678.000 -setting FPC rounding mode to [-> -inf] -load rounded d = -12345678.750 f = -12345679.000 - -load lengthened d = 1234.5677490234375 f = 1234.5677490234375 diff --git a/none/tests/s390x/rounding-4.vgtest b/none/tests/s390x/rounding-4.vgtest deleted file mode 100644 index e264b57a7..000000000 --- a/none/tests/s390x/rounding-4.vgtest +++ /dev/null @@ -1 +0,0 @@ -prog: rounding-4 diff --git a/none/tests/s390x/rounding-5.c b/none/tests/s390x/rounding-5.c deleted file mode 100644 index e1eab408e..000000000 --- a/none/tests/s390x/rounding-5.c +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include -#include -#include -#include "opcodes.h" - -/* Test "convert from fixed" with universally available rounding modes. - Rounding mode is provided via FPC. */ - -volatile int32_t i32; -volatile int64_t i64; - -const char * -rtext(unsigned fpc_round) -{ - switch (fpc_round) { - case 0: return "[-> near]"; - case 1: return "[-> zero]"; - case 2: return "[-> +inf]"; - case 3: return "[-> -inf]"; - } - assert(0); -} - -void -set_rounding_mode(unsigned mode) -{ - printf("setting FPC rounding mode to %s\n", rtext(mode)); - register unsigned r asm("1") = mode; - __asm__ volatile ( SFPC(1) : : "d"(r) ); -} - -void cefbr(unsigned mode) -{ - set_rounding_mode(mode); - - float out; - - __asm__ volatile("cefbr %[r1],%[r2]" : [r1] "=f"(out) : [r2] "d"(i32)); - printf("cefbr: %"PRId32" -> %f\n", i32, out); -} - -void cegbr(unsigned mode) -{ - set_rounding_mode(mode); - - float out; - - __asm__ volatile("cegbr %[r1],%[r2]" : [r1] "=f"(out) : [r2] "d"(i64)); - printf("cegbr: %"PRId64" -> %f\n", i64, out); -} - -void cdgbr(unsigned mode) -{ - set_rounding_mode(mode); - - double out; - - __asm__ volatile("cdgbr %[r1],%[r2]" : [r1] "=f"(out) : [r2] "d"(i64)); - printf("cegbr: %"PRId64" -> %f\n", i64, out); -} - - -int main() -{ - int mode; - - /* i32 -> f32 */ - i32 = INT32_MAX; - for (mode = 0; mode <= 3; ++mode) cefbr(mode); - printf("\n"); - i32 = INT32_MIN; - for (mode = 0; mode <= 3; ++mode) cefbr(mode); - printf("\n"); - - /* i64 -> f32 */ - i64 = INT64_MAX; - for (mode = 0; mode <= 3; ++mode) cegbr(mode); - printf("\n"); - i64 = INT64_MIN; - for (mode = 0; mode <= 3; ++mode) cegbr(mode); - printf("\n"); - - /* i64 -> f64 */ - i64 = INT64_MAX; - for (mode = 0; mode <= 3; ++mode) cdgbr(mode); - printf("\n"); - i64 = INT64_MIN; - for (mode = 0; mode <= 3; ++mode) cdgbr(mode); - printf("\n"); - - return 0; -} diff --git a/none/tests/s390x/rounding-5.stderr.exp b/none/tests/s390x/rounding-5.stderr.exp deleted file mode 100644 index 139597f9c..000000000 --- a/none/tests/s390x/rounding-5.stderr.exp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/none/tests/s390x/rounding-5.stdout.exp b/none/tests/s390x/rounding-5.stdout.exp deleted file mode 100644 index 80e55f67d..000000000 --- a/none/tests/s390x/rounding-5.stdout.exp +++ /dev/null @@ -1,54 +0,0 @@ -setting FPC rounding mode to [-> near] -cefbr: 2147483647 -> 2147483648.000000 -setting FPC rounding mode to [-> zero] -cefbr: 2147483647 -> 2147483520.000000 -setting FPC rounding mode to [-> +inf] -cefbr: 2147483647 -> 2147483648.000000 -setting FPC rounding mode to [-> -inf] -cefbr: 2147483647 -> 2147483520.000000 - -setting FPC rounding mode to [-> near] -cefbr: -2147483648 -> -2147483648.000000 -setting FPC rounding mode to [-> zero] -cefbr: -2147483648 -> -2147483648.000000 -setting FPC rounding mode to [-> +inf] -cefbr: -2147483648 -> -2147483648.000000 -setting FPC rounding mode to [-> -inf] -cefbr: -2147483648 -> -2147483648.000000 - -setting FPC rounding mode to [-> near] -cegbr: 9223372036854775807 -> 9223372036854775808.000000 -setting FPC rounding mode to [-> zero] -cegbr: 9223372036854775807 -> 9223371487098961920.000000 -setting FPC rounding mode to [-> +inf] -cegbr: 9223372036854775807 -> 9223372036854775808.000000 -setting FPC rounding mode to [-> -inf] -cegbr: 9223372036854775807 -> 9223371487098961920.000000 - -setting FPC rounding mode to [-> near] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 -setting FPC rounding mode to [-> zero] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 -setting FPC rounding mode to [-> +inf] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 -setting FPC rounding mode to [-> -inf] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 - -setting FPC rounding mode to [-> near] -cegbr: 9223372036854775807 -> 9223372036854775808.000000 -setting FPC rounding mode to [-> zero] -cegbr: 9223372036854775807 -> 9223372036854774784.000000 -setting FPC rounding mode to [-> +inf] -cegbr: 9223372036854775807 -> 9223372036854775808.000000 -setting FPC rounding mode to [-> -inf] -cegbr: 9223372036854775807 -> 9223372036854774784.000000 - -setting FPC rounding mode to [-> near] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 -setting FPC rounding mode to [-> zero] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 -setting FPC rounding mode to [-> +inf] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 -setting FPC rounding mode to [-> -inf] -cegbr: -9223372036854775808 -> -9223372036854775808.000000 - diff --git a/none/tests/s390x/rounding-5.vgtest b/none/tests/s390x/rounding-5.vgtest deleted file mode 100644 index 51f302173..000000000 --- a/none/tests/s390x/rounding-5.vgtest +++ /dev/null @@ -1 +0,0 @@ -prog: rounding-5