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