From: Florian Krohm Date: Wed, 24 Sep 2025 20:54:22 +0000 (+0000) Subject: s390: Remove rounding-6 BFP testcase (convert to int) X-Git-Tag: VALGRIND_3_26_0~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c574f5eb10d06b491512806354f8d15c3d3e020a;p=thirdparty%2Fvalgrind.git s390: Remove rounding-6 BFP testcase (convert to int) Should have been part of 18c5454874d. Part of fixing https://bugs.kde.org/show_bug.cgi?id=509572 --- diff --git a/.gitignore b/.gitignore index b059789b8..53e2a0f83 100644 --- a/.gitignore +++ b/.gitignore @@ -2185,7 +2185,6 @@ /none/tests/s390x/fpext_warn /none/tests/s390x/fpext_fail /none/tests/s390x/rounding-1 -/none/tests/s390x/rounding-6 /none/tests/s390x/bfp-arith /none/tests/s390x/bfp-load /none/tests/s390x/bfp-fpc diff --git a/none/tests/s390x/Makefile.am b/none/tests/s390x/Makefile.am index afa61c94b..abe71570f 100644 --- a/none/tests/s390x/Makefile.am +++ b/none/tests/s390x/Makefile.am @@ -11,7 +11,7 @@ INSN_TESTS = clc clcle cvb cvd icm lpr lam_stam xc mvst add sub mul \ ex_sig ex_clone cu14 cu14_1 cu41 ecag fpext_warn fpext_fail \ bfp-tdc bfp-load bfp-fpc bfp-convert rounding-1 bfp-arith \ bfp-3 bfp-compare comp-1 comp-2 exrl tmll tm stmg \ - ex clst mvc test_fork test_sig rounding-6 rxsbg popcnt \ + ex clst mvc test_fork test_sig rxsbg popcnt \ high-word traps \ spechelper-alr spechelper-algr \ spechelper-slr spechelper-slgr \ diff --git a/none/tests/s390x/rounding-6.c b/none/tests/s390x/rounding-6.c deleted file mode 100644 index e88087682..000000000 --- a/none/tests/s390x/rounding-6.c +++ /dev/null @@ -1,159 +0,0 @@ -#include -#include -#include -#include -#include -#include "opcodes.h" -#include "rounding.h" - -/* Test "convert to fixed" 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 convert_to_int(opcode,src_type,dst_type,dst_fmt,round,value) \ -do { \ - src_type src = value; \ - dst_type dst; \ - unsigned cc; \ - \ - __asm__ volatile (opcode " %[dst]," #round ",%[src]\n\t" \ - "ipm %[cc]\n\t" \ - "srl %[cc],28\n\t" \ - : [dst] "=d"(dst), [cc] "=d"(cc) \ - : [src] "f"(src) \ - : "cc"); \ - \ - printf("%s %f\t-> %"dst_fmt"\tcc = %u %s\n", \ - opcode, src, dst, cc, rtext(round)); \ -} while (0) - -#define round_to_int(opcode,type,round,value) \ -do { \ - type src = value; \ - type dst; \ - \ - __asm__ volatile (opcode " %[dst]," #round ",%[src]\n\t" \ - : [dst] "=f"(dst) \ - : [src] "f"(src)); \ - \ - printf("%s %.5f\t-> %g %s\n", \ - opcode, src, dst, rtext(round)); \ -} while (0) - - -#define cfebr(value, round) \ - convert_to_int("cfebr",float,int32_t,PRId32,round,value) -#define cfdbr(value, round) \ - convert_to_int("cfdbr",double,int32_t,PRId32,round,value) -#define cgebr(value, round) \ - convert_to_int("cgebr",float,int64_t,PRId64,round,value) -#define cgdbr(value, round) \ - convert_to_int("cgdbr",double,int64_t,PRId64,round,value) - -#define fiebr(value, round) \ - round_to_int("fiebr",float,round,value) -#define fidbr(value, round) \ - round_to_int("fidbr",double,round,value) - -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 float fval[] = { - 1.25f, 1.5f, 2.5f, 1.75f, -1.25f, -1.5f, -2.5f, -1.75f, 0.0f, - }; - static const double dval[] = { - 1.25, 1.5, 2.5, 1.75, -1.25, -1.5, -2.5, -1.75, 0.0, - }; - - /* Note when testing M3_NEAR need to set the FPC rounding mode - to something else. FPC rounding mode is NEAR by default. - Setting the FPC rounding mode to != NEAR is the only way to make - sure the M3 field is not ignored. */ - - /* f32 -> i32 */ - for (j = 0; j < sizeof fval / sizeof fval[0]; ++j) { - set_rounding_mode(FPC_BFP_ROUND_ZERO); - cfebr(fval[j], M3_BFP_ROUND_NEAREST_EVEN); - set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN); - cfebr(fval[j], M3_BFP_ROUND_ZERO); - cfebr(fval[j], M3_BFP_ROUND_POSINF); - cfebr(fval[j], M3_BFP_ROUND_NEGINF); - } - - /* f32 -> i64 */ - for (j = 0; j < sizeof fval / sizeof fval[0]; ++j) { - set_rounding_mode(FPC_BFP_ROUND_ZERO); - cgebr(fval[j], M3_BFP_ROUND_NEAREST_EVEN); - set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN); - cgebr(fval[j], M3_BFP_ROUND_ZERO); - cgebr(fval[j], M3_BFP_ROUND_POSINF); - cgebr(fval[j], M3_BFP_ROUND_NEGINF); - } - - /* f64 -> i32 */ - for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) { - set_rounding_mode(FPC_BFP_ROUND_ZERO); - cfdbr(dval[j], M3_BFP_ROUND_NEAREST_EVEN); - set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN); - cfdbr(dval[j], M3_BFP_ROUND_ZERO); - cfdbr(dval[j], M3_BFP_ROUND_POSINF); - cfdbr(dval[j], M3_BFP_ROUND_NEGINF); - } - - /* f64 -> i64 */ - for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) { - set_rounding_mode(FPC_BFP_ROUND_ZERO); - cgdbr(dval[j], M3_BFP_ROUND_NEAREST_EVEN); - set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN); - cgdbr(dval[j], M3_BFP_ROUND_ZERO); - cgdbr(dval[j], M3_BFP_ROUND_POSINF); - cgdbr(dval[j], M3_BFP_ROUND_NEGINF); - } - - /* f32 -> f32, round to int */ - for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) { - set_rounding_mode(FPC_BFP_ROUND_ZERO); - fiebr(dval[j], M3_BFP_ROUND_NEAREST_EVEN); - set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN); - fiebr(dval[j], M3_BFP_ROUND_ZERO); - fiebr(dval[j], M3_BFP_ROUND_POSINF); - fiebr(dval[j], M3_BFP_ROUND_NEGINF); - } - - /* f64 -> f64, round to int */ - for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) { - set_rounding_mode(FPC_BFP_ROUND_ZERO); - fidbr(dval[j], M3_BFP_ROUND_NEAREST_EVEN); - set_rounding_mode(FPC_BFP_ROUND_NEAREST_EVEN); - fidbr(dval[j], M3_BFP_ROUND_ZERO); - fidbr(dval[j], M3_BFP_ROUND_POSINF); - fidbr(dval[j], M3_BFP_ROUND_NEGINF); - } - - return 0; -} diff --git a/none/tests/s390x/rounding-6.stderr.exp b/none/tests/s390x/rounding-6.stderr.exp deleted file mode 100644 index 139597f9c..000000000 --- a/none/tests/s390x/rounding-6.stderr.exp +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/none/tests/s390x/rounding-6.stdout.exp b/none/tests/s390x/rounding-6.stdout.exp deleted file mode 100644 index f01a22973..000000000 --- a/none/tests/s390x/rounding-6.stdout.exp +++ /dev/null @@ -1,216 +0,0 @@ -cfebr 1.250000 -> 1 cc = 2 [-> nearest even] -cfebr 1.250000 -> 1 cc = 2 [-> 0] -cfebr 1.250000 -> 2 cc = 2 [-> +inf] -cfebr 1.250000 -> 1 cc = 2 [-> -inf] -cfebr 1.500000 -> 2 cc = 2 [-> nearest even] -cfebr 1.500000 -> 1 cc = 2 [-> 0] -cfebr 1.500000 -> 2 cc = 2 [-> +inf] -cfebr 1.500000 -> 1 cc = 2 [-> -inf] -cfebr 2.500000 -> 2 cc = 2 [-> nearest even] -cfebr 2.500000 -> 2 cc = 2 [-> 0] -cfebr 2.500000 -> 3 cc = 2 [-> +inf] -cfebr 2.500000 -> 2 cc = 2 [-> -inf] -cfebr 1.750000 -> 2 cc = 2 [-> nearest even] -cfebr 1.750000 -> 1 cc = 2 [-> 0] -cfebr 1.750000 -> 2 cc = 2 [-> +inf] -cfebr 1.750000 -> 1 cc = 2 [-> -inf] -cfebr -1.250000 -> -1 cc = 1 [-> nearest even] -cfebr -1.250000 -> -1 cc = 1 [-> 0] -cfebr -1.250000 -> -1 cc = 1 [-> +inf] -cfebr -1.250000 -> -2 cc = 1 [-> -inf] -cfebr -1.500000 -> -2 cc = 1 [-> nearest even] -cfebr -1.500000 -> -1 cc = 1 [-> 0] -cfebr -1.500000 -> -1 cc = 1 [-> +inf] -cfebr -1.500000 -> -2 cc = 1 [-> -inf] -cfebr -2.500000 -> -2 cc = 1 [-> nearest even] -cfebr -2.500000 -> -2 cc = 1 [-> 0] -cfebr -2.500000 -> -2 cc = 1 [-> +inf] -cfebr -2.500000 -> -3 cc = 1 [-> -inf] -cfebr -1.750000 -> -2 cc = 1 [-> nearest even] -cfebr -1.750000 -> -1 cc = 1 [-> 0] -cfebr -1.750000 -> -1 cc = 1 [-> +inf] -cfebr -1.750000 -> -2 cc = 1 [-> -inf] -cfebr 0.000000 -> 0 cc = 0 [-> nearest even] -cfebr 0.000000 -> 0 cc = 0 [-> 0] -cfebr 0.000000 -> 0 cc = 0 [-> +inf] -cfebr 0.000000 -> 0 cc = 0 [-> -inf] -cgebr 1.250000 -> 1 cc = 2 [-> nearest even] -cgebr 1.250000 -> 1 cc = 2 [-> 0] -cgebr 1.250000 -> 2 cc = 2 [-> +inf] -cgebr 1.250000 -> 1 cc = 2 [-> -inf] -cgebr 1.500000 -> 2 cc = 2 [-> nearest even] -cgebr 1.500000 -> 1 cc = 2 [-> 0] -cgebr 1.500000 -> 2 cc = 2 [-> +inf] -cgebr 1.500000 -> 1 cc = 2 [-> -inf] -cgebr 2.500000 -> 2 cc = 2 [-> nearest even] -cgebr 2.500000 -> 2 cc = 2 [-> 0] -cgebr 2.500000 -> 3 cc = 2 [-> +inf] -cgebr 2.500000 -> 2 cc = 2 [-> -inf] -cgebr 1.750000 -> 2 cc = 2 [-> nearest even] -cgebr 1.750000 -> 1 cc = 2 [-> 0] -cgebr 1.750000 -> 2 cc = 2 [-> +inf] -cgebr 1.750000 -> 1 cc = 2 [-> -inf] -cgebr -1.250000 -> -1 cc = 1 [-> nearest even] -cgebr -1.250000 -> -1 cc = 1 [-> 0] -cgebr -1.250000 -> -1 cc = 1 [-> +inf] -cgebr -1.250000 -> -2 cc = 1 [-> -inf] -cgebr -1.500000 -> -2 cc = 1 [-> nearest even] -cgebr -1.500000 -> -1 cc = 1 [-> 0] -cgebr -1.500000 -> -1 cc = 1 [-> +inf] -cgebr -1.500000 -> -2 cc = 1 [-> -inf] -cgebr -2.500000 -> -2 cc = 1 [-> nearest even] -cgebr -2.500000 -> -2 cc = 1 [-> 0] -cgebr -2.500000 -> -2 cc = 1 [-> +inf] -cgebr -2.500000 -> -3 cc = 1 [-> -inf] -cgebr -1.750000 -> -2 cc = 1 [-> nearest even] -cgebr -1.750000 -> -1 cc = 1 [-> 0] -cgebr -1.750000 -> -1 cc = 1 [-> +inf] -cgebr -1.750000 -> -2 cc = 1 [-> -inf] -cgebr 0.000000 -> 0 cc = 0 [-> nearest even] -cgebr 0.000000 -> 0 cc = 0 [-> 0] -cgebr 0.000000 -> 0 cc = 0 [-> +inf] -cgebr 0.000000 -> 0 cc = 0 [-> -inf] -cfdbr 1.250000 -> 1 cc = 2 [-> nearest even] -cfdbr 1.250000 -> 1 cc = 2 [-> 0] -cfdbr 1.250000 -> 2 cc = 2 [-> +inf] -cfdbr 1.250000 -> 1 cc = 2 [-> -inf] -cfdbr 1.500000 -> 2 cc = 2 [-> nearest even] -cfdbr 1.500000 -> 1 cc = 2 [-> 0] -cfdbr 1.500000 -> 2 cc = 2 [-> +inf] -cfdbr 1.500000 -> 1 cc = 2 [-> -inf] -cfdbr 2.500000 -> 2 cc = 2 [-> nearest even] -cfdbr 2.500000 -> 2 cc = 2 [-> 0] -cfdbr 2.500000 -> 3 cc = 2 [-> +inf] -cfdbr 2.500000 -> 2 cc = 2 [-> -inf] -cfdbr 1.750000 -> 2 cc = 2 [-> nearest even] -cfdbr 1.750000 -> 1 cc = 2 [-> 0] -cfdbr 1.750000 -> 2 cc = 2 [-> +inf] -cfdbr 1.750000 -> 1 cc = 2 [-> -inf] -cfdbr -1.250000 -> -1 cc = 1 [-> nearest even] -cfdbr -1.250000 -> -1 cc = 1 [-> 0] -cfdbr -1.250000 -> -1 cc = 1 [-> +inf] -cfdbr -1.250000 -> -2 cc = 1 [-> -inf] -cfdbr -1.500000 -> -2 cc = 1 [-> nearest even] -cfdbr -1.500000 -> -1 cc = 1 [-> 0] -cfdbr -1.500000 -> -1 cc = 1 [-> +inf] -cfdbr -1.500000 -> -2 cc = 1 [-> -inf] -cfdbr -2.500000 -> -2 cc = 1 [-> nearest even] -cfdbr -2.500000 -> -2 cc = 1 [-> 0] -cfdbr -2.500000 -> -2 cc = 1 [-> +inf] -cfdbr -2.500000 -> -3 cc = 1 [-> -inf] -cfdbr -1.750000 -> -2 cc = 1 [-> nearest even] -cfdbr -1.750000 -> -1 cc = 1 [-> 0] -cfdbr -1.750000 -> -1 cc = 1 [-> +inf] -cfdbr -1.750000 -> -2 cc = 1 [-> -inf] -cfdbr 0.000000 -> 0 cc = 0 [-> nearest even] -cfdbr 0.000000 -> 0 cc = 0 [-> 0] -cfdbr 0.000000 -> 0 cc = 0 [-> +inf] -cfdbr 0.000000 -> 0 cc = 0 [-> -inf] -cgdbr 1.250000 -> 1 cc = 2 [-> nearest even] -cgdbr 1.250000 -> 1 cc = 2 [-> 0] -cgdbr 1.250000 -> 2 cc = 2 [-> +inf] -cgdbr 1.250000 -> 1 cc = 2 [-> -inf] -cgdbr 1.500000 -> 2 cc = 2 [-> nearest even] -cgdbr 1.500000 -> 1 cc = 2 [-> 0] -cgdbr 1.500000 -> 2 cc = 2 [-> +inf] -cgdbr 1.500000 -> 1 cc = 2 [-> -inf] -cgdbr 2.500000 -> 2 cc = 2 [-> nearest even] -cgdbr 2.500000 -> 2 cc = 2 [-> 0] -cgdbr 2.500000 -> 3 cc = 2 [-> +inf] -cgdbr 2.500000 -> 2 cc = 2 [-> -inf] -cgdbr 1.750000 -> 2 cc = 2 [-> nearest even] -cgdbr 1.750000 -> 1 cc = 2 [-> 0] -cgdbr 1.750000 -> 2 cc = 2 [-> +inf] -cgdbr 1.750000 -> 1 cc = 2 [-> -inf] -cgdbr -1.250000 -> -1 cc = 1 [-> nearest even] -cgdbr -1.250000 -> -1 cc = 1 [-> 0] -cgdbr -1.250000 -> -1 cc = 1 [-> +inf] -cgdbr -1.250000 -> -2 cc = 1 [-> -inf] -cgdbr -1.500000 -> -2 cc = 1 [-> nearest even] -cgdbr -1.500000 -> -1 cc = 1 [-> 0] -cgdbr -1.500000 -> -1 cc = 1 [-> +inf] -cgdbr -1.500000 -> -2 cc = 1 [-> -inf] -cgdbr -2.500000 -> -2 cc = 1 [-> nearest even] -cgdbr -2.500000 -> -2 cc = 1 [-> 0] -cgdbr -2.500000 -> -2 cc = 1 [-> +inf] -cgdbr -2.500000 -> -3 cc = 1 [-> -inf] -cgdbr -1.750000 -> -2 cc = 1 [-> nearest even] -cgdbr -1.750000 -> -1 cc = 1 [-> 0] -cgdbr -1.750000 -> -1 cc = 1 [-> +inf] -cgdbr -1.750000 -> -2 cc = 1 [-> -inf] -cgdbr 0.000000 -> 0 cc = 0 [-> nearest even] -cgdbr 0.000000 -> 0 cc = 0 [-> 0] -cgdbr 0.000000 -> 0 cc = 0 [-> +inf] -cgdbr 0.000000 -> 0 cc = 0 [-> -inf] -fiebr 1.25000 -> 1 [-> nearest even] -fiebr 1.25000 -> 1 [-> 0] -fiebr 1.25000 -> 2 [-> +inf] -fiebr 1.25000 -> 1 [-> -inf] -fiebr 1.50000 -> 2 [-> nearest even] -fiebr 1.50000 -> 1 [-> 0] -fiebr 1.50000 -> 2 [-> +inf] -fiebr 1.50000 -> 1 [-> -inf] -fiebr 2.50000 -> 2 [-> nearest even] -fiebr 2.50000 -> 2 [-> 0] -fiebr 2.50000 -> 3 [-> +inf] -fiebr 2.50000 -> 2 [-> -inf] -fiebr 1.75000 -> 2 [-> nearest even] -fiebr 1.75000 -> 1 [-> 0] -fiebr 1.75000 -> 2 [-> +inf] -fiebr 1.75000 -> 1 [-> -inf] -fiebr -1.25000 -> -1 [-> nearest even] -fiebr -1.25000 -> -1 [-> 0] -fiebr -1.25000 -> -1 [-> +inf] -fiebr -1.25000 -> -2 [-> -inf] -fiebr -1.50000 -> -2 [-> nearest even] -fiebr -1.50000 -> -1 [-> 0] -fiebr -1.50000 -> -1 [-> +inf] -fiebr -1.50000 -> -2 [-> -inf] -fiebr -2.50000 -> -2 [-> nearest even] -fiebr -2.50000 -> -2 [-> 0] -fiebr -2.50000 -> -2 [-> +inf] -fiebr -2.50000 -> -3 [-> -inf] -fiebr -1.75000 -> -2 [-> nearest even] -fiebr -1.75000 -> -1 [-> 0] -fiebr -1.75000 -> -1 [-> +inf] -fiebr -1.75000 -> -2 [-> -inf] -fiebr 0.00000 -> 0 [-> nearest even] -fiebr 0.00000 -> 0 [-> 0] -fiebr 0.00000 -> 0 [-> +inf] -fiebr 0.00000 -> 0 [-> -inf] -fidbr 1.25000 -> 1 [-> nearest even] -fidbr 1.25000 -> 1 [-> 0] -fidbr 1.25000 -> 2 [-> +inf] -fidbr 1.25000 -> 1 [-> -inf] -fidbr 1.50000 -> 2 [-> nearest even] -fidbr 1.50000 -> 1 [-> 0] -fidbr 1.50000 -> 2 [-> +inf] -fidbr 1.50000 -> 1 [-> -inf] -fidbr 2.50000 -> 2 [-> nearest even] -fidbr 2.50000 -> 2 [-> 0] -fidbr 2.50000 -> 3 [-> +inf] -fidbr 2.50000 -> 2 [-> -inf] -fidbr 1.75000 -> 2 [-> nearest even] -fidbr 1.75000 -> 1 [-> 0] -fidbr 1.75000 -> 2 [-> +inf] -fidbr 1.75000 -> 1 [-> -inf] -fidbr -1.25000 -> -1 [-> nearest even] -fidbr -1.25000 -> -1 [-> 0] -fidbr -1.25000 -> -1 [-> +inf] -fidbr -1.25000 -> -2 [-> -inf] -fidbr -1.50000 -> -2 [-> nearest even] -fidbr -1.50000 -> -1 [-> 0] -fidbr -1.50000 -> -1 [-> +inf] -fidbr -1.50000 -> -2 [-> -inf] -fidbr -2.50000 -> -2 [-> nearest even] -fidbr -2.50000 -> -2 [-> 0] -fidbr -2.50000 -> -2 [-> +inf] -fidbr -2.50000 -> -3 [-> -inf] -fidbr -1.75000 -> -2 [-> nearest even] -fidbr -1.75000 -> -1 [-> 0] -fidbr -1.75000 -> -1 [-> +inf] -fidbr -1.75000 -> -2 [-> -inf] -fidbr 0.00000 -> 0 [-> nearest even] -fidbr 0.00000 -> 0 [-> 0] -fidbr 0.00000 -> 0 [-> +inf] -fidbr 0.00000 -> 0 [-> -inf] diff --git a/none/tests/s390x/rounding-6.vgtest b/none/tests/s390x/rounding-6.vgtest deleted file mode 100644 index 13baa314f..000000000 --- a/none/tests/s390x/rounding-6.vgtest +++ /dev/null @@ -1 +0,0 @@ -prog: rounding-6