]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
s390: New testcase none/tests/s390x/hfp
authorFlorian Krohm <flo2030@eich-krohm.de>
Sun, 21 Sep 2025 21:03:55 +0000 (21:03 +0000)
committerFlorian Krohm <flo2030@eich-krohm.de>
Sun, 21 Sep 2025 21:03:55 +0000 (21:03 +0000)
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
none/tests/s390x/bfp-2.c
none/tests/s390x/bfp-2.stdout.exp
none/tests/s390x/hfp.c [new file with mode: 0644]
none/tests/s390x/hfp.stderr.exp [new file with mode: 0644]
none/tests/s390x/hfp.stdout.exp [new file with mode: 0644]
none/tests/s390x/hfp.vgtest [new file with mode: 0644]

index 98ef178e7a499ba4d780ee8ede7c2bb012928956..c1909da396115041e75d47f0d8b752d714099324 100644 (file)
@@ -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 \
index 73349eddd228d07c16ac7dd87fc160cbcb378481..b8109ba8899bfc382a11be7cbf576d083c2de5e2 100644 (file)
@@ -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;
 }
index b1bc484c5d818e8cda098935af1a30fc2ac1a45b..074180a279d1dbfd0a389d812fd687c377150bdf 100644 (file)
@@ -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 (file)
index 0000000..73f70c3
--- /dev/null
@@ -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 (file)
index 0000000..139597f
--- /dev/null
@@ -0,0 +1,2 @@
+
+
diff --git a/none/tests/s390x/hfp.stdout.exp b/none/tests/s390x/hfp.stdout.exp
new file mode 100644 (file)
index 0000000..2e3e77b
--- /dev/null
@@ -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 (file)
index 0000000..296bd09
--- /dev/null
@@ -0,0 +1 @@
+prog: hfp