https://sourceware.org/cgit/valgrind/commit/?id=78f1569e2235796256742d7c75763034677065af
commit 78f1569e2235796256742d7c75763034677065af
Author: Florian Krohm <fl...@ei...>
Date: Sun Sep 21 21:03:55 2025 +0000
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
Diff:
---
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(-)
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 <stdio.h>
+
+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
|