]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390: Reorg and extend BFP "convert to/from fixed/logical" testcases
authorFlorian Krohm <flo2030@eich-krohm.de>
Wed, 24 Sep 2025 20:27:30 +0000 (20:27 +0000)
committerFlorian Krohm <flo2030@eich-krohm.de>
Wed, 24 Sep 2025 20:27:30 +0000 (20:27 +0000)
Testing these insns was spread over 3 testcases: rounding-3, fpconv,
and fpext.

rounding-3 was testing "convert to fixed" with rounding per FPC.
fpext was testing "convert to/from logical" with rounding per M3 field.
fpconv was testing "convert to/from fixed" with rounding per M3 field.

The new testcase bfp-convert replaces these 3.  It removes the
"convert from fixed/logical" testing because that is done in bfp-emit.pl.
It consolidates end extends "convert to fixed/logical" testing from
those files.

Testing "convert to logical" has been commented out until the condition
code weirdness for negative input values has been sorted.

Part of fixing https://bugs.kde.org/show_bug.cgi?id=509572

19 files changed:
.gitignore
none/tests/s390x/Makefile.am
none/tests/s390x/bfp-convert.c [new file with mode: 0644]
none/tests/s390x/bfp-convert.stderr.exp [moved from none/tests/s390x/fpconv.stderr.exp with 100% similarity]
none/tests/s390x/bfp-convert.stdout.exp [new file with mode: 0644]
none/tests/s390x/bfp-convert.vgtest [new file with mode: 0644]
none/tests/s390x/fpconv.c [deleted file]
none/tests/s390x/fpconv.stdout.exp [deleted file]
none/tests/s390x/fpconv.vgtest [deleted file]
none/tests/s390x/fpext.c [deleted file]
none/tests/s390x/fpext.stderr.exp [deleted file]
none/tests/s390x/fpext.stdout.exp [deleted file]
none/tests/s390x/fpext.vgtest [deleted file]
none/tests/s390x/fpext_fail.c [new file with mode: 0644]
none/tests/s390x/fpext_fail.vgtest
none/tests/s390x/rounding-3.c [deleted file]
none/tests/s390x/rounding-3.stderr.exp [deleted file]
none/tests/s390x/rounding-3.stdout.exp [deleted file]
none/tests/s390x/rounding-3.vgtest [deleted file]

index de362ecc28021bee1741d22565c94422fec6586a..b059789b86ce524d67f2d5e96ec634a994d81609 100644 (file)
 /none/tests/s390x/cu14_1
 /none/tests/s390x/cu41
 /none/tests/s390x/ecag
-/none/tests/s390x/fpext
 /none/tests/s390x/fpext_warn
-/none/tests/s390x/fpconv
+/none/tests/s390x/fpext_fail
 /none/tests/s390x/rounding-1
-/none/tests/s390x/rounding-2
-/none/tests/s390x/rounding-3
+/none/tests/s390x/rounding-6
 /none/tests/s390x/bfp-arith
 /none/tests/s390x/bfp-load
 /none/tests/s390x/bfp-fpc
 /none/tests/s390x/bfp-tdc
 /none/tests/s390x/bfp-3
 /none/tests/s390x/bfp-compare
+/none/tests/s390x/bfp-convert
 /none/tests/s390x/comp-1
 /none/tests/s390x/comp-2
 /none/tests/s390x/ex
 /none/tests/s390x/spechelper-slgr
 /none/tests/s390x/spechelper-or
 /none/tests/s390x/spechelper-tm
-/none/tests/s390x/rounding-6
 /none/tests/s390x/laa
 /none/tests/s390x/dfp-1
 /none/tests/s390x/dfp-2
index 7d2d1f8c48d46236dc32ed94a27e04c5a83e62c6..afa61c94b894ae266f497e041005bc0f471123c3 100644 (file)
@@ -8,8 +8,8 @@ INSN_TESTS = clc clcle cvb cvd icm lpr lam_stam xc mvst add sub mul \
              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 bfp-load bfp-fpc rounding-1 rounding-3 bfp-arith \
+             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 \
             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 hfp
+            hfp
 
 check_PROGRAMS = $(INSN_TESTS) \
                 allexec \
@@ -39,8 +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 \
-       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 \
        mul.h  or.h  sub.h  xor.h table.h svc.h rounding.h \
        dfp-1.stderr.exp dfp-1.stdout.exp dfp-1.vgtest \
