From e9b424881a4f85284e56d8b561c54ff57a7c1c9b Mon Sep 17 00:00:00 2001 From: Stefan Liebler Date: Wed, 31 Aug 2016 14:54:55 +0200 Subject: S390: Do not set FE_INEXACT with feraiseexcept (FE_OWERFLOW|FE_UNDERFLOW). On s390 feraiseexcept (FE_OVERFLOW|FE_UNDERFLOW) sets FE_INEXACT, too. This patch uses z196 zarch load rounded instruction which can suppress FE_INEXACT exception if gcc has z196 support in used configuration. Otherwise FE_INEXACT flag is set as before. The gcc support is tested in a new configure-check. A comment in fsetexcptflg.c is corrected as new exceptions are not executed with the next floating-point instruction if fpc is set with _FPU_SETCW macro. It seems the comment was copied e.g. from sysdeps/x86_64/fpu/fsetexcptflg.c file. ChangeLog: * config.h.in (HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT): New undefine. * sysdeps/s390/configure.ac: Add test for z196 zarch support. * sysdeps/s390/configure: Regenerated. * sysdeps/s390/fpu/fraiseexcpt.c (__feraiseexcept): Use ledbra instruction for raising over-/underflow if z196 zarch is supported by default. * sysdeps/s390/fpu/fsetexcptflg.c (fesetexceptflag): Correct comment. --- config.h.in | 3 +++ 1 file changed, 3 insertions(+) (limited to 'config.h.in') diff --git a/config.h.in b/config.h.in index 856ef6a..8cd08b0 100644 --- a/config.h.in +++ b/config.h.in @@ -70,6 +70,9 @@ /* Define if assembler supports AVX512DQ. */ #undef HAVE_AVX512DQ_ASM_SUPPORT +/* Define if assembler supports z196 zarch instructions as default on S390. */ +#undef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT + /* Define if assembler supports vector instructions on S390. */ #undef HAVE_S390_VX_ASM_SUPPORT -- cgit v1.1