diff options
author | Martin Liska <mliska@suse.cz> | 2022-09-12 10:43:19 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-09-12 10:43:19 +0200 |
commit | fdb97cd0b7d15efa39ba79dca44be93debb0ef12 (patch) | |
tree | 65a6d95503fb9897bda29c72a629e57bb773d1c1 /libgfortran | |
parent | 918bc838c2803f08e4d7ccd179396d48cb8ec804 (diff) | |
parent | 643ae816f17745a77b62188b6bf169211609a59b (diff) | |
download | gcc-fdb97cd0b7d15efa39ba79dca44be93debb0ef12.zip gcc-fdb97cd0b7d15efa39ba79dca44be93debb0ef12.tar.gz gcc-fdb97cd0b7d15efa39ba79dca44be93debb0ef12.tar.bz2 |
Merge branch 'master' into devel/sphinx
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 5 | ||||
-rw-r--r-- | libgfortran/ieee/ieee_arithmetic.F90 | 66 |
2 files changed, 71 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index ad1e03c..51c9f5c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2022-09-10 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/95644 + * ieee/ieee_arithmetic.F90: Add IEEE_SIGNBIT and IEEE_FMA. + 2022-08-26 Jakub Jelinek <jakub@redhat.com> PR fortran/106579 diff --git a/libgfortran/ieee/ieee_arithmetic.F90 b/libgfortran/ieee/ieee_arithmetic.F90 index c8ef3e2..4e01aa5 100644 --- a/libgfortran/ieee/ieee_arithmetic.F90 +++ b/libgfortran/ieee/ieee_arithmetic.F90 @@ -343,6 +343,39 @@ UNORDERED_MACRO(4,4) end interface public :: IEEE_UNORDERED + ! IEEE_FMA + + interface + elemental real(kind=4) function _gfortran_ieee_fma_4 (A, B, C) + real(kind=4), intent(in) :: A, B, C + end function + elemental real(kind=8) function _gfortran_ieee_fma_8 (A, B, C) + real(kind=8), intent(in) :: A, B, C + end function +#ifdef HAVE_GFC_REAL_10 + elemental real(kind=10) function _gfortran_ieee_fma_10 (A, B, C) + real(kind=10), intent(in) :: A, B, C + end function +#endif +#ifdef HAVE_GFC_REAL_16 + elemental real(kind=16) function _gfortran_ieee_fma_16 (A, B, C) + real(kind=16), intent(in) :: A, B, C + end function +#endif + end interface + + interface IEEE_FMA + procedure & +#ifdef HAVE_GFC_REAL_16 + _gfortran_ieee_fma_16, & +#endif +#ifdef HAVE_GFC_REAL_10 + _gfortran_ieee_fma_10, & +#endif + _gfortran_ieee_fma_8, _gfortran_ieee_fma_4 + end interface + public :: IEEE_FMA + ! IEEE_LOGB interface @@ -702,6 +735,39 @@ REM_MACRO(4,4,4) end interface public :: IEEE_SCALB + ! IEEE_SIGNBIT + + interface + elemental logical function _gfortran_ieee_signbit_4 (X) + real(kind=4), intent(in) :: X + end function + elemental logical function _gfortran_ieee_signbit_8 (X) + real(kind=8), intent(in) :: X + end function +#ifdef HAVE_GFC_REAL_10 + elemental logical function _gfortran_ieee_signbit_10 (X) + real(kind=10), intent(in) :: X + end function +#endif +#ifdef HAVE_GFC_REAL_16 + elemental logical function _gfortran_ieee_signbit_16 (X) + real(kind=16), intent(in) :: X + end function +#endif + end interface + + interface IEEE_SIGNBIT + procedure & +#ifdef HAVE_GFC_REAL_16 + _gfortran_ieee_signbit_16, & +#endif +#ifdef HAVE_GFC_REAL_10 + _gfortran_ieee_signbit_10, & +#endif + _gfortran_ieee_signbit_8, _gfortran_ieee_signbit_4 + end interface + public :: IEEE_SIGNBIT + ! IEEE_VALUE interface IEEE_VALUE |