diff --git a/none/tests/s390x/bfp-convert.c b/none/tests/s390x/bfp-convert.c
new file mode 100644 (file)
index 0000000..1d0502e
--- /dev/null
@@ -0,0 +1,325 @@
+/* Test "convert to fixed" and "convert to logical" insns.
+
+   We already know via bfp-emit.pl:
+
+     Testing:  cfebr %r0,0,%f1
+     Frontend: cfebr     %r0,0,%f1
+     Assembly: cfebr     %r5,0,%f7
+
+     Testing:  celfbr %f0,0,%r1,0
+     Frontend: celfbr    %f0,0,%r1,0
+     Assembly: celfbr    %f7,0,%r4,0
+
+   So the only thing to test for here is the condition code.
+
+   Note, no testing for "convert from ..." insns here, as they are
+   covered in bfd-emit.pl and do not set the condition code.
+*/
+#include <stdio.h>
+#include <stdint.h>
+#include <math.h>
+#include <assert.h>
+#include "rounding.h"
+
+#define convert_to_int(opcode,src_type,dst_type,round,value,fmt)     \
+   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 "fmt"\tcc = %u\n", opcode, src, cc);                \
+                                                                     \
+      __asm__ volatile (opcode "a %[dst]," #round ",%[src],0\n\t"    \
+                        "ipm %[cc]\n\t"                              \
+                        "srl %[cc],28\n\t"                           \
+                        : [dst]"=d"(dst), [cc]"=d"(cc)               \
+                        : [src]"f"(src)                              \
+                        : "cc");                                     \
+                                                                     \
+      printf("%sa "fmt"\tcc = %u\n", opcode, src, cc);               \
+} while (0)
+
+#define convert_to_logical(opcode,src_type,dst_type,round,value,fmt) \
+   do {                                                              \
+      src_type src = value;                                          \
+      dst_type dst;                                                  \
+      unsigned cc;                                                   \
+                                                                     \
+      __asm__ volatile (opcode " %[dst]," #round ",%[src], 0\n\t"    \
+                        "ipm %[cc]\n\t"                              \
+                        "srl %[cc],28\n\t"                           \
+                        : [dst]"=d"(dst), [cc]"=d"(cc)               \
+                        : [src]"f"(src)                              \
+                        : "cc");                                     \
+                                                                     \
+      printf("%s "fmt"\tcc = %u\n", opcode, src, cc);                \
+} while (0)
+
+/* Convenience macros */
+#define cfebr(value,round)                                           \
+        convert_to_int("cfebr",float,int32_t,round,value,"%f")
+#define cfdbr(value,round)                                           \
+        convert_to_int("cfdbr",double,int32_t,round,value,"%f")
+#define cfxbr(value,round)                                           \
+        convert_to_int("cfxbr",long double,int32_t,round,value,"%Lf")
+#define cgebr(value,round)                                           \
+        convert_to_int("cgebr",float,int64_t,round,value,"%f")
+#define cgdbr(value,round)                                           \
+        convert_to_int("cgdbr",double,int64_t,round,value,"%f")
+#define cgxbr(value,round)                                           \
+        convert_to_int("cgxbr",long double,int64_t,round,value,"%Lf")
+
+#define clfebr(value,round)                                           \
+        convert_to_logical("clfebr",float,uint32_t,round,value,"%f")
+#define clfdbr(value,round)                                           \
+        convert_to_logical("clfdbr",double,uint32_t,round,value,"%f")
+#define clfxbr(value,round)                                           \
+        convert_to_logical("clfxbr",long double,uint32_t,round,value,"%Lf")
+#define clgebr(value,round)                                           \
+        convert_to_logical("clgebr",float,uint64_t,round,value,"%f")
+#define clgdbr(value,round)                                           \
+        convert_to_logical("clgdbr",double,uint64_t,round,value,"%f")
+#define clgxbr(value,round)                                           \
+        convert_to_logical("clgxbr",long double,uint64_t,round,value,"%Lf")
+
+#define convert_to_int_m3_tests(mode)                                   \
+        printf("...setting M3 rounding mode to %s\n", m3_rtext(mode));  \
+                                                                        \
+        /* f32 -> i32 */                                                \
+        printf("......f32 -> i32\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           cfebr(values[j], mode);                                      \
+                                                                        \
+        /* f32 -> i64 */                                                \
+        printf("......f32 -> i64\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           cgebr(values[j], mode);                                      \
+                                                                        \
+        /* f64 -> i32 */                                                \
+        printf("......f64 -> i32\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           cfdbr(values[j], mode);                                      \
+                                                                        \
+        /* f64 -> i64 */                                                \
+        printf("......f64 -> i64\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           cgdbr(values[j], mode);                                      \
+                                                                        \
+        /* f128 -> i32 */                                               \
+        printf("......f128 -> i32\n");                                  \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           cfxbr(values[j], mode);                                      \
+                                                                        \
+        /* f128 -> i64 */                                               \
+        printf("......f128 -> i64\n");                                  \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           cgxbr(values[j], mode);
+
+#define convert_to_logical_m3_tests(mode)                               \
+        printf("...setting M3 rounding mode to %s\n", m3_rtext(mode));  \
+                                                                        \
+        /* f32 -> u32 */                                                \
+        printf("......f32 -> u32\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           clfebr(values[j], mode);                                     \
+                                                                        \
+        /* f32 -> u64 */                                                \
+        printf("......f32 -> u64\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           clgebr(values[j], mode);                                     \
+                                                                        \
+        /* f64 -> u32 */                                                \
+        printf("......f64 -> u32\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           clfdbr(values[j], mode);                                     \
+                                                                        \
+        /* f64 -> u64 */                                                \
+        printf("......f64 -> u64\n");                                   \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           clgdbr(values[j], mode);                                     \
+                                                                        \
+        /* f128 -> u32 */                                               \
+        printf("......f128 -> u32\n");                                  \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           clfxbr(values[j], mode);                                     \
+                                                                        \
+        /* f128 -> u64 */                                               \
+        printf("......f128 -> u64\n");                                  \
+        for (int j = 0; j < sizeof values / sizeof values[0]; ++j)      \
+           clgxbr(values[j], mode);
+
+static void
+set_rounding_mode(unsigned mode)
+{
+   __asm__ volatile ("sfpc %[r1]" : : [r1]"d"(mode));
+}
+
+static const char *
+fpc_rtext(unsigned fpc_round)
+{
+   switch (fpc_round) {
+   case FPC_BFP_ROUND_NEAREST_EVEN:  return "[-> near]";
+   case FPC_BFP_ROUND_ZERO:          return "[-> zero]";
+   case FPC_BFP_ROUND_POSINF:        return "[-> +inf]";
+   case FPC_BFP_ROUND_NEGINF:        return "[-> -inf]";
+   case FPC_BFP_ROUND_PREPARE_SHORT: return "[-> prepare-short]";
+   }
+   assert(0);
+}
+
+static const char *
+m3_rtext(unsigned m3_round)
+{
+   switch (m3_round) {
+   case M3_BFP_ROUND_PER_FPC:       return "[per fpc]";
+   case M3_BFP_ROUND_NEAREST_AWAY:  return "[-> near away]";
+   case M3_BFP_ROUND_PREPARE_SHORT: return "[-> prepare-short]";
+   case M3_BFP_ROUND_NEAREST_EVEN:  return "[-> near away]";
+   case M3_BFP_ROUND_ZERO:          return "[-> zero]";
+   case M3_BFP_ROUND_POSINF:        return "[-> +inf]";
+   case M3_BFP_ROUND_NEGINF:        return "[-> -inf]";
+   }
+   assert(0);
+}
+
+/* Can be converted to 64-bit and 128-bit values without issues. */
+static const float values[] = {
+   0.0f, -1.0f, 2.0f, NAN, INFINITY
+};
+
+static void
+convert_to_int_fpc_tests(unsigned mode)
+{
+   set_rounding_mode(mode);
+
+   /* f32 -> i32 */
+   printf("......f32 -> i32\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      cfebr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f32 -> i64 */
+   printf("......f32 -> i64\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      cgebr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f64 -> i32 */
+   printf("......f64 -> i32\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      cfdbr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f64 -> i64 */
+   printf("......f64 -> i64\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      cgdbr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f128 -> i32 */
+   printf("......f128 -> i32\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      cfxbr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f128 -> i64 */
+   printf("......f128 -> i64\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      cgxbr(values[j], M3_BFP_ROUND_PER_FPC);
+}
+
+#if 0
+static void
+convert_to_logical_fpc_tests(unsigned mode)
+{
+   set_rounding_mode(mode);
+
+   /* f32 -> u32 */
+   printf("......f32 -> u32\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      clfebr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f32 -> u64 */
+   printf("......f32 -> u64\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      clgebr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f64 -> u32 */
+   printf("......f64 -> u32\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      clfdbr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f64 -> u64 */
+   printf("......f64 -> u64\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      clgdbr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f128 -> u32 */
+   printf("......f128 -> u32\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      clfxbr(values[j], M3_BFP_ROUND_PER_FPC);
+
+   /* f128 -> u64 */
+   printf("......f128 -> u64\n");
+   for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
+      clgxbr(values[j], M3_BFP_ROUND_PER_FPC);
+}
+#endif
+
+int
+main(void)
+{
+   assert(sizeof(long double) == 16);
+
+   static const unsigned fpc_rmodes[] = {
+      FPC_BFP_ROUND_NEAREST_EVEN,
+      FPC_BFP_ROUND_ZERO,
+      FPC_BFP_ROUND_POSINF,
+      FPC_BFP_ROUND_NEGINF,
+      FPC_BFP_ROUND_PREPARE_SHORT
+   };
+
+   //----------------------------------------------------------
+   // Convert to int
+   //----------------------------------------------------------
+   printf("============ Convert to int =============\n");
+   printf("Rounding as 'per FPC'\n");
+   for (int i = 0; i < sizeof fpc_rmodes / sizeof fpc_rmodes[0]; ++i) {
+      printf("...setting FPC rounding mode to %s\n", fpc_rtext(fpc_rmodes[i]));
+      convert_to_int_fpc_tests(fpc_rmodes[i]);
+   }
+
+   printf("Rounding as 'per M3'\n");
+   convert_to_int_m3_tests(1);  // M3_BFP_ROUND_NEAREST_AWAY
+   convert_to_int_m3_tests(3);  // M3_BFP_ROUND_PREPARE_SHORT
+   convert_to_int_m3_tests(4);  // M3_BFP_ROUND_NEAREST_EVEN
+   convert_to_int_m3_tests(5);  // M3_BFP_ROUND_ZERO
+   convert_to_int_m3_tests(6);  // M3_BFP_ROUND_POSINF
+   convert_to_int_m3_tests(7);  // M3_BFP_ROUND_NEGINF
+
+   //----------------------------------------------------------
+   // Convert to logical
+   //----------------------------------------------------------
+#if 0
+   /* Disabled until condition code weirdness has been cleared up.
+      Negative floating point number --> cc = 3. Seems wrong to me. */
+   putchar('\n');
+   printf("============ Convert to logical =============\n");
+   printf("Rounding as 'per FPC'\n");
+   for (int i = 0; i < sizeof fpc_rmodes / sizeof fpc_rmodes[0]; ++i) {
+      printf("...setting FPC rounding mode to %s\n", fpc_rtext(fpc_rmodes[i]));
+      convert_to_logical_fpc_tests(fpc_rmodes[i]);
+   }
+
+   printf("Rounding as 'per M3'\n");
+   convert_to_logical_m3_tests(1);  // M3_BFP_ROUND_NEAREST_AWAY
+   convert_to_logical_m3_tests(3);  // M3_BFP_ROUND_PREPARE_SHORT
+   convert_to_logical_m3_tests(4);  // M3_BFP_ROUND_NEAREST_EVEN
+   convert_to_logical_m3_tests(5);  // M3_BFP_ROUND_ZERO
+   convert_to_logical_m3_tests(6);  // M3_BFP_ROUND_POSINF
+   convert_to_logical_m3_tests(7);  // M3_BFP_ROUND_NEGINF
+#endif
+   return 0;
+}
diff --git a/none/tests/s390x/bfp-convert.stdout.exp b/none/tests/s390x/bfp-convert.stdout.exp
new file mode 100644 (file)
index 0000000..c5a17eb
--- /dev/null
@@ -0,0 +1,740 @@
+============ Convert to int =============
+Rounding as 'per FPC'
+...setting FPC rounding mode to [-> near]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting FPC rounding mode to [-> zero]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting FPC rounding mode to [-> +inf]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting FPC rounding mode to [-> -inf]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting FPC rounding mode to [-> prepare-short]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+Rounding as 'per M3'
+...setting M3 rounding mode to [-> near away]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting M3 rounding mode to [-> prepare-short]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting M3 rounding mode to [-> near away]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting M3 rounding mode to [-> zero]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting M3 rounding mode to [-> +inf]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
+...setting M3 rounding mode to [-> -inf]
+......f32 -> i32
+cfebr 0.000000 cc = 0
+cfebra 0.000000        cc = 0
+cfebr -1.000000        cc = 1
+cfebra -1.000000       cc = 1
+cfebr 2.000000 cc = 2
+cfebra 2.000000        cc = 2
+cfebr nan      cc = 3
+cfebra nan     cc = 3
+cfebr inf      cc = 3
+cfebra inf     cc = 3
+......f32 -> i64
+cgebr 0.000000 cc = 0
+cgebra 0.000000        cc = 0
+cgebr -1.000000        cc = 1
+cgebra -1.000000       cc = 1
+cgebr 2.000000 cc = 2
+cgebra 2.000000        cc = 2
+cgebr nan      cc = 3
+cgebra nan     cc = 3
+cgebr inf      cc = 3
+cgebra inf     cc = 3
+......f64 -> i32
+cfdbr 0.000000 cc = 0
+cfdbra 0.000000        cc = 0
+cfdbr -1.000000        cc = 1
+cfdbra -1.000000       cc = 1
+cfdbr 2.000000 cc = 2
+cfdbra 2.000000        cc = 2
+cfdbr nan      cc = 3
+cfdbra nan     cc = 3
+cfdbr inf      cc = 3
+cfdbra inf     cc = 3
+......f64 -> i64
+cgdbr 0.000000 cc = 0
+cgdbra 0.000000        cc = 0
+cgdbr -1.000000        cc = 1
+cgdbra -1.000000       cc = 1
+cgdbr 2.000000 cc = 2
+cgdbra 2.000000        cc = 2
+cgdbr nan      cc = 3
+cgdbra nan     cc = 3
+cgdbr inf      cc = 3
+cgdbra inf     cc = 3
+......f128 -> i32
+cfxbr 0.000000 cc = 0
+cfxbra 0.000000        cc = 0
+cfxbr -1.000000        cc = 1
+cfxbra -1.000000       cc = 1
+cfxbr 2.000000 cc = 2
+cfxbra 2.000000        cc = 2
+cfxbr nan      cc = 3
+cfxbra nan     cc = 3
+cfxbr inf      cc = 3
+cfxbra inf     cc = 3
+......f128 -> i64
+cgxbr 0.000000 cc = 0
+cgxbra 0.000000        cc = 0
+cgxbr -1.000000        cc = 1
+cgxbra -1.000000       cc = 1
+cgxbr 2.000000 cc = 2
+cgxbra 2.000000        cc = 2
+cgxbr nan      cc = 3
+cgxbra nan     cc = 3
+cgxbr inf      cc = 3
+cgxbra inf     cc = 3
diff --git a/none/tests/s390x/bfp-convert.vgtest b/none/tests/s390x/bfp-convert.vgtest
new file mode 100644 (file)
index 0000000..11cd11c
--- /dev/null
@@ -0,0 +1,2 @@
+prog: bfp-convert
+prereq: ../../../tests/s390x_features s390x-fpext
diff --git a/none/tests/s390x/fpconv.c b/none/tests/s390x/fpconv.c
deleted file mode 100644 (file)
index 02b5128..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#include <float.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <inttypes.h>
-#include <limits.h>
-
-/* The following opcodes are tested:
-
-   Convert to fixed:    cfebr, cgebr, cfdbr, cgdbr
-   Convert from fixed:  cefbr, cdfbr, cegbr, cdgbr
-
-   We do not test rounding here. Just making sure the insn selector
-   picks the correct insn.
-*/
-
-#define I2F(insn, initial, target_type)                         \
-do {                                                            \
-   int64_t source = initial;                                    \
-   target_type target;                                          \
-   asm volatile(insn " %0,%1\n\t" :"=f" (target) :"d"(source)); \
-   printf(insn " %"PRId64" -> %f\n", source, target);           \
-} while (0)
-
-#define DO_INSN_I32_TO_F(insn, target_type)        \
-do {                                               \
-   printf("\n----- int32_t -> " #target_type "\n");\
-   I2F(insn,   0, target_type);                    \
-   I2F(insn,   1, target_type);                    \
-   I2F(insn,  -1, target_type);                    \
-   I2F(insn,  42, target_type);                    \
-   I2F(insn, SHRT_MAX, target_type);               \
-   I2F(insn, SHRT_MIN, target_type);               \
-   I2F(insn, INT_MAX, target_type);                \
-   I2F(insn, INT_MIN, target_type);                \
-} while (0)
-
-#define DO_INSN_I64_TO_F(insn, target_type)        \
-do {                                               \
-   printf("\n----- int64_t -> " #target_type "\n");\
-   I2F(insn,   0, target_type);                    \
-   I2F(insn,   1, target_type);                    \
-   I2F(insn,  -1, target_type);                    \
-   I2F(insn,  42, target_type);                    \
-   I2F(insn, SHRT_MAX, target_type);               \
-   I2F(insn, SHRT_MIN, target_type);               \
-   I2F(insn, INT_MAX, target_type);                \
-   I2F(insn, INT_MIN, target_type);                \
-   I2F(insn, LONG_MAX, target_type);               \
-   I2F(insn, LONG_MIN, target_type);               \
-} while (0)
-
-#define DO_I2F()                        \
-do {                                    \
-   DO_INSN_I32_TO_F("cefbr", float);    \
-   DO_INSN_I32_TO_F("cdfbr", double);   \
-   DO_INSN_I64_TO_F("cegbr", float);    \
-   DO_INSN_I64_TO_F("cdgbr", double);   \
-} while (0)
-
-
-#define F2I(insn, initial, source_type, target_type)               \
-do {                                                               \
-   int cc;                                                         \
-   source_type source = initial;                                   \
-   target_type target = 0;                                         \
-   asm volatile(insn " %0,0,%2\n\t"                                \
-                "ipm %1\n\t"                                       \
-                "srl %1,28\n\t"                                    \
-               : "=d" (target), "=d" (cc) : "f"(source) : "cc");  \
-   printf(insn " %f -> %ld   cc = %d\n", source, (long)target, cc); \
-} while (0)
-
-#define DO_INSN_F32_TO_I(insn, type)          \
-do {                                          \
-   printf("\n----- float -> " #type "\n");    \
-   F2I(insn, -1.0f, float, type);             \
-   F2I(insn,  0.0f, float, type);             \
-   F2I(insn,  1.0f, float, type);             \
-   F2I(insn, 1.4f, float, type);              \
-   F2I(insn, 1.5f, float, type);              \
-   F2I(insn, 1.6f, float, type);              \
-   F2I(insn, 1.6E+4f, float, type);           \
-   F2I(insn, 1.6E+8f, float, type);           \
-   F2I(insn, 1.6E-4f, float, type);           \
-   F2I(insn, FLT_MAX, float, type);           \
-} while (0)
-
-#define DO_INSN_F64_TO_I(insn, type)          \
-do {                                          \
-   printf("\n----- double -> " #type "\n");   \
-   F2I(insn, -1.0, double, type);             \
-   F2I(insn,  0.0, double, type);             \
-   F2I(insn,  1.0, double, type);             \
-   F2I(insn, 1.4, double, type);              \
-   F2I(insn, 1.5, double, type);              \
-   F2I(insn, 1.6, double, type);              \
-   F2I(insn, 1.6E+4, double, type);           \
-   F2I(insn, 1.6E+8, double, type);           \
-   F2I(insn, 1.6E-4, double, type);           \
-   F2I(insn, FLT_MAX, double, type);          \
-   F2I(insn, DBL_MAX, double, type);          \
-} while (0)
-
-#define DO_F2I()                        \
-do {                                    \
-   DO_INSN_F32_TO_I("cfebr", int32_t);  \
-   DO_INSN_F32_TO_I("cgebr", int64_t);  \
-   DO_INSN_F64_TO_I("cfdbr", int32_t);  \
-   DO_INSN_F64_TO_I("cgdbr", int64_t);  \
-} while (0)
-
-
-int main()
-{
-   DO_I2F();
-   DO_F2I();
-
-   return 0;
-}
diff --git a/none/tests/s390x/fpconv.stdout.exp b/none/tests/s390x/fpconv.stdout.exp
deleted file mode 100644 (file)
index 779655e..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-
------ int32_t -> float
-cefbr 0 -> 0.000000
-cefbr 1 -> 1.000000
-cefbr -1 -> -1.000000
-cefbr 42 -> 42.000000
-cefbr 32767 -> 32767.000000
-cefbr -32768 -> -32768.000000
-cefbr 2147483647 -> 2147483648.000000
-cefbr -2147483648 -> -2147483648.000000
-
------ int32_t -> double
-cdfbr 0 -> 0.000000
-cdfbr 1 -> 1.000000
-cdfbr -1 -> -1.000000
-cdfbr 42 -> 42.000000
-cdfbr 32767 -> 32767.000000
-cdfbr -32768 -> -32768.000000
-cdfbr 2147483647 -> 2147483647.000000
-cdfbr -2147483648 -> -2147483648.000000
-
------ int64_t -> float
-cegbr 0 -> 0.000000
-cegbr 1 -> 1.000000
-cegbr -1 -> -1.000000
-cegbr 42 -> 42.000000
-cegbr 32767 -> 32767.000000
-cegbr -32768 -> -32768.000000
-cegbr 2147483647 -> 2147483648.000000
-cegbr -2147483648 -> -2147483648.000000
-cegbr 9223372036854775807 -> 9223372036854775808.000000
-cegbr -9223372036854775808 -> -9223372036854775808.000000
-
------ int64_t -> double
-cdgbr 0 -> 0.000000
-cdgbr 1 -> 1.000000
-cdgbr -1 -> -1.000000
-cdgbr 42 -> 42.000000
-cdgbr 32767 -> 32767.000000
-cdgbr -32768 -> -32768.000000
-cdgbr 2147483647 -> 2147483647.000000
-cdgbr -2147483648 -> -2147483648.000000
-cdgbr 9223372036854775807 -> 9223372036854775808.000000
-cdgbr -9223372036854775808 -> -9223372036854775808.000000
-
------ float -> int32_t
-cfebr -1.000000 -> -1   cc = 1
-cfebr 0.000000 -> 0   cc = 0
-cfebr 1.000000 -> 1   cc = 2
-cfebr 1.400000 -> 1   cc = 2
-cfebr 1.500000 -> 2   cc = 2
-cfebr 1.600000 -> 2   cc = 2
-cfebr 16000.000000 -> 16000   cc = 2
-cfebr 160000000.000000 -> 160000000   cc = 2
-cfebr 0.000160 -> 0   cc = 2
-cfebr 340282346638528859811704183484516925440.000000 -> 2147483647   cc = 3
-
------ float -> int64_t
-cgebr -1.000000 -> -1   cc = 1
-cgebr 0.000000 -> 0   cc = 0
-cgebr 1.000000 -> 1   cc = 2
-cgebr 1.400000 -> 1   cc = 2
-cgebr 1.500000 -> 2   cc = 2
-cgebr 1.600000 -> 2   cc = 2
-cgebr 16000.000000 -> 16000   cc = 2
-cgebr 160000000.000000 -> 160000000   cc = 2
-cgebr 0.000160 -> 0   cc = 2
-cgebr 340282346638528859811704183484516925440.000000 -> 9223372036854775807   cc = 3
-
------ double -> int32_t
-cfdbr -1.000000 -> -1   cc = 1
-cfdbr 0.000000 -> 0   cc = 0
-cfdbr 1.000000 -> 1   cc = 2
-cfdbr 1.400000 -> 1   cc = 2
-cfdbr 1.500000 -> 2   cc = 2
-cfdbr 1.600000 -> 2   cc = 2
-cfdbr 16000.000000 -> 16000   cc = 2
-cfdbr 160000000.000000 -> 160000000   cc = 2
-cfdbr 0.000160 -> 0   cc = 2
-cfdbr 340282346638528859811704183484516925440.000000 -> 2147483647   cc = 3
-cfdbr 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 2147483647   cc = 3
-
------ double -> int64_t
-cgdbr -1.000000 -> -1   cc = 1
-cgdbr 0.000000 -> 0   cc = 0
-cgdbr 1.000000 -> 1   cc = 2
-cgdbr 1.400000 -> 1   cc = 2
-cgdbr 1.500000 -> 2   cc = 2
-cgdbr 1.600000 -> 2   cc = 2
-cgdbr 16000.000000 -> 16000   cc = 2
-cgdbr 160000000.000000 -> 160000000   cc = 2
-cgdbr 0.000160 -> 0   cc = 2
-cgdbr 340282346638528859811704183484516925440.000000 -> 9223372036854775807   cc = 3
-cgdbr 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 -> 9223372036854775807   cc = 3
diff --git a/none/tests/s390x/fpconv.vgtest b/none/tests/s390x/fpconv.vgtest
deleted file mode 100644 (file)
index e2e3c28..0000000
+++ /dev/null
@@ -1 +0,0 @@
-prog: fpconv
diff --git a/none/tests/s390x/fpext.c b/none/tests/s390x/fpext.c
deleted file mode 100644 (file)
index 62b6bb7..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-#include <float.h>
-#include <stdio.h>
-#include <assert.h>
-#include "opcodes.h"
-
-
-#define L2F(insn,  initial, target,round)                                \
-({                                                                       \
-   register unsigned long source asm("2") =  initial;                    \
-   register typeof(target) _t asm("f0");                                 \
-   asm volatile(insn(round,0,0,2) :"=f" (_t):"d"(source));               \
-   _t;                                                                   \
-})
-
-#define F2L(insn, initial, type, round, cc)                              \
-({                                                                       \
-   register type source asm("f0") =  initial;                            \
-   register unsigned long target asm ("2") = 0;                          \
-   asm volatile(insn(round,0,2,0)                                        \
-                "ipm %1\n\t"                                             \
-                "srl %1,28\n\t"                                          \
-               :"=d" (target), "=d" (cc) :"f"(source):"cc");            \
-   target;                                                               \
-})
-
-
-#define DO_INSN_L2F32(insn, round)                                       \
-({                                                                       \
-   float f32;                                                            \
-   printf(#insn " %f\n", L2F(insn, 0, f32, round));                      \
-   printf(#insn " %f\n", L2F(insn, 1, f32, round));                      \
-   printf(#insn " %f\n", L2F(insn, 0xffffffffUL, f32, round));           \
-   printf(#insn " %f\n", L2F(insn, 0x80000000UL, f32, round));           \
-   printf(#insn " %f\n", L2F(insn, 0x7fffffffUL, f32, round));           \
-   printf(#insn " %f\n", L2F(insn, 0x100000000UL, f32, round));          \
-   printf(#insn " %f\n", L2F(insn, 0xffffffffffffffffUL, f32, round));   \
-   printf(#insn " %f\n", L2F(insn, 0x8000000000000000UL, f32, round));   \
-   printf(#insn " %f\n", L2F(insn, 0x7fffffffffffffffUL, f32, round));   \
-})
-
-#define DO_INSN_L2F64(insn, round)                                       \
-({                                                                       \
-   double f64;                                                           \
-   printf(#insn " %f\n", L2F(insn, 0, f64, round));                      \
-   printf(#insn " %f\n", L2F(insn, 1, f64, round));                      \
-   printf(#insn " %f\n", L2F(insn, 0xffffffffUL, f64, round));           \
-   printf(#insn " %f\n", L2F(insn, 0x80000000UL, f64, round));           \
-   printf(#insn " %f\n", L2F(insn, 0x7fffffffUL, f64, round));           \
-   printf(#insn " %f\n", L2F(insn, 0x100000000UL, f64, round));          \
-   printf(#insn " %f\n", L2F(insn, 0xffffffffffffffffUL, f64, round));   \
-   printf(#insn " %f\n", L2F(insn, 0x8000000000000000UL, f64, round));   \
-   printf(#insn " %f\n", L2F(insn, 0x7fffffffffffffffUL, f64, round));   \
-})
-
-#define DO_INSN_L2F128(insn, round)                                      \
-({                                                                       \
-   long double f128;                                                     \
-   printf(#insn " %Lf\n", L2F(insn, 0, f128, round));                    \
-   printf(#insn " %Lf\n", L2F(insn, 1, f128, round));                    \
-   printf(#insn " %Lf\n", L2F(insn, 0xffffffffUL, f128, round));         \
-   printf(#insn " %Lf\n", L2F(insn, 0x80000000UL, f128, round));         \
-   printf(#insn " %Lf\n", L2F(insn, 0x7fffffffUL, f128, round));         \
-   printf(#insn " %Lf\n", L2F(insn, 0x100000000UL, f128, round));        \
-   printf(#insn " %Lf\n", L2F(insn, 0xffffffffffffffffUL, f128, round)); \
-   printf(#insn " %Lf\n", L2F(insn, 0x8000000000000000UL, f128, round)); \
-   printf(#insn " %Lf\n", L2F(insn, 0x7fffffffffffffffUL, f128, round)); \
-})
-
-#define DO_INSN_F2L(insn, round, type)                                   \
-({                                                                       \
-   int cc;                                                               \
-   printf(#insn " %lu ", F2L(insn, -1.1, type, round, cc));              \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 0, type, round, cc));                 \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1, type, round, cc));                 \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.4, type, round, cc));               \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.5, type, round, cc));               \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6, type, round, cc));               \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6E+4, type, round, cc));            \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6E+8, type, round, cc));            \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6E+12, type, round, cc));           \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6E+20, type, round, cc));           \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6E+200, type, round, cc));          \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6E+2000L, type, round, cc));        \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, 1.6E-4, type, round, cc));            \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, FLT_MIN, type, round, cc));           \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, FLT_MAX, type, round, cc));           \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, DBL_MIN, type, round, cc));           \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, DBL_MAX, type, round, cc));           \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, LDBL_MIN, type, round, cc));          \
-   printf("cc=%d\n", cc);                                                \
-   printf(#insn " %lu ", F2L(insn, LDBL_MAX, type, round, cc));          \
-   printf("cc=%d\n", cc);                                                \
-})
-
-#define DO_L2F(round)                                                    \
-({                                                                       \
-   DO_INSN_L2F32(CELFBR, round);                                         \
-   DO_INSN_L2F32(CELGBR, round);                                         \
-   DO_INSN_L2F64(CDLFBR, round);                                         \
-   DO_INSN_L2F64(CDLGBR, round);                                         \
-   DO_INSN_L2F128(CXLFBR, round);                                        \
-   DO_INSN_L2F128(CXLGBR, round);                                        \
-})
-
-#define DO_F2L(round)                                                    \
-({                                                                       \
-   DO_INSN_F2L(CLFEBR, round, float);                                    \
-   DO_INSN_F2L(CLGEBR, round, float);                                    \
-   DO_INSN_F2L(CLFDBR, round, double);                                   \
-   DO_INSN_F2L(CLGDBR, round, double);                                   \
-   DO_INSN_F2L(CLFXBR, round, long double);                              \
-   DO_INSN_F2L(CLGXBR, round, long double);                              \
-})
-
-
-int main()
-{
-   assert(sizeof(long double) == 16);
-   DO_L2F(4);
-   DO_F2L(4);
-
-   DO_L2F(5);
-   DO_F2L(5);
-
-   DO_L2F(6);
-   DO_F2L(6);
-
-   DO_L2F(7);
-   DO_F2L(7);
-
-   return 0;
-}
diff --git a/none/tests/s390x/fpext.stderr.exp b/none/tests/s390x/fpext.stderr.exp
deleted file mode 100644 (file)
index 139597f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/none/tests/s390x/fpext.stdout.exp b/none/tests/s390x/fpext.stdout.exp
deleted file mode 100644 (file)
index 48fbda0..0000000
+++ /dev/null
@@ -1,672 +0,0 @@
-CELFBR 0.000000
-CELFBR 1.000000
-CELFBR 4294967296.000000
-CELFBR 2147483648.000000
-CELFBR 2147483648.000000
-CELFBR 0.000000
-CELFBR 4294967296.000000
-CELFBR 0.000000
-CELFBR 4294967296.000000
-CELGBR 0.000000
-CELGBR 1.000000
-CELGBR 4294967296.000000
-CELGBR 2147483648.000000
-CELGBR 2147483648.000000
-CELGBR 4294967296.000000
-CELGBR 18446744073709551616.000000
-CELGBR 9223372036854775808.000000
-CELGBR 9223372036854775808.000000
-CDLFBR 0.000000
-CDLFBR 1.000000
-CDLFBR 4294967295.000000
-CDLFBR 2147483648.000000
-CDLFBR 2147483647.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLGBR 0.000000
-CDLGBR 1.000000
-CDLGBR 4294967295.000000
-CDLGBR 2147483648.000000
-CDLGBR 2147483647.000000
-CDLGBR 4294967296.000000
-CDLGBR 18446744073709551616.000000
-CDLGBR 9223372036854775808.000000
-CDLGBR 9223372036854775808.000000
-CXLFBR 0.000000
-CXLFBR 1.000000
-CXLFBR 4294967295.000000
-CXLFBR 2147483648.000000
-CXLFBR 2147483647.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLGBR 0.000000
-CXLGBR 1.000000
-CXLGBR 4294967295.000000
-CXLGBR 2147483648.000000
-CXLGBR 2147483647.000000
-CXLGBR 4294967296.000000
-CXLGBR 18446744073709551615.000000
-CXLGBR 9223372036854775808.000000
-CXLGBR 9223372036854775807.000000
-CLFEBR 0 cc=3
-CLFEBR 0 cc=0
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 2 cc=2
-CLFEBR 2 cc=2
-CLFEBR 16000 cc=2
-CLFEBR 160000000 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=2
-CLFEBR 0 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLGEBR 0 cc=3
-CLGEBR 0 cc=0
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 2 cc=2
-CLGEBR 2 cc=2
-CLGEBR 16000 cc=2
-CLGEBR 160000000 cc=2
-CLGEBR 1599999967232 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=2
-CLGEBR 0 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLFDBR 0 cc=3
-CLFDBR 0 cc=0
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 2 cc=2
-CLFDBR 2 cc=2
-CLFDBR 16000 cc=2
-CLFDBR 160000000 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=2
-CLFDBR 0 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=0
-CLFDBR 4294967295 cc=3
-CLGDBR 0 cc=3
-CLGDBR 0 cc=0
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 2 cc=2
-CLGDBR 2 cc=2
-CLGDBR 16000 cc=2
-CLGDBR 160000000 cc=2
-CLGDBR 1600000000000 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=2
-CLGDBR 0 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=0
-CLGDBR 18446744073709551615 cc=3
-CLFXBR 0 cc=3
-CLFXBR 0 cc=0
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 2 cc=2
-CLFXBR 2 cc=2
-CLFXBR 16000 cc=2
-CLFXBR 160000000 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLGXBR 0 cc=3
-CLGXBR 0 cc=0
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 2 cc=2
-CLGXBR 2 cc=2
-CLGXBR 16000 cc=2
-CLGXBR 160000000 cc=2
-CLGXBR 1600000000000 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CELFBR 0.000000
-CELFBR 1.000000
-CELFBR 4294967040.000000
-CELFBR 2147483648.000000
-CELFBR 2147483520.000000
-CELFBR 0.000000
-CELFBR 4294967040.000000
-CELFBR 0.000000
-CELFBR 4294967040.000000
-CELGBR 0.000000
-CELGBR 1.000000
-CELGBR 4294967040.000000
-CELGBR 2147483648.000000
-CELGBR 2147483520.000000
-CELGBR 4294967296.000000
-CELGBR 18446742974197923840.000000
-CELGBR 9223372036854775808.000000
-CELGBR 9223371487098961920.000000
-CDLFBR 0.000000
-CDLFBR 1.000000
-CDLFBR 4294967295.000000
-CDLFBR 2147483648.000000
-CDLFBR 2147483647.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLGBR 0.000000
-CDLGBR 1.000000
-CDLGBR 4294967295.000000
-CDLGBR 2147483648.000000
-CDLGBR 2147483647.000000
-CDLGBR 4294967296.000000
-CDLGBR 18446744073709549568.000000
-CDLGBR 9223372036854775808.000000
-CDLGBR 9223372036854774784.000000
-CXLFBR 0.000000
-CXLFBR 1.000000
-CXLFBR 4294967295.000000
-CXLFBR 2147483648.000000
-CXLFBR 2147483647.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLGBR 0.000000
-CXLGBR 1.000000
-CXLGBR 4294967295.000000
-CXLGBR 2147483648.000000
-CXLGBR 2147483647.000000
-CXLGBR 4294967296.000000
-CXLGBR 18446744073709551615.000000
-CXLGBR 9223372036854775808.000000
-CXLGBR 9223372036854775807.000000
-CLFEBR 0 cc=3
-CLFEBR 0 cc=0
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 16000 cc=2
-CLFEBR 160000000 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=2
-CLFEBR 0 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLGEBR 0 cc=3
-CLGEBR 0 cc=0
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 16000 cc=2
-CLGEBR 160000000 cc=2
-CLGEBR 1599999967232 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=2
-CLGEBR 0 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLFDBR 0 cc=3
-CLFDBR 0 cc=0
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 16000 cc=2
-CLFDBR 160000000 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=2
-CLFDBR 0 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=0
-CLFDBR 4294967295 cc=3
-CLGDBR 0 cc=3
-CLGDBR 0 cc=0
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 16000 cc=2
-CLGDBR 160000000 cc=2
-CLGDBR 1600000000000 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=2
-CLGDBR 0 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=0
-CLGDBR 18446744073709551615 cc=3
-CLFXBR 0 cc=3
-CLFXBR 0 cc=0
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 16000 cc=2
-CLFXBR 160000000 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLGXBR 0 cc=3
-CLGXBR 0 cc=0
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 16000 cc=2
-CLGXBR 160000000 cc=2
-CLGXBR 1600000000000 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CELFBR 0.000000
-CELFBR 1.000000
-CELFBR 4294967296.000000
-CELFBR 2147483648.000000
-CELFBR 2147483648.000000
-CELFBR 0.000000
-CELFBR 4294967296.000000
-CELFBR 0.000000
-CELFBR 4294967296.000000
-CELGBR 0.000000
-CELGBR 1.000000
-CELGBR 4294967296.000000
-CELGBR 2147483648.000000
-CELGBR 2147483648.000000
-CELGBR 4294967296.000000
-CELGBR 18446744073709551616.000000
-CELGBR 9223372036854775808.000000
-CELGBR 9223372036854775808.000000
-CDLFBR 0.000000
-CDLFBR 1.000000
-CDLFBR 4294967295.000000
-CDLFBR 2147483648.000000
-CDLFBR 2147483647.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLGBR 0.000000
-CDLGBR 1.000000
-CDLGBR 4294967295.000000
-CDLGBR 2147483648.000000
-CDLGBR 2147483647.000000
-CDLGBR 4294967296.000000
-CDLGBR 18446744073709551616.000000
-CDLGBR 9223372036854775808.000000
-CDLGBR 9223372036854775808.000000
-CXLFBR 0.000000
-CXLFBR 1.000000
-CXLFBR 4294967295.000000
-CXLFBR 2147483648.000000
-CXLFBR 2147483647.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLGBR 0.000000
-CXLGBR 1.000000
-CXLGBR 4294967295.000000
-CXLGBR 2147483648.000000
-CXLGBR 2147483647.000000
-CXLGBR 4294967296.000000
-CXLGBR 18446744073709551615.000000
-CXLGBR 9223372036854775808.000000
-CXLGBR 9223372036854775807.000000
-CLFEBR 0 cc=3
-CLFEBR 0 cc=0
-CLFEBR 1 cc=2
-CLFEBR 2 cc=2
-CLFEBR 2 cc=2
-CLFEBR 2 cc=2
-CLFEBR 16000 cc=2
-CLFEBR 160000000 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLGEBR 0 cc=3
-CLGEBR 0 cc=0
-CLGEBR 1 cc=2
-CLGEBR 2 cc=2
-CLGEBR 2 cc=2
-CLGEBR 2 cc=2
-CLGEBR 16000 cc=2
-CLGEBR 160000000 cc=2
-CLGEBR 1599999967232 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLFDBR 0 cc=3
-CLFDBR 0 cc=0
-CLFDBR 1 cc=2
-CLFDBR 2 cc=2
-CLFDBR 2 cc=2
-CLFDBR 2 cc=2
-CLFDBR 16000 cc=2
-CLFDBR 160000000 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 1 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=0
-CLFDBR 4294967295 cc=3
-CLGDBR 0 cc=3
-CLGDBR 0 cc=0
-CLGDBR 1 cc=2
-CLGDBR 2 cc=2
-CLGDBR 2 cc=2
-CLGDBR 2 cc=2
-CLGDBR 16000 cc=2
-CLGDBR 160000000 cc=2
-CLGDBR 1600000000000 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 1 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=0
-CLGDBR 18446744073709551615 cc=3
-CLFXBR 0 cc=3
-CLFXBR 0 cc=0
-CLFXBR 1 cc=2
-CLFXBR 2 cc=2
-CLFXBR 2 cc=2
-CLFXBR 2 cc=2
-CLFXBR 16000 cc=2
-CLFXBR 160000000 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 1 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 1 cc=2
-CLFXBR 4294967295 cc=3
-CLGXBR 0 cc=3
-CLGXBR 0 cc=0
-CLGXBR 1 cc=2
-CLGXBR 2 cc=2
-CLGXBR 2 cc=2
-CLGXBR 2 cc=2
-CLGXBR 16000 cc=2
-CLGXBR 160000000 cc=2
-CLGXBR 1600000000000 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 1 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 1 cc=2
-CLGXBR 18446744073709551615 cc=3
-CELFBR 0.000000
-CELFBR 1.000000
-CELFBR 4294967040.000000
-CELFBR 2147483648.000000
-CELFBR 2147483520.000000
-CELFBR 0.000000
-CELFBR 4294967040.000000
-CELFBR 0.000000
-CELFBR 4294967040.000000
-CELGBR 0.000000
-CELGBR 1.000000
-CELGBR 4294967040.000000
-CELGBR 2147483648.000000
-CELGBR 2147483520.000000
-CELGBR 4294967296.000000
-CELGBR 18446742974197923840.000000
-CELGBR 9223372036854775808.000000
-CELGBR 9223371487098961920.000000
-CDLFBR 0.000000
-CDLFBR 1.000000
-CDLFBR 4294967295.000000
-CDLFBR 2147483648.000000
-CDLFBR 2147483647.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLFBR 0.000000
-CDLFBR 4294967295.000000
-CDLGBR 0.000000
-CDLGBR 1.000000
-CDLGBR 4294967295.000000
-CDLGBR 2147483648.000000
-CDLGBR 2147483647.000000
-CDLGBR 4294967296.000000
-CDLGBR 18446744073709549568.000000
-CDLGBR 9223372036854775808.000000
-CDLGBR 9223372036854774784.000000
-CXLFBR 0.000000
-CXLFBR 1.000000
-CXLFBR 4294967295.000000
-CXLFBR 2147483648.000000
-CXLFBR 2147483647.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLFBR 0.000000
-CXLFBR 4294967295.000000
-CXLGBR 0.000000
-CXLGBR 1.000000
-CXLGBR 4294967295.000000
-CXLGBR 2147483648.000000
-CXLGBR 2147483647.000000
-CXLGBR 4294967296.000000
-CXLGBR 18446744073709551615.000000
-CXLGBR 9223372036854775808.000000
-CXLGBR 9223372036854775807.000000
-CLFEBR 0 cc=3
-CLFEBR 0 cc=0
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 1 cc=2
-CLFEBR 16000 cc=2
-CLFEBR 160000000 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=2
-CLFEBR 0 cc=2
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLFEBR 0 cc=0
-CLFEBR 4294967295 cc=3
-CLGEBR 0 cc=3
-CLGEBR 0 cc=0
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 1 cc=2
-CLGEBR 16000 cc=2
-CLGEBR 160000000 cc=2
-CLGEBR 1599999967232 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=2
-CLGEBR 0 cc=2
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLGEBR 0 cc=0
-CLGEBR 18446744073709551615 cc=3
-CLFDBR 0 cc=3
-CLFDBR 0 cc=0
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 1 cc=2
-CLFDBR 16000 cc=2
-CLFDBR 160000000 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=2
-CLFDBR 0 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=2
-CLFDBR 4294967295 cc=3
-CLFDBR 0 cc=0
-CLFDBR 4294967295 cc=3
-CLGDBR 0 cc=3
-CLGDBR 0 cc=0
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 1 cc=2
-CLGDBR 16000 cc=2
-CLGDBR 160000000 cc=2
-CLGDBR 1600000000000 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=2
-CLGDBR 0 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=2
-CLGDBR 18446744073709551615 cc=3
-CLGDBR 0 cc=0
-CLGDBR 18446744073709551615 cc=3
-CLFXBR 0 cc=3
-CLFXBR 0 cc=0
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 1 cc=2
-CLFXBR 16000 cc=2
-CLFXBR 160000000 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLFXBR 0 cc=2
-CLFXBR 4294967295 cc=3
-CLGXBR 0 cc=3
-CLGXBR 0 cc=0
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 1 cc=2
-CLGXBR 16000 cc=2
-CLGXBR 160000000 cc=2
-CLGXBR 1600000000000 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
-CLGXBR 0 cc=2
-CLGXBR 18446744073709551615 cc=3
diff --git a/none/tests/s390x/fpext.vgtest b/none/tests/s390x/fpext.vgtest
deleted file mode 100644 (file)
index 948bad9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-prog: fpext
-prereq: test -e fpext && ../../../tests/s390x_features s390x-fpext
diff --git a/none/tests/s390x/fpext_fail.c b/none/tests/s390x/fpext_fail.c
new file mode 100644 (file)
index 0000000..9de7a8e
--- /dev/null
@@ -0,0 +1,6 @@
+int main(void)
+{
+   float val = 0.0f;
+   __asm__ volatile ("celfbr 1,5,%[f0],0" : : [f0]"f"(val) : "cc", "r1");
+   return 0;
+}
index 970cbedff717dfab4ce70f7d3367c9f6a1c73f28..48e8c5984e7824082d85a5a775dcb1bc8414fde9 100644 (file)
@@ -1,2 +1,2 @@
-prog: fpext
-prereq: test -e fpext && ../../../tests/s390x_features '!s390x-fpext'
+prog: fpext_fail
+prereq: test -e fpext_fail && ../../../tests/s390x_features '!s390x-fpext'
diff --git a/none/tests/s390x/rounding-3.c b/none/tests/s390x/rounding-3.c
deleted file mode 100644 (file)
index bd53db6..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <inttypes.h>
-#include "opcodes.h"
-
-/* Test "convert to fixed"  with "per fpc" rounding.
-   Covers all generally available rounding modes.
-*/
-
-void
-set_rounding_mode(unsigned mode)
-{
-   register unsigned r asm("1") = mode;
-   __asm__ volatile ( SFPC(1) : : "d"(r) );
-}
-
-unsigned
-get_rounding_mode(void)
-{
-   unsigned fpc;
-
-   __asm__ volatile ("stfpc  %0" : "=Q"(fpc));
-
-   return fpc & 0x7;
-}
-
-
-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);
-}
-
-#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\n",    \
-          opcode, src, dst, cc);        \
-} while (0)
-
-
-#define cfebr(value) \
-        convert_to_int("cfebr",float,int32_t,PRId32,0,value)
-#define cfdbr(value) \
-        convert_to_int("cfdbr",double,int32_t,PRId32,0,value)
-#define cgebr(value) \
-        convert_to_int("cgebr",float,int64_t,PRId64,0,value)
-#define cgdbr(value) \
-        convert_to_int("cgdbr",double,int64_t,PRId64,0,value)
-
-int main(void)
-{
-   int i, j;
-   static const unsigned rmodes[] = { 0, 1, 2, 3 };
-   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,
-   };
-
-
-   for (i = 0; i < sizeof rmodes / sizeof rmodes[0]; ++i) {
-      printf("setting rounding mode to %s\n", rtext(rmodes[i]));
-      set_rounding_mode(rmodes[i]);
-      assert(get_rounding_mode() == rmodes[i]);
-
-      /* f32 -> i32 */
-      for (j = 0; j < sizeof fval / sizeof fval[0]; ++j) {
-         cfebr(fval[j]);
-         assert(get_rounding_mode() == rmodes[i]);
-      }
-
-      /* f32 -> i64 */
-      for (j = 0; j < sizeof fval / sizeof fval[0]; ++j) {
-         cgebr(fval[j]);
-         assert(get_rounding_mode() == rmodes[i]);
-      }
-
-      /* f64 -> i32 */
-      for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) {
-         cfdbr(dval[j]);
-         assert(get_rounding_mode() == rmodes[i]);
-      }
-
-      /* f64 -> i64 */
-      for (j = 0; j < sizeof dval / sizeof dval[0]; ++j) {
-         cgdbr(dval[j]);
-         assert(get_rounding_mode() == rmodes[i]);
-      }
-
-   }
-
-   return 0;
-}
diff --git a/none/tests/s390x/rounding-3.stderr.exp b/none/tests/s390x/rounding-3.stderr.exp
deleted file mode 100644 (file)
index 139597f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/none/tests/s390x/rounding-3.stdout.exp b/none/tests/s390x/rounding-3.stdout.exp
deleted file mode 100644 (file)
index e613af9..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-setting rounding mode to [-> near]
-cfebr 1.250000 -> 1    cc = 2
-cfebr 1.500000 -> 2    cc = 2
-cfebr 2.500000 -> 2    cc = 2
-cfebr 1.750000 -> 2    cc = 2
-cfebr -1.250000        -> -1   cc = 1
-cfebr -1.500000        -> -2   cc = 1
-cfebr -2.500000        -> -2   cc = 1
-cfebr -1.750000        -> -2   cc = 1
-cfebr 0.000000 -> 0    cc = 0
-cgebr 1.250000 -> 1    cc = 2
-cgebr 1.500000 -> 2    cc = 2
-cgebr 2.500000 -> 2    cc = 2
-cgebr 1.750000 -> 2    cc = 2
-cgebr -1.250000        -> -1   cc = 1
-cgebr -1.500000        -> -2   cc = 1
-cgebr -2.500000        -> -2   cc = 1
-cgebr -1.750000        -> -2   cc = 1
-cgebr 0.000000 -> 0    cc = 0
-cfdbr 1.250000 -> 1    cc = 2
-cfdbr 1.500000 -> 2    cc = 2
-cfdbr 2.500000 -> 2    cc = 2
-cfdbr 1.750000 -> 2    cc = 2
-cfdbr -1.250000        -> -1   cc = 1
-cfdbr -1.500000        -> -2   cc = 1
-cfdbr -2.500000        -> -2   cc = 1
-cfdbr -1.750000        -> -2   cc = 1
-cfdbr 0.000000 -> 0    cc = 0
-cgdbr 1.250000 -> 1    cc = 2
-cgdbr 1.500000 -> 2    cc = 2
-cgdbr 2.500000 -> 2    cc = 2
-cgdbr 1.750000 -> 2    cc = 2
-cgdbr -1.250000        -> -1   cc = 1
-cgdbr -1.500000        -> -2   cc = 1
-cgdbr -2.500000        -> -2   cc = 1
-cgdbr -1.750000        -> -2   cc = 1
-cgdbr 0.000000 -> 0    cc = 0
-setting rounding mode to [-> zero]
-cfebr 1.250000 -> 1    cc = 2
-cfebr 1.500000 -> 1    cc = 2
-cfebr 2.500000 -> 2    cc = 2
-cfebr 1.750000 -> 1    cc = 2
-cfebr -1.250000        -> -1   cc = 1
-cfebr -1.500000        -> -1   cc = 1
-cfebr -2.500000        -> -2   cc = 1
-cfebr -1.750000        -> -1   cc = 1
-cfebr 0.000000 -> 0    cc = 0
-cgebr 1.250000 -> 1    cc = 2
-cgebr 1.500000 -> 1    cc = 2
-cgebr 2.500000 -> 2    cc = 2
-cgebr 1.750000 -> 1    cc = 2
-cgebr -1.250000        -> -1   cc = 1
-cgebr -1.500000        -> -1   cc = 1
-cgebr -2.500000        -> -2   cc = 1
-cgebr -1.750000        -> -1   cc = 1
-cgebr 0.000000 -> 0    cc = 0
-cfdbr 1.250000 -> 1    cc = 2
-cfdbr 1.500000 -> 1    cc = 2
-cfdbr 2.500000 -> 2    cc = 2
-cfdbr 1.750000 -> 1    cc = 2
-cfdbr -1.250000        -> -1   cc = 1
-cfdbr -1.500000        -> -1   cc = 1
-cfdbr -2.500000        -> -2   cc = 1
-cfdbr -1.750000        -> -1   cc = 1
-cfdbr 0.000000 -> 0    cc = 0
-cgdbr 1.250000 -> 1    cc = 2
-cgdbr 1.500000 -> 1    cc = 2
-cgdbr 2.500000 -> 2    cc = 2
-cgdbr 1.750000 -> 1    cc = 2
-cgdbr -1.250000        -> -1   cc = 1
-cgdbr -1.500000        -> -1   cc = 1
-cgdbr -2.500000        -> -2   cc = 1
-cgdbr -1.750000        -> -1   cc = 1
-cgdbr 0.000000 -> 0    cc = 0
-setting rounding mode to [-> +inf]
-cfebr 1.250000 -> 2    cc = 2
-cfebr 1.500000 -> 2    cc = 2
-cfebr 2.500000 -> 3    cc = 2
-cfebr 1.750000 -> 2    cc = 2
-cfebr -1.250000        -> -1   cc = 1
-cfebr -1.500000        -> -1   cc = 1
-cfebr -2.500000        -> -2   cc = 1
-cfebr -1.750000        -> -1   cc = 1
-cfebr 0.000000 -> 0    cc = 0
-cgebr 1.250000 -> 2    cc = 2
-cgebr 1.500000 -> 2    cc = 2
-cgebr 2.500000 -> 3    cc = 2
-cgebr 1.750000 -> 2    cc = 2
-cgebr -1.250000        -> -1   cc = 1
-cgebr -1.500000        -> -1   cc = 1
-cgebr -2.500000        -> -2   cc = 1
-cgebr -1.750000        -> -1   cc = 1
-cgebr 0.000000 -> 0    cc = 0
-cfdbr 1.250000 -> 2    cc = 2
-cfdbr 1.500000 -> 2    cc = 2
-cfdbr 2.500000 -> 3    cc = 2
-cfdbr 1.750000 -> 2    cc = 2
-cfdbr -1.250000        -> -1   cc = 1
-cfdbr -1.500000        -> -1   cc = 1
-cfdbr -2.500000        -> -2   cc = 1
-cfdbr -1.750000        -> -1   cc = 1
-cfdbr 0.000000 -> 0    cc = 0
-cgdbr 1.250000 -> 2    cc = 2
-cgdbr 1.500000 -> 2    cc = 2
-cgdbr 2.500000 -> 3    cc = 2
-cgdbr 1.750000 -> 2    cc = 2
-cgdbr -1.250000        -> -1   cc = 1
-cgdbr -1.500000        -> -1   cc = 1
-cgdbr -2.500000        -> -2   cc = 1
-cgdbr -1.750000        -> -1   cc = 1
-cgdbr 0.000000 -> 0    cc = 0
-setting rounding mode to [-> -inf]
-cfebr 1.250000 -> 1    cc = 2
-cfebr 1.500000 -> 1    cc = 2
-cfebr 2.500000 -> 2    cc = 2
-cfebr 1.750000 -> 1    cc = 2
-cfebr -1.250000        -> -2   cc = 1
-cfebr -1.500000        -> -2   cc = 1
-cfebr -2.500000        -> -3   cc = 1
-cfebr -1.750000        -> -2   cc = 1
-cfebr 0.000000 -> 0    cc = 0
-cgebr 1.250000 -> 1    cc = 2
-cgebr 1.500000 -> 1    cc = 2
-cgebr 2.500000 -> 2    cc = 2
-cgebr 1.750000 -> 1    cc = 2
-cgebr -1.250000        -> -2   cc = 1
-cgebr -1.500000        -> -2   cc = 1
-cgebr -2.500000        -> -3   cc = 1
-cgebr -1.750000        -> -2   cc = 1
-cgebr 0.000000 -> 0    cc = 0
-cfdbr 1.250000 -> 1    cc = 2
-cfdbr 1.500000 -> 1    cc = 2
-cfdbr 2.500000 -> 2    cc = 2
-cfdbr 1.750000 -> 1    cc = 2
-cfdbr -1.250000        -> -2   cc = 1
-cfdbr -1.500000        -> -2   cc = 1
-cfdbr -2.500000        -> -3   cc = 1
-cfdbr -1.750000        -> -2   cc = 1
-cfdbr 0.000000 -> 0    cc = 0
-cgdbr 1.250000 -> 1    cc = 2
-cgdbr 1.500000 -> 1    cc = 2
-cgdbr 2.500000 -> 2    cc = 2
-cgdbr 1.750000 -> 1    cc = 2
-cgdbr -1.250000        -> -2   cc = 1
-cgdbr -1.500000        -> -2   cc = 1
-cgdbr -2.500000        -> -3   cc = 1
-cgdbr -1.750000        -> -2   cc = 1
-cgdbr 0.000000 -> 0    cc = 0
diff --git a/none/tests/s390x/rounding-3.vgtest b/none/tests/s390x/rounding-3.vgtest
deleted file mode 100644 (file)
index 8168710..0000000
+++ /dev/null
@@ -1 +0,0 @@
-prog: rounding-3