From 78f1569e2235796256742d7c75763034677065af Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Sun, 21 Sep 2025 21:03:55 +0000 Subject: [PATCH] s390: New testcase none/tests/s390x/hfp Containing the very few needed hexadecimal floating point insns. Carved out of none/tests/s390x/bfp-2 Part of fixing https://bugs.kde.org/show_bug.cgi?id=509572 --- none/tests/s390x/Makefile.am | 2 +- none/tests/s390x/bfp-2.c | 26 --------------------- none/tests/s390x/bfp-2.stdout.exp | 4 ---- none/tests/s390x/hfp.c | 39 +++++++++++++++++++++++++++++++ none/tests/s390x/hfp.stderr.exp | 2 ++ none/tests/s390x/hfp.stdout.exp | 4 ++++ none/tests/s390x/hfp.vgtest | 1 + 7 files changed, 47 insertions(+), 31 deletions(-) create mode 100644 none/tests/s390x/hfp.c create mode 100644 none/tests/s390x/hfp.stderr.exp create mode 100644 none/tests/s390x/hfp.stdout.exp create mode 100644 none/tests/s390x/hfp.vgtest diff --git a/none/tests/s390x/Makefile.am b/none/tests/s390x/Makefile.am index 98ef178e7a..c1909da396 100644 --- a/none/tests/s390x/Makefile.am +++ b/none/tests/s390x/Makefile.am @@ -22,7 +22,7 @@ INSN_TESTS = clc clcle cvb cvd icm lpr tcxb 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 fixbr + fpext fixbr hfp check_PROGRAMS = $(INSN_TESTS) \ allexec \ diff --git a/none/tests/s390x/bfp-2.c b/none/tests/s390x/bfp-2.c index 73349eddd2..b8109ba889 100644 --- a/none/tests/s390x/bfp-2.c +++ b/none/tests/s390x/bfp-2.c @@ -71,26 +71,6 @@ void lcdbr(double in) printf("lcdbr %f -> %f\n", in, out); } -void lder(double prev, float in) -{ - unsigned long out; - - __asm__ volatile("lder %[prev],%[in]\n\t" - "std %[prev],%[out]" : - [out]"=R"(out) : [prev]"f"(prev), [in]"f"(in)); - printf("lder %f -> %lx\n", in, out); -} - -void lde(double prev, float in) -{ - unsigned long out; - - __asm__ volatile("lde %[prev],%[in]\n\t" - "std %[prev],%[out]" : - [out]"=R"(out) : [prev]"f"(prev), [in]"R"(in)); - printf("lde %f -> %lx\n", in, out); -} - int main(void) { // square root @@ -118,11 +98,5 @@ int main(void) lcdbr(-17.5); // 8 byte values lcdbr(234.5); // 8 byte values - // load lengthened - lder(0.2, 321.5f); - lder(0.9, -8388607.f); - lde(0.2, -321.5f); - lde(0.9, 8388607.f); - return 0; } diff --git a/none/tests/s390x/bfp-2.stdout.exp b/none/tests/s390x/bfp-2.stdout.exp index b1bc484c5d..074180a279 100644 --- a/none/tests/s390x/bfp-2.stdout.exp +++ b/none/tests/s390x/bfp-2.stdout.exp @@ -12,7 +12,3 @@ lcebr -23.500000 -> 23.500000 lcebr 123.500000 -> -123.500000 lcdbr -17.500000 -> 17.500000 lcdbr 234.500000 -> -234.500000 -lder 321.500000 -> 43a0c00000000000 -lder -8388607.000000 -> cafffffe00000000 -lde -321.500000 -> c3a0c00000000000 -lde 8388607.000000 -> 4afffffe00000000 diff --git a/none/tests/s390x/hfp.c b/none/tests/s390x/hfp.c new file mode 100644 index 0000000000..73f70c37c7 --- /dev/null +++ b/none/tests/s390x/hfp.c @@ -0,0 +1,39 @@ +/* Hexadecimal Floating Point insns + + HFP is generally not supported with very few exceptions. + + Carved out of bfp-2.c with no modifications. */ + +#include + +void lder(double prev, float in) +{ + unsigned long out; + + __asm__ volatile("lder %[prev],%[in]\n\t" + "std %[prev],%[out]" : + [out]"=R"(out) : [prev]"f"(prev), [in]"f"(in)); + printf("lder %f -> %lx\n", in, out); +} + +void lde(double prev, float in) +{ + unsigned long out; + + __asm__ volatile("lde %[prev],%[in]\n\t" + "std %[prev],%[out]" : + [out]"=R"(out) : [prev]"f"(prev), [in]"R"(in)); + printf("lde %f -> %lx\n", in, out); +} + +int main(void) +{ + // load lengthened + lder(0.2, 321.5f); + lder(0.9, -8388607.f); + lde(0.2, -321.5f); + lde(0.9, 8388607.f); + + return 0; +} + diff --git a/none/tests/s390x/hfp.stderr.exp b/none/tests/s390x/hfp.stderr.exp new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/none/tests/s390x/hfp.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/none/tests/s390x/hfp.stdout.exp b/none/tests/s390x/hfp.stdout.exp new file mode 100644 index 0000000000..2e3e77bb7b --- /dev/null +++ b/none/tests/s390x/hfp.stdout.exp @@ -0,0 +1,4 @@ +lder 321.500000 -> 43a0c00000000000 +lder -8388607.000000 -> cafffffe00000000 +lde -321.500000 -> c3a0c00000000000 +lde 8388607.000000 -> 4afffffe00000000 diff --git a/none/tests/s390x/hfp.vgtest b/none/tests/s390x/hfp.vgtest new file mode 100644 index 0000000000..296bd099a9 --- /dev/null +++ b/none/tests/s390x/hfp.vgtest @@ -0,0 +1 @@ +prog: hfp -- 2.47.3