]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390: BFP testsuite: load positive/negative/complement, load and test
authorFlorian Krohm <flo2030@eich-krohm.de>
Mon, 22 Sep 2025 22:20:57 +0000 (22:20 +0000)
committerFlorian Krohm <flo2030@eich-krohm.de>
Mon, 22 Sep 2025 22:20:57 +0000 (22:20 +0000)
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

.gitignore
none/tests/s390x/Makefile.am
none/tests/s390x/bfp-2.c [deleted file]
none/tests/s390x/bfp-2.stdout.exp [deleted file]
none/tests/s390x/bfp-2.vgtest [deleted file]
none/tests/s390x/bfp-compare.stdout.exp
none/tests/s390x/bfp-load.c [new file with mode: 0644]
none/tests/s390x/bfp-load.stderr.exp [moved from none/tests/s390x/bfp-2.stderr.exp with 100% similarity]
none/tests/s390x/bfp-load.stdout.exp [new file with mode: 0644]
none/tests/s390x/bfp-load.vgtest [new file with mode: 0644]

index efdfea78aad18f543eac864d5bdfb400ffe49ee5..fb69b92a02e345354ae86408303c8746093bfc48 100644 (file)
 /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
index 89bba9ec8aecc9b3b3bed846beab640bb84de82a..b1f41a90faa25bded237941be72bff279069447c 100644 (file)
@@ -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 (file)
index 7fbc2cb..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <stdio.h>
-
-/* 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 (file)
index d2bc541..0000000
+++ /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 (file)
index 239b8f9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-prog: bfp-2
index 4f2c2a940a079a7294fb428b4c3e644f49f4299f..b81f3f6e248026444e883f9af80636c75999e29b 100644 (file)
-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 (file)
index 0000000..e5d862e
--- /dev/null
@@ -0,0 +1,168 @@
+#include <stdio.h>
+#include <assert.h>
+#include <math.h>
+
+/* 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-load.stdout.exp b/none/tests/s390x/bfp-load.stdout.exp
new file mode 100644 (file)
index 0000000..a2c287c
--- /dev/null
@@ -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 (file)
index 0000000..3e1dfc7
--- /dev/null
@@ -0,0 +1 @@
+prog: bfp-load