]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390x: Enable "convert to logical" BFP test
authorFlorian Krohm <flo2030@eich-krohm.de>
Sun, 26 Oct 2025 21:45:32 +0000 (21:45 +0000)
committerFlorian Krohm <flo2030@eich-krohm.de>
Sun, 26 Oct 2025 21:45:32 +0000 (21:45 +0000)
This was disabled because I had thought that a negative
operand value should result in a condition code of 1. Not so.
Additionally the operand value must be 0 after rounding.

none/tests/s390x/bfp-convert.c
none/tests/s390x/bfp-convert.stdout.exp

index 1d0502e41f6939ca910fdb0f830f112521a8e87b..dbb5b53ad987e28a4c432ec0c47dc1fde00b2e52 100644 (file)
@@ -179,9 +179,9 @@ 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_NEAREST_AWAY:  return "[-> nearest with ties away from 0]";
    case M3_BFP_ROUND_PREPARE_SHORT: return "[-> prepare-short]";
-   case M3_BFP_ROUND_NEAREST_EVEN:  return "[-> near away]";
+   case M3_BFP_ROUND_NEAREST_EVEN:  return "[-> nearest with ties to even]";
    case M3_BFP_ROUND_ZERO:          return "[-> zero]";
    case M3_BFP_ROUND_POSINF:        return "[-> +inf]";
    case M3_BFP_ROUND_NEGINF:        return "[-> -inf]";
@@ -191,7 +191,7 @@ m3_rtext(unsigned m3_round)
 
 /* Can be converted to 64-bit and 128-bit values without issues. */
 static const float values[] = {
-   0.0f, -1.0f, 2.0f, NAN, INFINITY
+   0.0f, -0.25f, 2.0f, NAN, INFINITY
 };
 
 static void
@@ -230,7 +230,8 @@ convert_to_int_fpc_tests(unsigned mode)
       cgxbr(values[j], M3_BFP_ROUND_PER_FPC);
 }
 
-#if 0
+/* Note: In order to get cc = 1 it is not sufficient for the operand value
+   to be < 0. Additionally, the operand value after rounding must be 0. */
 static void
 convert_to_logical_fpc_tests(unsigned mode)
 {
@@ -266,7 +267,6 @@ convert_to_logical_fpc_tests(unsigned mode)
    for (int j = 0; j < sizeof values / sizeof values[0]; ++j)
       clgxbr(values[j], M3_BFP_ROUND_PER_FPC);
 }
-#endif
 
 int
 main(void)
@@ -292,19 +292,16 @@ main(void)
    }
 
    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_int_m3_tests(M3_BFP_ROUND_NEAREST_AWAY);
+   convert_to_int_m3_tests(M3_BFP_ROUND_PREPARE_SHORT);
+   convert_to_int_m3_tests(M3_BFP_ROUND_NEAREST_EVEN);
+   convert_to_int_m3_tests(M3_BFP_ROUND_ZERO);
+   convert_to_int_m3_tests(M3_BFP_ROUND_POSINF);
+   convert_to_int_m3_tests(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");
@@ -314,12 +311,12 @@ main(void)
    }
 
    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
+   convert_to_logical_m3_tests(M3_BFP_ROUND_NEAREST_AWAY);
+   convert_to_logical_m3_tests(M3_BFP_ROUND_PREPARE_SHORT);
+   convert_to_logical_m3_tests(M3_BFP_ROUND_NEAREST_EVEN);
+   convert_to_logical_m3_tests(M3_BFP_ROUND_ZERO);
+   convert_to_logical_m3_tests(M3_BFP_ROUND_POSINF);
+   convert_to_logical_m3_tests(M3_BFP_ROUND_NEGINF);
+
    return 0;
 }
index c5a17ebd43ba2b3f56cb63cac9e2158f4b578151..7c9d5a1e40e13113a6d37ebf6e4b70088fece3d6 100644 (file)
@@ -4,8 +4,8 @@ Rounding as 'per FPC'
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -15,8 +15,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -26,8 +26,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -37,8 +37,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -48,8 +48,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -59,8 +59,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -71,8 +71,8 @@ cgxbra inf    cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -82,8 +82,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -93,8 +93,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -104,8 +104,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -115,8 +115,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -126,8 +126,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -138,8 +138,8 @@ cgxbra inf  cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -149,8 +149,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -160,8 +160,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -171,8 +171,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -182,8 +182,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -193,8 +193,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -205,8 +205,8 @@ cgxbra inf  cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -216,8 +216,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -227,8 +227,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -238,8 +238,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -249,8 +249,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -260,8 +260,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -272,8 +272,8 @@ cgxbra inf  cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -283,8 +283,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -294,8 +294,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -305,8 +305,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -316,8 +316,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -327,8 +327,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -336,12 +336,12 @@ cgxbra nan        cc = 3
 cgxbr inf      cc = 3
 cgxbra inf     cc = 3
 Rounding as 'per M3'
