From: Florian Krohm Date: Mon, 22 Sep 2025 22:20:57 +0000 (+0000) Subject: s390: BFP testsuite: load positive/negative/complement, load and test X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=69e67dadf5572b5e6521da2b87633d503f1d597b;p=thirdparty%2Fvalgrind.git s390: BFP testsuite: load positive/negative/complement, load and test Remove bfp-2. Add bfp-load Observe condition code! Also add correct bfp-compare.stdout.exp (c.f. 6190acedb1d) Part of fixing https://bugs.kde.org/show_bug.cgi?id=509572 --- diff --git a/.gitignore b/.gitignore index efdfea78aa..fb69b92a02 100644 --- a/.gitignore +++ b/.gitignore @@ -2189,7 +2189,7 @@ /none/tests/s390x/rounding-2 /none/tests/s390x/rounding-3 /none/tests/s390x/bfp-arith -/none/tests/s390x/bfp-2 +/none/tests/s390x/bfp-load /none/tests/s390x/bfp-3 /none/tests/s390x/bfp-compare /none/tests/s390x/srnm diff --git a/none/tests/s390x/Makefile.am b/none/tests/s390x/Makefile.am index 89bba9ec8a..b1f41a90fa 100644 --- a/none/tests/s390x/Makefile.am +++ b/none/tests/s390x/Makefile.am @@ -9,8 +9,8 @@ INSN_TESTS = clc clcle cvb cvd icm lpr lam_stam xc mvst add sub mul \ 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 bfp-arith \ - bfp-2 bfp-3 bfp-compare srnm srnmb comp-1 comp-2 exrl tmll tm stmg \ + bfp-tdc bfp-load rounding-1 rounding-2 rounding-3 bfp-arith \ + bfp-3 bfp-compare srnm srnmb comp-1 comp-2 exrl tmll tm stmg \ ex clst mvc test_fork test_sig rounding-6 rxsbg popcnt \ high-word traps \ spechelper-alr spechelper-algr \ diff --git a/none/tests/s390x/bfp-2.c b/none/tests/s390x/bfp-2.c deleted file mode 100644 index 7fbc2cbf3b..0000000000 --- a/none/tests/s390x/bfp-2.c +++ /dev/null @@ -1,81 +0,0 @@ -#include - -/* Test various BFP ops: - - load negative - - load positive - - load complement -*/ - -void lnebr(float in) -{ - float out; - - __asm__ volatile("lnebr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in) : "cc"); - printf("lnebr %f -> %f\n", in, out); -} - -void lndbr(double in) -{ - double out; - - __asm__ volatile("lndbr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in) : "cc"); - printf("lndbr %f -> %f\n", in, out); -} - -void lpebr(float in) -{ - float out; - - __asm__ volatile("lpebr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in) : "cc"); - printf("lpebr %f -> %f\n", in, out); -} - -void lpdbr(double in) -{ - double out; - - __asm__ volatile("lpdbr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in) : "cc"); - printf("lpdbr %f -> %f\n", in, out); -} - -void lcebr(float in) -{ - float out; - - __asm__ volatile("lcebr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in) : "cc"); - printf("lcebr %f -> %f\n", in, out); -} - -void lcdbr(double in) -{ - double out; - - __asm__ volatile("lcdbr %[out],%[in]" : [out]"=f"(out) : [in]"f"(in) : "cc"); - printf("lcdbr %f -> %f\n", in, out); -} - -int main(void) -{ - // load negative - lnebr(-2.5f); // 4 byte values - lnebr(12.5f); // 4 byte values - - lndbr(-0.5); // 8 byte values - lndbr(42.5); // 8 byte values - - // load positive - lpebr(-2.5f); // 4 byte values - lpebr(12.5f); // 4 byte values - - lpdbr(-0.5); // 8 byte values - lpdbr(42.5); // 8 byte values - - // load complement - lcebr(-23.5f); // 4 byte values - lcebr(123.5f); // 4 byte values - - lcdbr(-17.5); // 8 byte values - lcdbr(234.5); // 8 byte values - - return 0; -} diff --git a/none/tests/s390x/bfp-2.stdout.exp b/none/tests/s390x/bfp-2.stdout.exp deleted file mode 100644 index d2bc54136b..0000000000 --- a/none/tests/s390x/bfp-2.stdout.exp +++ /dev/null @@ -1,12 +0,0 @@ -lnebr -2.500000 -> -2.500000 -lnebr 12.500000 -> -12.500000 -lndbr -0.500000 -> -0.500000 -lndbr 42.500000 -> -42.500000 -lpebr -2.500000 -> 2.500000 -lpebr 12.500000 -> 12.500000 -lpdbr -0.500000 -> 0.500000 -lpdbr 42.500000 -> 42.500000 -lcebr -23.500000 -> 23.500000 -lcebr 123.500000 -> -123.500000 -lcdbr -17.500000 -> 17.500000 -lcdbr 234.500000 -> -234.500000 diff --git a/none/tests/s390x/bfp-2.vgtest b/none/tests/s390x/bfp-2.vgtest deleted file mode 100644 index 239b8f985d..0000000000 --- a/none/tests/s390x/bfp-2.vgtest +++ /dev/null @@ -1 +0,0 @@ -prog: bfp-2 diff --git a/none/tests/s390x/bfp-compare.stdout.exp b/none/tests/s390x/bfp-compare.stdout.exp index 4f2c2a940a..b81f3f6e24 100644 --- a/none/tests/s390x/bfp-compare.stdout.exp +++ b/none/tests/s390x/bfp-compare.stdout.exp @@ -1,45 +1,230 @@ -LOAD AND TEST short BFP -ltebr 100.000000 -> 100.000000 cc = 2 -ltebr -10.500000 -> -10.500000 cc = 1 -ltebr 0.000000 -> 0.000000 cc = 0 -ltebr nan -> nan cc = 3 -LOAD AND TEST long BFP -ltdbr 100.000000 -> 100.000000 cc = 2 -ltdbr -10.500000 -> -10.500000 cc = 1 -ltdbr 0.000000 -> 0.000000 cc = 0 -ltdbr nan -> nan cc = 3 -LOAD AND TEST extended BFP -ltxbr 100.000000 -> 100.000000 cc = 2 -ltxbr -10.500000 -> -10.500000 cc = 1 -ltxbr 0.000000 -> 0.000000 cc = 0 -ltxbr nan -> nan cc = 3 - -LOAD LENGTHENED short BFP -> long BFP -ldebr 101.5 -> 101.500000 -ldebr -11.1 -> -11.100000 -ldebr 0 -> 0.000000 -ldebr 7e-06 -> 0.000007 -ldebr nan -> nan -ldebr inf -> inf -ldebr -inf -> -inf -LOAD LENGTHENED short BFP -> extended BFP -lxebr 101.5 -> 101.500000 -lxebr -11.1 -> -11.100000 -lxebr 0 -> 0.000000 -lxebr 7e-06 -> 0.000007 -lxebr nan -> nan -lxebr inf -> inf -lxebr -inf -> -inf -LOAD LENGTHENED long BFP -> extended BFP -lxdbr 101.5 -> 101.500000 -lxdbr -11.1 -> -11.100000 -lxdbr 0 -> 0.000000 -lxdbr 7e-16 -> 7e-16 -lxdbr nan -> nan -lxdbr inf -> inf -lxdbr -inf -> -inf - -LOAD ZERO -lzer gpr value = 0 -lzdr gpr value = 0 -lzdr gpr values = 0 0 +cebr: 3.14 == 3.14 +ceb: 3.14 == 3.14 +kebr: 3.14 == 3.14 +keb: 3.14 == 3.14 +cdbr: 3.14 == 3.14 +cdb: 3.14 == 3.14 +kdbr: 3.14 == 3.14 +kdb: 3.14 == 3.14 +cxbr: 3.14 == 3.14 +kxbr: 3.14 == 3.14 +cebr: -2.78 < 2.78 +ceb: -2.78 < 2.78 +kebr: -2.78 < 2.78 +keb: -2.78 < 2.78 +cdbr: -2.78 < 2.78 +cdb: -2.78 < 2.78 +kdbr: -2.78 < 2.78 +kdb: -2.78 < 2.78 +cxbr: -2.78 < 2.78 +kxbr: -2.78 < 2.78 +cebr: inf == inf +ceb: inf == inf +kebr: inf == inf +keb: inf == inf +cdbr: inf == inf +cdb: inf == inf +kdbr: inf == inf +kdb: inf == inf +cxbr: inf == inf +kxbr: inf == inf +cebr: inf > -inf +ceb: inf > -inf +kebr: inf > -inf +keb: inf > -inf +cdbr: inf > -inf +cdb: inf > -inf +kdbr: inf > -inf +kdb: inf > -inf +cxbr: inf > -inf +kxbr: inf > -inf +cebr: -inf == -inf +ceb: -inf == -inf +kebr: -inf == -inf +keb: -inf == -inf +cdbr: -inf == -inf +cdb: -inf == -inf +kdbr: -inf == -inf +kdb: -inf == -inf +cxbr: -inf == -inf +kxbr: -inf == -inf +cebr: -inf < inf +ceb: -inf < inf +kebr: -inf < inf +keb: -inf < inf +cdbr: -inf < inf +cdb: -inf < inf +kdbr: -inf < inf +kdb: -inf < inf +cxbr: -inf < inf +kxbr: -inf < inf +cebr: inf > 1 +ceb: inf > 1 +kebr: inf > 1 +keb: inf > 1 +cdbr: inf > 1 +cdb: inf > 1 +kdbr: inf > 1 +kdb: inf > 1 +cxbr: inf > 1 +kxbr: inf > 1 +cebr: -inf < -1 +ceb: -inf < -1 +kebr: -inf < -1 +keb: -inf < -1 +cdbr: -inf < -1 +cdb: -inf < -1 +kdbr: -inf < -1 +kdb: -inf < -1 +cxbr: -inf < -1 +kxbr: -inf < -1 +cebr: 1 < inf +ceb: 1 < inf +kebr: 1 < inf +keb: 1 < inf +cdbr: 1 < inf +cdb: 1 < inf +kdbr: 1 < inf +kdb: 1 < inf +cxbr: 1 < inf +kxbr: 1 < inf +cebr: -1 > -inf +ceb: -1 > -inf +kebr: -1 > -inf +keb: -1 > -inf +cdbr: -1 > -inf +cdb: -1 > -inf +kdbr: -1 > -inf +kdb: -1 > -inf +cxbr: -1 > -inf +kxbr: -1 > -inf +cebr: nan ?? nan +ceb: nan ?? nan +kebr: nan ?? nan +keb: nan ?? nan +cdbr: nan ?? nan +cdb: nan ?? nan +kdbr: nan ?? nan +kdb: nan ?? nan +cxbr: nan ?? nan +kxbr: nan ?? nan +cebr: nan ?? -nan +ceb: nan ?? -nan +kebr: nan ?? -nan +keb: nan ?? -nan +cdbr: nan ?? -nan +cdb: nan ?? -nan +kdbr: nan ?? -nan +kdb: nan ?? -nan +cxbr: nan ?? -nan +kxbr: nan ?? -nan +cebr: -nan ?? nan +ceb: -nan ?? nan +kebr: -nan ?? nan +keb: -nan ?? nan +cdbr: -nan ?? nan +cdb: -nan ?? nan +kdbr: -nan ?? nan +kdb: -nan ?? nan +cxbr: -nan ?? nan +kxbr: -nan ?? nan +cebr: -nan ?? -nan +ceb: -nan ?? -nan +kebr: -nan ?? -nan +keb: -nan ?? -nan +cdbr: -nan ?? -nan +cdb: -nan ?? -nan +kdbr: -nan ?? -nan +kdb: -nan ?? -nan +cxbr: -nan ?? -nan +kxbr: -nan ?? -nan +cebr: nan ?? inf +ceb: nan ?? inf +kebr: nan ?? inf +keb: nan ?? inf +cdbr: nan ?? inf +cdb: nan ?? inf +kdbr: nan ?? inf +kdb: nan ?? inf +cxbr: nan ?? inf +kxbr: nan ?? inf +cebr: nan ?? -inf +ceb: nan ?? -inf +kebr: nan ?? -inf +keb: nan ?? -inf +cdbr: nan ?? -inf +cdb: nan ?? -inf +kdbr: nan ?? -inf +kdb: nan ?? -inf +cxbr: nan ?? -inf +kxbr: nan ?? -inf +cebr: -nan ?? inf +ceb: -nan ?? inf +kebr: -nan ?? inf +keb: -nan ?? inf +cdbr: -nan ?? inf +cdb: -nan ?? inf +kdbr: -nan ?? inf +kdb: -nan ?? inf +cxbr: -nan ?? inf +kxbr: -nan ?? inf +cebr: -nan ?? -inf +ceb: -nan ?? -inf +kebr: -nan ?? -inf +keb: -nan ?? -inf +cdbr: -nan ?? -inf +cdb: -nan ?? -inf +kdbr: -nan ?? -inf +kdb: -nan ?? -inf +cxbr: -nan ?? -inf +kxbr: -nan ?? -inf +cebr: nan ?? 1.5 +ceb: nan ?? 1.5 +kebr: nan ?? 1.5 +keb: nan ?? 1.5 +cdbr: nan ?? 1.5 +cdb: nan ?? 1.5 +kdbr: nan ?? 1.5 +kdb: nan ?? 1.5 +cxbr: nan ?? 1.5 +kxbr: nan ?? 1.5 +cebr: -nan ?? -1.5 +ceb: -nan ?? -1.5 +kebr: -nan ?? -1.5 +keb: -nan ?? -1.5 +cdbr: -nan ?? -1.5 +cdb: -nan ?? -1.5 +kdbr: -nan ?? -1.5 +kdb: -nan ?? -1.5 +cxbr: -nan ?? -1.5 +kxbr: -nan ?? -1.5 +cebr: 1.5 ?? nan +ceb: 1.5 ?? nan +kebr: 1.5 ?? nan +keb: 1.5 ?? nan +cdbr: 1.5 ?? nan +cdb: 1.5 ?? nan +kdbr: 1.5 ?? nan +kdb: 1.5 ?? nan +cxbr: 1.5 ?? nan +kxbr: 1.5 ?? nan +cebr: -1.5 ?? -nan +ceb: -1.5 ?? -nan +kebr: -1.5 ?? -nan +keb: -1.5 ?? -nan +cdbr: -1.5 ?? -nan +cdb: -1.5 ?? -nan +kdbr: -1.5 ?? -nan +kdb: -1.5 ?? -nan +cxbr: -1.5 ?? -nan +kxbr: -1.5 ?? -nan +cebr: 0 == -0 +ceb: 0 == -0 +kebr: 0 == -0 +keb: 0 == -0 +cdbr: 0 == -0 +cdb: 0 == -0 +kdbr: 0 == -0 +kdb: 0 == -0 +cxbr: 0 == -0 +kxbr: 0 == -0 diff --git a/none/tests/s390x/bfp-load.c b/none/tests/s390x/bfp-load.c new file mode 100644 index 0000000000..e5d862e697 --- /dev/null +++ b/none/tests/s390x/bfp-load.c @@ -0,0 +1,168 @@ +#include +#include +#include + +/* Test various BFP ops: + - load and test + - load zero +*/ + +#define LOADxxx(insn, initial, type, fmt) \ + do { \ + int cc; \ + type in = initial; \ + type out = 17; \ + __asm__ volatile("cr 0,0\n\t /* clear cc */\n\t" \ + insn " %[r1],%[r2]\n\t" \ + "ipm %[psw]\n\t" \ + "srl %[psw],28\n\t" \ + : [r1]"=f"(out), [psw]"=d"(cc) \ + : [r2]"f"(in) \ + : "cc"); \ + printf(insn " " fmt " -> " fmt " cc = %d\n", in, out, cc); \ + } while (0) + +void lzxr(void) +{ + long double value; + + __builtin_memset(&value, 0xff, sizeof value); + __asm__ volatile("lzxr %[r1]" : [r1]"=f"(value)); + + printf("lzxr --> "); + for (unsigned i = 0; i < sizeof(long double); ++i) { + if (i % 4 == 0) putchar(' '); + unsigned byte = ((char *)&value)[i]; + printf("%02u", byte); + } + putchar ('\n'); +} + +int main(void) +{ + assert(sizeof(long double) == 16); + + printf("LOAD AND TEST short BFP\n"); + LOADxxx("ltebr", 100.0f, float, "%f"); + LOADxxx("ltebr", -10.5f, float, "%f"); + LOADxxx("ltebr", 0.0f, float, "%f"); + LOADxxx("ltebr", NAN, float, "%f"); + LOADxxx("ltebr", -NAN, float, "%f"); + LOADxxx("ltebr", INFINITY, float, "%f"); + LOADxxx("ltebr", -INFINITY, float, "%f"); + + printf("LOAD AND TEST long BFP\n"); + LOADxxx("ltdbr", 100.0, double, "%f"); + LOADxxx("ltdbr", -10.5, double, "%f"); + LOADxxx("ltdbr", 0.0, double, "%f"); + LOADxxx("ltdbr", NAN, double, "%f"); + LOADxxx("ltdbr", INFINITY, double, "%f"); + LOADxxx("ltdbr", -INFINITY, double, "%f"); + + printf("LOAD AND TEST extended BFP\n"); + LOADxxx("ltxbr", 100.0L, long double, "%Lf"); + LOADxxx("ltxbr", -10.5L, long double, "%Lf"); + LOADxxx("ltxbr", 0.0L, long double, "%Lf"); + LOADxxx("ltxbr", NAN, long double, "%Lf"); + LOADxxx("ltxbr", INFINITY, long double, "%Lf"); + LOADxxx("ltxbr", -INFINITY, long double, "%Lf"); + + putchar('\n'); + printf("LOAD NEGATIVE short BFP\n"); + LOADxxx("lnebr", 0.0f, float, "%f"); + LOADxxx("lnebr", -0.0f, float, "%f"); + LOADxxx("lnebr", 123.0f, float, "%f"); + LOADxxx("lnebr", -12.0f, float, "%f"); + LOADxxx("lnebr", NAN, float, "%f"); + LOADxxx("lnebr", -NAN, float, "%f"); + LOADxxx("lnebr", INFINITY, float, "%f"); + LOADxxx("lnebr", -INFINITY, float, "%f"); + + printf("LOAD NEGATIVE long BFP\n"); + LOADxxx("lndbr", 0.0, double, "%f"); + LOADxxx("lndbr", -0.0, double, "%f"); + LOADxxx("lndbr", 123.0, double, "%f"); + LOADxxx("lndbr", -12.0, double, "%f"); + LOADxxx("lndbr", NAN, double, "%f"); + LOADxxx("lndbr", -NAN, double, "%f"); + LOADxxx("lndbr", INFINITY, double, "%f"); + LOADxxx("lndbr", -INFINITY, double, "%f"); + + printf("LOAD NEGATIVE extended BFP\n"); + LOADxxx("lnxbr", 0.0L, long double, "%Lf"); + LOADxxx("lnxbr", -0.0L, long double, "%Lf"); + LOADxxx("lnxbr", 123.0L, long double, "%Lf"); + LOADxxx("lnxbr", -12.0L, long double, "%Lf"); + LOADxxx("lnxbr", NAN, long double, "%Lf"); + LOADxxx("lnxbr", -NAN, long double, "%Lf"); + LOADxxx("lnxbr", INFINITY, long double, "%Lf"); + LOADxxx("lnxbr", -INFINITY, long double, "%Lf"); + + putchar('\n'); + printf("LOAD POSITIVE short BFP\n"); + LOADxxx("lpebr", 0.0f, float, "%f"); + LOADxxx("lpebr", -0.0f, float, "%f"); + LOADxxx("lpebr", 123.0f, float, "%f"); + LOADxxx("lpebr", -12.0f, float, "%f"); + LOADxxx("lpebr", NAN, float, "%f"); + LOADxxx("lpebr", -NAN, float, "%f"); + LOADxxx("lpebr", INFINITY, float, "%f"); + LOADxxx("lpebr", -INFINITY, float, "%f"); + + printf("LOAD POSITIVE long BFP\n"); + LOADxxx("lpdbr", 0.0, double, "%f"); + LOADxxx("lpdbr", -0.0, double, "%f"); + LOADxxx("lpdbr", 123.0, double, "%f"); + LOADxxx("lpdbr", -12.0, double, "%f"); + LOADxxx("lpdbr", NAN, double, "%f"); + LOADxxx("lpdbr", -NAN, double, "%f"); + LOADxxx("lpdbr", INFINITY, double, "%f"); + LOADxxx("lpdbr", -INFINITY, double, "%f"); + + printf("LOAD POSITIVE extended BFP\n"); + LOADxxx("lpxbr", 0.0L, long double, "%Lf"); + LOADxxx("lpxbr", -0.0L, long double, "%Lf"); + LOADxxx("lpxbr", 123.0L, long double, "%Lf"); + LOADxxx("lpxbr", -12.0L, long double, "%Lf"); + LOADxxx("lpxbr", NAN, long double, "%Lf"); + LOADxxx("lpxbr", -NAN, long double, "%Lf"); + LOADxxx("lpxbr", INFINITY, long double, "%Lf"); + LOADxxx("lpxbr", -INFINITY, long double, "%Lf"); + + putchar('\n'); + printf("LOAD COMPLEMENT short BFP\n"); + LOADxxx("lcebr", 0.0f, float, "%f"); + LOADxxx("lcebr", -0.0f, float, "%f"); + LOADxxx("lcebr", 123.0f, float, "%f"); + LOADxxx("lcebr", -12.0f, float, "%f"); + LOADxxx("lcebr", NAN, float, "%f"); + LOADxxx("lcebr", -NAN, float, "%f"); + LOADxxx("lcebr", INFINITY, float, "%f"); + LOADxxx("lcebr", -INFINITY, float, "%f"); + + printf("LOAD COMPLEMENT long BFP\n"); + LOADxxx("lcdbr", 0.0, double, "%f"); + LOADxxx("lcdbr", -0.0, double, "%f"); + LOADxxx("lcdbr", 123.0, double, "%f"); + LOADxxx("lcdbr", -12.0, double, "%f"); + LOADxxx("lcdbr", NAN, double, "%f"); + LOADxxx("lcdbr", -NAN, double, "%f"); + LOADxxx("lcdbr", INFINITY, double, "%f"); + LOADxxx("lcdbr", -INFINITY, double, "%f"); + + printf("LOAD COMPLEMENT extended BFP\n"); + LOADxxx("lcxbr", 0.0L, long double, "%Lf"); + LOADxxx("lcxbr", -0.0L, long double, "%Lf"); + LOADxxx("lcxbr", 123.0L, long double, "%Lf"); + LOADxxx("lcxbr", -12.0L, long double, "%Lf"); + LOADxxx("lcxbr", NAN, long double, "%Lf"); + LOADxxx("lcxbr", -NAN, long double, "%Lf"); + LOADxxx("lcxbr", INFINITY, long double, "%Lf"); + LOADxxx("lcxbr", -INFINITY, long double, "%Lf"); + + putchar('\n'); + printf("LOAD ZERO\n"); + lzxr(); + + return 0; +} diff --git a/none/tests/s390x/bfp-2.stderr.exp b/none/tests/s390x/bfp-load.stderr.exp similarity index 100% rename from none/tests/s390x/bfp-2.stderr.exp rename to none/tests/s390x/bfp-load.stderr.exp diff --git a/none/tests/s390x/bfp-load.stdout.exp b/none/tests/s390x/bfp-load.stdout.exp new file mode 100644 index 0000000000..a2c287c366 --- /dev/null +++ b/none/tests/s390x/bfp-load.stdout.exp @@ -0,0 +1,109 @@ +LOAD AND TEST short BFP +ltebr 100.000000 -> 100.000000 cc = 2 +ltebr -10.500000 -> -10.500000 cc = 1 +ltebr 0.000000 -> 0.000000 cc = 0 +ltebr nan -> nan cc = 3 +ltebr -nan -> -nan cc = 3 +ltebr inf -> inf cc = 2 +ltebr -inf -> -inf cc = 1 +LOAD AND TEST long BFP +ltdbr 100.000000 -> 100.000000 cc = 2 +ltdbr -10.500000 -> -10.500000 cc = 1 +ltdbr 0.000000 -> 0.000000 cc = 0 +ltdbr nan -> nan cc = 3 +ltdbr inf -> inf cc = 2 +ltdbr -inf -> -inf cc = 1 +LOAD AND TEST extended BFP +ltxbr 100.000000 -> 100.000000 cc = 2 +ltxbr -10.500000 -> -10.500000 cc = 1 +ltxbr 0.000000 -> 0.000000 cc = 0 +ltxbr nan -> nan cc = 3 +ltxbr inf -> inf cc = 2 +ltxbr -inf -> -inf cc = 1 + +LOAD NEGATIVE short BFP +lnebr 0.000000 -> -0.000000 cc = 0 +lnebr -0.000000 -> -0.000000 cc = 0 +lnebr 123.000000 -> -123.000000 cc = 1 +lnebr -12.000000 -> -12.000000 cc = 1 +lnebr nan -> -nan cc = 3 +lnebr -nan -> -nan cc = 3 +lnebr inf -> -inf cc = 1 +lnebr -inf -> -inf cc = 1 +LOAD NEGATIVE long BFP +lndbr 0.000000 -> -0.000000 cc = 0 +lndbr -0.000000 -> -0.000000 cc = 0 +lndbr 123.000000 -> -123.000000 cc = 1 +lndbr -12.000000 -> -12.000000 cc = 1 +lndbr nan -> -nan cc = 3 +lndbr -nan -> -nan cc = 3 +lndbr inf -> -inf cc = 1 +lndbr -inf -> -inf cc = 1 +LOAD NEGATIVE extended BFP +lnxbr 0.000000 -> -0.000000 cc = 0 +lnxbr -0.000000 -> -0.000000 cc = 0 +lnxbr 123.000000 -> -123.000000 cc = 1 +lnxbr -12.000000 -> -12.000000 cc = 1 +lnxbr nan -> -nan cc = 3 +lnxbr -nan -> -nan cc = 3 +lnxbr inf -> -inf cc = 1 +lnxbr -inf -> -inf cc = 1 + +LOAD POSITIVE short BFP +lpebr 0.000000 -> 0.000000 cc = 0 +lpebr -0.000000 -> 0.000000 cc = 0 +lpebr 123.000000 -> 123.000000 cc = 2 +lpebr -12.000000 -> 12.000000 cc = 2 +lpebr nan -> nan cc = 3 +lpebr -nan -> nan cc = 3 +lpebr inf -> inf cc = 2 +lpebr -inf -> inf cc = 2 +LOAD POSITIVE long BFP +lpdbr 0.000000 -> 0.000000 cc = 0 +lpdbr -0.000000 -> 0.000000 cc = 0 +lpdbr 123.000000 -> 123.000000 cc = 2 +lpdbr -12.000000 -> 12.000000 cc = 2 +lpdbr nan -> nan cc = 3 +lpdbr -nan -> nan cc = 3 +lpdbr inf -> inf cc = 2 +lpdbr -inf -> inf cc = 2 +LOAD POSITIVE extended BFP +lpxbr 0.000000 -> 0.000000 cc = 0 +lpxbr -0.000000 -> 0.000000 cc = 0 +lpxbr 123.000000 -> 123.000000 cc = 2 +lpxbr -12.000000 -> 12.000000 cc = 2 +lpxbr nan -> nan cc = 3 +lpxbr -nan -> nan cc = 3 +lpxbr inf -> inf cc = 2 +lpxbr -inf -> inf cc = 2 + +LOAD COMPLEMENT short BFP +lcebr 0.000000 -> -0.000000 cc = 0 +lcebr -0.000000 -> 0.000000 cc = 0 +lcebr 123.000000 -> -123.000000 cc = 1 +lcebr -12.000000 -> 12.000000 cc = 2 +lcebr nan -> -nan cc = 3 +lcebr -nan -> nan cc = 3 +lcebr inf -> -inf cc = 1 +lcebr -inf -> inf cc = 2 +LOAD COMPLEMENT long BFP +lcdbr 0.000000 -> -0.000000 cc = 0 +lcdbr -0.000000 -> 0.000000 cc = 0 +lcdbr 123.000000 -> -123.000000 cc = 1 +lcdbr -12.000000 -> 12.000000 cc = 2 +lcdbr nan -> -nan cc = 3 +lcdbr -nan -> nan cc = 3 +lcdbr inf -> -inf cc = 1 +lcdbr -inf -> inf cc = 2 +LOAD COMPLEMENT extended BFP +lcxbr 0.000000 -> -0.000000 cc = 0 +lcxbr -0.000000 -> 0.000000 cc = 0 +lcxbr 123.000000 -> -123.000000 cc = 1 +lcxbr -12.000000 -> 12.000000 cc = 2 +lcxbr nan -> -nan cc = 3 +lcxbr -nan -> nan cc = 3 +lcxbr inf -> -inf cc = 1 +lcxbr -inf -> inf cc = 2 + +LOAD ZERO +lzxr --> 00000000 00000000 00000000 00000000 diff --git a/none/tests/s390x/bfp-load.vgtest b/none/tests/s390x/bfp-load.vgtest new file mode 100644 index 0000000000..3e1dfc7db6 --- /dev/null +++ b/none/tests/s390x/bfp-load.vgtest @@ -0,0 +1 @@ +prog: bfp-load