diff mbox series

[7/9] tests/tcg/s390x: Add long-double.c

Message ID 20221021073006.2398819-8-richard.henderson@linaro.org
State Superseded
Headers show
Series target/s390x: Use Int128 for float128 and retxl | expand

Commit Message

Richard Henderson Oct. 21, 2022, 7:30 a.m. UTC
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tests/tcg/s390x/long-double.c   | 24 ++++++++++++++++++++++++
 tests/tcg/s390x/Makefile.target |  1 +
 2 files changed, 25 insertions(+)
 create mode 100644 tests/tcg/s390x/long-double.c

Comments

Philippe Mathieu-Daudé Oct. 24, 2022, 1:19 p.m. UTC | #1
On 21/10/22 09:30, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   tests/tcg/s390x/long-double.c   | 24 ++++++++++++++++++++++++
>   tests/tcg/s390x/Makefile.target |  1 +
>   2 files changed, 25 insertions(+)
>   create mode 100644 tests/tcg/s390x/long-double.c

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Ilya Leoshkevich Oct. 27, 2022, 11:04 a.m. UTC | #2
On Fri, Oct 21, 2022 at 05:30:04PM +1000, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  tests/tcg/s390x/long-double.c   | 24 ++++++++++++++++++++++++
>  tests/tcg/s390x/Makefile.target |  1 +
>  2 files changed, 25 insertions(+)
>  create mode 100644 tests/tcg/s390x/long-double.c

It might be better to do this in asm in order to be sure that a
compiler doesn't perform any magic. But at least as of today gcc
generates all the "interesting" instructions from this code.

Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
diff mbox series

Patch

diff --git a/tests/tcg/s390x/long-double.c b/tests/tcg/s390x/long-double.c
new file mode 100644
index 0000000000..757a6262fd
--- /dev/null
+++ b/tests/tcg/s390x/long-double.c
@@ -0,0 +1,24 @@ 
+/*
+ * Perform some basic arithmetic with long double, as a sanity check.
+ * With small integral numbers, we can cross-check with integers.
+ */
+
+#include <assert.h>
+
+int main()
+{
+    int i, j;
+
+    for (i = 1; i < 5; i++) {
+        for (j = 1; j < 5; j++) {
+            long double la = (long double)i + j;
+            long double lm = (long double)i * j;
+            long double ls = (long double)i - j;
+
+            assert(la == i + j);
+            assert(lm == i * j);
+            assert(ls == i - j);
+        }
+    }
+    return 0;
+}
diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.target
index c830313e67..627668e1ce 100644
--- a/tests/tcg/s390x/Makefile.target
+++ b/tests/tcg/s390x/Makefile.target
@@ -17,6 +17,7 @@  TESTS+=trap
 TESTS+=signals-s390x
 TESTS+=branch-relative-long
 TESTS+=noexec
+TESTS+=long-double
 
 Z14_TESTS=vfminmax
 vfminmax: LDFLAGS+=-lm