From: Florian Krohm Date: Wed, 24 Sep 2025 20:27:30 +0000 (+0000) Subject: s390: Reorg and extend BFP "convert to/from fixed/logical" testcases X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=18c5454874d9193fb422832523925406f1d32b80;p=thirdparty%2Fvalgrind.git s390: Reorg and extend BFP "convert to/from fixed/logical" testcases 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 --- diff --git a/.gitignore b/.gitignore index de362ecc28..b059789b86 100644 --- a/.gitignore +++ b/.gitignore @@ -2182,18 +2182,17 @@ /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 @@ -2218,7 +2217,6 @@ /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 diff --git a/none/tests/s390x/Makefile.am b/none/tests/s390x/Makefile.am index 7d2d1f8c48..afa61c94b8 100644 --- a/none/tests/s390x/Makefile.am +++ b/none/tests/s390x/Makefile.am @@ -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 index 0000000000..1d0502e41f --- /dev/null +++ b/none/tests/s390x/bfp-convert.c @@ -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 +#include +#include +#include +#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/fpconv.stderr.exp b/none/tests/s390x/bfp-convert.stderr.exp similarity index 100% rename from none/tests/s390x/fpconv.stderr.exp rename to none/tests/s390x/bfp-convert.stderr.exp diff --git a/none/tests/s390x/bfp-convert.stdout.exp b/none/tests/s390x/bfp-convert.stdout.exp new file mode 100644 index 0000000000..c5a17ebd43 --- /dev/null +++ b/none/tests/s390x/bfp-convert.stdout.exp @@ -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 index 0000000000..11cd11c527 --- /dev/null +++ b/none/tests/s390x/bfp-convert.vgtest @@ -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 index 02b5128e7c..0000000000 --- a/none/tests/s390x/fpconv.c +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include -#include -#include - -/* 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 index 779655e13c..0000000000 --- a/none/tests/s390x/fpconv.stdout.exp +++ /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 index e2e3c2872a..0000000000 --- a/none/tests/s390x/fpconv.vgtest +++ /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 index 62b6bb7f24..0000000000 --- a/none/tests/s390x/fpext.c +++ /dev/null @@ -1,149 +0,0 @@ -#include -#include -#include -#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 index 139597f9cb..0000000000 --- a/none/tests/s390x/fpext.stderr.exp +++ /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 index 48fbda0c45..0000000000 --- a/none/tests/s390x/fpext.stdout.exp +++ /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 index 948bad9de1..0000000000 --- a/none/tests/s390x/fpext.vgtest +++ /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 index 0000000000..9de7a8e575 --- /dev/null +++ b/none/tests/s390x/fpext_fail.c @@ -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; +} diff --git a/none/tests/s390x/fpext_fail.vgtest b/none/tests/s390x/fpext_fail.vgtest index 970cbedff7..48e8c5984e 100644 --- a/none/tests/s390x/fpext_fail.vgtest +++ b/none/tests/s390x/fpext_fail.vgtest @@ -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 index bd53db686c..0000000000 --- a/none/tests/s390x/rounding-3.c +++ /dev/null @@ -1,113 +0,0 @@ -#include -#include -#include -#include -#include -#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 index 139597f9cb..0000000000 --- a/none/tests/s390x/rounding-3.stderr.exp +++ /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 index e613af94d2..0000000000 --- a/none/tests/s390x/rounding-3.stdout.exp +++ /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 index 8168710546..0000000000 --- a/none/tests/s390x/rounding-3.vgtest +++ /dev/null @@ -1 +0,0 @@ -prog: rounding-3