-...setting M3 rounding mode to [-> near away]
+...setting M3 rounding mode to [-> nearest with ties away from 0]
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -351,8 +351,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -362,8 +362,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -373,8 +373,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -384,8 +384,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -395,8 +395,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -407,8 +407,8 @@ cgxbra inf  cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -418,8 +418,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -429,8 +429,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -440,8 +440,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -451,8 +451,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -462,20 +462,20 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       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]
+...setting M3 rounding mode to [-> nearest with ties to even]
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -485,8 +485,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -496,8 +496,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -507,8 +507,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -518,8 +518,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -529,8 +529,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -541,8 +541,8 @@ cgxbra inf  cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -552,8 +552,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -563,8 +563,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -574,8 +574,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -585,8 +585,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -596,8 +596,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -608,8 +608,8 @@ cgxbra inf  cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -619,8 +619,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -630,8 +630,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -641,8 +641,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -652,8 +652,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -663,8 +663,8 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       cc = 1
 cgxbr 2.000000 cc = 2
 cgxbra 2.000000        cc = 2
 cgxbr nan      cc = 3
@@ -675,8 +675,8 @@ cgxbra inf  cc = 3
 ......f32 -> i32
 cfebr 0.000000 cc = 0
 cfebra 0.000000        cc = 0
-cfebr -1.000000        cc = 1
-cfebra -1.000000       cc = 1
+cfebr -0.250000        cc = 1
+cfebra -0.250000       cc = 1
 cfebr 2.000000 cc = 2
 cfebra 2.000000        cc = 2
 cfebr nan      cc = 3
@@ -686,8 +686,8 @@ 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 -0.250000        cc = 1
+cgebra -0.250000       cc = 1
 cgebr 2.000000 cc = 2
 cgebra 2.000000        cc = 2
 cgebr nan      cc = 3
@@ -697,8 +697,8 @@ 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 -0.250000        cc = 1
+cfdbra -0.250000       cc = 1
 cfdbr 2.000000 cc = 2
 cfdbra 2.000000        cc = 2
 cfdbr nan      cc = 3
@@ -708,8 +708,8 @@ 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 -0.250000        cc = 1
+cgdbra -0.250000       cc = 1
 cgdbr 2.000000 cc = 2
 cgdbra 2.000000        cc = 2
 cgdbr nan      cc = 3
@@ -719,8 +719,8 @@ 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 -0.250000        cc = 1
+cfxbra -0.250000       cc = 1
 cfxbr 2.000000 cc = 2
 cfxbra 2.000000        cc = 2
 cfxbr nan      cc = 3
@@ -730,11 +730,422 @@ 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 -0.250000        cc = 1
+cgxbra -0.250000       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
+
+============ Convert to logical =============
+Rounding as 'per FPC'
+...setting FPC rounding mode to [-> near]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting FPC rounding mode to [-> zero]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting FPC rounding mode to [-> +inf]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting FPC rounding mode to [-> -inf]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 3
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 3
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 3
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 3
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 3
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 3
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting FPC rounding mode to [-> prepare-short]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+Rounding as 'per M3'
+...setting M3 rounding mode to [-> nearest with ties away from 0]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting M3 rounding mode to [-> prepare-short]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 3
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 3
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 3
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 3
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 3
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 3
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting M3 rounding mode to [-> nearest with ties to even]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting M3 rounding mode to [-> zero]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting M3 rounding mode to [-> +inf]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 1
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 1
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 1
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 1
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 1
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 1
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3
+...setting M3 rounding mode to [-> -inf]
+......f32 -> u32
+clfebr 0.000000        cc = 0
+clfebr -0.250000       cc = 3
+clfebr 2.000000        cc = 2
+clfebr nan     cc = 3
+clfebr inf     cc = 3
+......f32 -> u64
+clgebr 0.000000        cc = 0
+clgebr -0.250000       cc = 3
+clgebr 2.000000        cc = 2
+clgebr nan     cc = 3
+clgebr inf     cc = 3
+......f64 -> u32
+clfdbr 0.000000        cc = 0
+clfdbr -0.250000       cc = 3
+clfdbr 2.000000        cc = 2
+clfdbr nan     cc = 3
+clfdbr inf     cc = 3
+......f64 -> u64
+clgdbr 0.000000        cc = 0
+clgdbr -0.250000       cc = 3
+clgdbr 2.000000        cc = 2
+clgdbr nan     cc = 3
+clgdbr inf     cc = 3
+......f128 -> u32
+clfxbr 0.000000        cc = 0
+clfxbr -0.250000       cc = 3
+clfxbr 2.000000        cc = 2
+clfxbr nan     cc = 3
+clfxbr inf     cc = 3
+......f128 -> u64
+clgxbr 0.000000        cc = 0
+clgxbr -0.250000       cc = 3
+clgxbr 2.000000        cc = 2
+clgxbr nan     cc = 3
+clgxbr inf     cc = 3