From: Florian Krohm Date: Mon, 27 Oct 2025 13:09:04 +0000 (+0000) Subject: s390x: Testcase workaround X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c862aa8c1ab56887eea779a9eec31ea40c7d992f;p=thirdparty%2Fvalgrind.git s390x: Testcase workaround GCC 14.2.0 does not recognize convert to fixed/logical opcodes: bfp-convert.c: Assembler messages: bfp-convert.c:205: Error: Unrecognized opcode: `cfebra' bfp-convert.c:210: Error: Unrecognized opcode: `cgebra' ... bfp-convert.c:314: Error: Unrecognized opcode: `clfebr' bfp-convert.c:314: Error: Unrecognized opcode: `clgebr' ... --- diff --git a/none/tests/s390x/bfp-convert.c b/none/tests/s390x/bfp-convert.c index dbb5b53ad..4d8de26b6 100644 --- a/none/tests/s390x/bfp-convert.c +++ b/none/tests/s390x/bfp-convert.c @@ -21,73 +21,80 @@ #include #include "rounding.h" -#define convert_to_int(opcode,src_type,dst_type,round,value,fmt) \ +// Convert to fixed +#define CFEBR "0xb398" +#define CFDBR "0xb399" +#define CFXBR "0xb39a" +#define CGEBR "0xb3a8" +#define CGDBR "0xb3a8" +#define CGXBR "0xb3aa" + +// Convert to logical +#define CLFEBR "0xb39c" +#define CLFDBR "0xb39d" +#define CLFXBR "0xb39e" +#define CLGEBR "0xb3ac" +#define CLGDBR "0xb3ad" +#define CLGXBR "0xb3ae" + +#define convert_to_int(mnm,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" \ + __asm__ volatile(".insn rrf," opcode "0000," "%[r1],%[r2],%[m3],0\n\t" \ "ipm %[cc]\n\t" \ "srl %[cc],28\n\t" \ - : [dst]"=d"(dst), [cc]"=d"(cc) \ - : [src]"f"(src) \ + : [r1] "=d"(dst), [cc] "=d"(cc) \ + : [r2] "f"(src), [m3] "i"(round) \ : "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); \ + printf("%s "fmt"\tcc = %u\n", mnm, src, cc); \ } while (0) -#define convert_to_logical(opcode,src_type,dst_type,round,value,fmt) \ +#define convert_to_logical(mnm,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"); \ + __asm__ volatile(".insn rrf," opcode "0000," "%[r1],%[r2],%[m3],0\n\t" \ + "ipm %[cc]\n\t" \ + "srl %[cc],28\n\t" \ + : [r1] "=d"(dst), [cc] "=d"(cc) \ + : [r2] "f"(src), [m3] "i"(round) \ + : "cc"); \ \ - printf("%s "fmt"\tcc = %u\n", opcode, src, cc); \ + printf("%s "fmt"\tcc = %u\n", mnm, src, cc); \ } while (0) /* Convenience macros */ #define cfebr(value,round) \ - convert_to_int("cfebr",float,int32_t,round,value,"%f") + convert_to_int("cfebr",CFEBR,float,int32_t,round,value,"%f") #define cfdbr(value,round) \ - convert_to_int("cfdbr",double,int32_t,round,value,"%f") + convert_to_int("cfdbr",CFDBR,double,int32_t,round,value,"%f") #define cfxbr(value,round) \ - convert_to_int("cfxbr",long double,int32_t,round,value,"%Lf") + convert_to_int("cfxbr",CFXBR,long double,int32_t,round,value,"%Lf") #define cgebr(value,round) \ - convert_to_int("cgebr",float,int64_t,round,value,"%f") + convert_to_int("cgebr",CGEBR,float,int64_t,round,value,"%f") #define cgdbr(value,round) \ - convert_to_int("cgdbr",double,int64_t,round,value,"%f") + convert_to_int("cgdbr",CGDBR,double,int64_t,round,value,"%f") #define cgxbr(value,round) \ - convert_to_int("cgxbr",long double,int64_t,round,value,"%Lf") + convert_to_int("cgxbr",CGXBR,long double,int64_t,round,value,"%Lf") #define clfebr(value,round) \ - convert_to_logical("clfebr",float,uint32_t,round,value,"%f") + convert_to_logical("clfebr",CLFEBR,float,uint32_t,round,value,"%f") #define clfdbr(value,round) \ - convert_to_logical("clfdbr",double,uint32_t,round,value,"%f") + convert_to_logical("clfdbr",CLFDBR,double,uint32_t,round,value,"%f") #define clfxbr(value,round) \ - convert_to_logical("clfxbr",long double,uint32_t,round,value,"%Lf") + convert_to_logical("clfxbr",CLFXBR,long double,uint32_t,round,value,"%Lf") #define clgebr(value,round) \ - convert_to_logical("clgebr",float,uint64_t,round,value,"%f") + convert_to_logical("clgebr",CLGEBR,float,uint64_t,round,value,"%f") #define clgdbr(value,round) \ - convert_to_logical("clgdbr",double,uint64_t,round,value,"%f") + convert_to_logical("clgdbr",CLGDBR,double,uint64_t,round,value,"%f") #define clgxbr(value,round) \ - convert_to_logical("clgxbr",long double,uint64_t,round,value,"%Lf") + convert_to_logical("clgxbr",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)); \ @@ -230,8 +237,6 @@ convert_to_int_fpc_tests(unsigned mode) cgxbr(values[j], M3_BFP_ROUND_PER_FPC); } -/* 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) { diff --git a/none/tests/s390x/bfp-convert.stdout.exp b/none/tests/s390x/bfp-convert.stdout.exp index 7c9d5a1e4..91f46e900 100644 --- a/none/tests/s390x/bfp-convert.stdout.exp +++ b/none/tests/s390x/bfp-convert.stdout.exp @@ -3,741 +3,411 @@ Rounding as 'per FPC' ...setting FPC rounding mode to [-> near] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 FPC rounding mode to [-> zero] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 FPC rounding mode to [-> +inf] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 FPC rounding mode to [-> -inf] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 FPC rounding mode to [-> prepare-short] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 Rounding as 'per M3' ...setting M3 rounding mode to [-> nearest with ties away from 0] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 [-> prepare-short] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 [-> nearest with ties to even] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 [-> zero] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 [-> +inf] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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 [-> -inf] ......f32 -> i32 cfebr 0.000000 cc = 0 -cfebra 0.000000 cc = 0 cfebr -0.250000 cc = 1 -cfebra -0.250000 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 -0.250000 cc = 1 -cgebra -0.250000 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 -0.250000 cc = 1 -cfdbra -0.250000 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 -0.250000 cc = 1 -cgdbra -0.250000 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 -0.250000 cc = 1 -cfxbra -0.250000 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 -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'