public inbox for fortran@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@redhat.com>
To: Thomas Koenig <tkoenig@netcologne.de>
Cc: Michael Meissner <meissner@linux.ibm.com>,
	Bill Schmidt <wschmidt@linux.ibm.com>,
	"fortran@gcc.gnu.org" <fortran@gcc.gnu.org>,
	Segher Boessenkool <segher@kernel.crashing.org>,
	Peter Bergner <bergner@linux.ibm.com>,
	David Edelsohn <dje.gcc@gmail.com>
Subject: Re: [RFC] User-visible changes for powerpc64-le-linux ABI changes
Date: Fri, 19 Nov 2021 15:19:34 +0100	[thread overview]
Message-ID: <20211119141934.GP2646553@tucnak> (raw)
In-Reply-To: <662a32fd-0daf-cb92-8e7d-e6858ec89994@netcologne.de>

On Tue, Nov 16, 2021 at 08:51:03AM +0100, Thomas Koenig wrote:
> If you could start working on the points above, that would be great.

Just small completely untested step, which IMHO should ensure that
on powerpc64le-*linux* (unless --with-long-double-64 configured)
we build libgfortran by default with -mabi=ibmlongdouble (so that
code using GFC_REAL_16 can use long double etc. and the kind 16 in
filenames stands for IBM long double), but the *_r17.F90 and *_c17.F90
files are built with -mabi=ieeelongdouble (for Fortran we need to choose
either one or another one but not both).  *_r17*.c and *_c17*.c can be
compiled with -mabi=ibmlongdouble because in C we can use __float128
(or __ieee128) or KF/KC mode to make it work with both kind 16 and "17"
in the same TU.
I bet the next step will be try to generate the generated m4 files
in maintainer mode and start fixing what needs to be fixed.
E.g. make sure that for the REAL_17/COMPLEX_17 cases we actually emit the
libquadmath functions or __*ieee128 functions depending on whether glibc
has support or not when using libm functions, I think there are some sources
that read kind from function descriptors and that would be probably 16
rather than 17 even for the IEEE long double, etc.
But that is as far as I can spend time on this right now.

--- libgfortran/configure.ac.jj	2021-09-23 10:07:16.011181551 +0200
+++ libgfortran/configure.ac	2021-11-19 15:07:29.505962930 +0100
@@ -145,6 +145,7 @@ AC_SUBST(CFLAGS)
 AM_PROG_CC_C_O
 
 # Add -Wall -fno-repack-arrays -fno-underscoring if we are using GCC.
+have_real_17=no
 if test "x$GCC" = "xyes"; then
   AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
   ## We like to use C11 and C99 routines when available.  This makes
@@ -154,8 +155,24 @@ if test "x$GCC" = "xyes"; then
   ## Compile the following tests with the same system header contents
   ## that we'll encounter when compiling our own source files.
   CFLAGS="-std=gnu11 $CFLAGS"
-fi
 
+  case x$target in
+    powerpc64le*-linux*)
+      AC_PREPROC_IFELSE(
+        [AC_LANG_PROGRAM([[#if __SIZEOF_LONG_DOUBLE__ != 16
+			   #error long double is double
+			   #endif]],
+                         [[(void) 0;]])],
+        [AM_FCFLAGS="$AM_FCFLAGS -mabi=ibmlongdouble";
+	 AM_CFLAGS="$AM_CFLAGS -mabi=ibmlongdouble";
+	 CFLAGS="$CFLAGS -mabi=ibmlongdouble";
+	 have_real_17=yes])
+      ;;
+    *)
+      ;;
+  esac
+fi
+AM_CONDITIONAL([HAVE_REAL_17], [test "x$have_real_17" != xno])
 # Add CET specific flags if CET is enabled
 GCC_CET_FLAGS(CET_FLAGS)
 AM_FCFLAGS="$AM_FCFLAGS $CET_FLAGS"
@@ -665,10 +682,10 @@ LIBGFOR_CHECK_CRLF
 # Check whether we support AVX extensions
 LIBGFOR_CHECK_AVX
 
-# Check wether we support AVX2 extensions
+# Check whether we support AVX2 extensions
 LIBGFOR_CHECK_AVX2
 
-# Check wether we support AVX512f extensions
+# Check whether we support AVX512f extensions
 LIBGFOR_CHECK_AVX512F
 
 # Check for FMA3 extensions
--- libgfortran/kinds-override.h.jj	2021-01-04 10:25:54.764053433 +0100
+++ libgfortran/kinds-override.h	2021-11-19 14:28:05.799401414 +0100
@@ -44,3 +44,17 @@ see the files COPYING3 and COPYING.RUNTI
 # endif
 #endif
 
+#if defined(__powerpc64__) \
+    && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ \
+    && __SIZEOF_LONG_DOUBLE__ == 16 \
+    && defined(GFC_REAL_16_IS_LONG_DOUBLE)
+typedef __float128 GFC_REAL_17;
+typedef _Complex float __attribute__((mode(KC))) GFC_COMPLEX_17;
+#define HAVE_GFC_REAL_17
+#define HAVE_GFC_COMPLEX_17
+#define GFC_REAL_17_HUGE 1.18973149535723176508575932662800702e4932q
+#define GFC_REAL_17_LITERAL_SUFFIX q
+#define GFC_REAL_17_LITERAL(X) (X ## q)
+#define GFC_REAL_17_DIGITS 113
+#define GFC_REAL_17_RADIX 2
+#endif
--- libgfortran/Makefile.am.jj	2021-09-08 09:55:29.002718817 +0200
+++ libgfortran/Makefile.am	2021-11-19 15:08:01.634506758 +0100
@@ -241,7 +241,8 @@ i_bessel_c= \
 $(srcdir)/generated/bessel_r4.c \
 $(srcdir)/generated/bessel_r8.c \
 $(srcdir)/generated/bessel_r10.c \
-$(srcdir)/generated/bessel_r16.c
+$(srcdir)/generated/bessel_r16.c \
+$(srcdir)/generated/bessel_r17.c
 
 i_count_c= \
 $(srcdir)/generated/count_1_l.c \
@@ -281,10 +282,12 @@ $(srcdir)/generated/findloc0_r4.c \
 $(srcdir)/generated/findloc0_r8.c \
 $(srcdir)/generated/findloc0_r10.c \
 $(srcdir)/generated/findloc0_r16.c \
+$(srcdir)/generated/findloc0_r17.c \
 $(srcdir)/generated/findloc0_c4.c \
 $(srcdir)/generated/findloc0_c8.c \
 $(srcdir)/generated/findloc0_c10.c \
-$(srcdir)/generated/findloc0_c16.c
+$(srcdir)/generated/findloc0_c16.c \
+$(srcdir)/generated/findloc0_c17.c
 
 i_findloc0s_c= \
 $(srcdir)/generated/findloc0_s1.c \
@@ -300,10 +303,12 @@ $(srcdir)/generated/findloc1_r4.c \
 $(srcdir)/generated/findloc1_r8.c \
 $(srcdir)/generated/findloc1_r10.c \
 $(srcdir)/generated/findloc1_r16.c \
+$(srcdir)/generated/findloc1_r17.c \
 $(srcdir)/generated/findloc1_c4.c \
 $(srcdir)/generated/findloc1_c8.c \
 $(srcdir)/generated/findloc1_c10.c \
-$(srcdir)/generated/findloc1_c16.c
+$(srcdir)/generated/findloc1_c16.c \
+$(srcdir)/generated/findloc1_c17.c
 
 i_findloc1s_c= \
 $(srcdir)/generated/findloc1_s1.c \
@@ -340,7 +345,10 @@ $(srcdir)/generated/maxloc0_8_r10.c \
 $(srcdir)/generated/maxloc0_16_r10.c \
 $(srcdir)/generated/maxloc0_4_r16.c \
 $(srcdir)/generated/maxloc0_8_r16.c \
-$(srcdir)/generated/maxloc0_16_r16.c
+$(srcdir)/generated/maxloc0_16_r16.c \
+$(srcdir)/generated/maxloc0_4_r17.c \
+$(srcdir)/generated/maxloc0_8_r17.c \
+$(srcdir)/generated/maxloc0_16_r17.c
 
 i_maxloc0s_c = \
 $(srcdir)/generated/maxloc0_4_s1.c \
@@ -375,9 +383,12 @@ $(srcdir)/generated/maxloc1_16_r8.c \
 $(srcdir)/generated/maxloc1_4_r10.c \
 $(srcdir)/generated/maxloc1_8_r10.c \
 $(srcdir)/generated/maxloc1_16_r10.c \
-$(srcdir)/generated/maxloc1_4_r16.c \
+$(srcdir)/generated/maxloc1_4_r17.c \
 $(srcdir)/generated/maxloc1_8_r16.c \
-$(srcdir)/generated/maxloc1_16_r16.c
+$(srcdir)/generated/maxloc1_16_r16.c \
+$(srcdir)/generated/maxloc1_4_r17.c \
+$(srcdir)/generated/maxloc1_8_r17.c \
+$(srcdir)/generated/maxloc1_16_r17.c
 
 i_maxloc1s_c= \
 $(srcdir)/generated/maxloc1_4_s1.c \
@@ -404,7 +415,8 @@ $(srcdir)/generated/maxval_i16.c \
 $(srcdir)/generated/maxval_r4.c \
 $(srcdir)/generated/maxval_r8.c \
 $(srcdir)/generated/maxval_r10.c \
-$(srcdir)/generated/maxval_r16.c
+$(srcdir)/generated/maxval_r16.c \
+$(srcdir)/generated/maxval_r17.c
 
 i_maxval0s_c=\
 $(srcdir)/generated/maxval0_s1.c \
@@ -441,7 +453,10 @@ $(srcdir)/generated/minloc0_8_r10.c \
 $(srcdir)/generated/minloc0_16_r10.c \
 $(srcdir)/generated/minloc0_4_r16.c \
 $(srcdir)/generated/minloc0_8_r16.c \
-$(srcdir)/generated/minloc0_16_r16.c
+$(srcdir)/generated/minloc0_16_r16.c \
+$(srcdir)/generated/minloc0_4_r17.c \
+$(srcdir)/generated/minloc0_8_r17.c \
+$(srcdir)/generated/minloc0_16_r17.c
 
 i_minloc0s_c = \
 $(srcdir)/generated/minloc0_4_s1.c \
@@ -478,7 +493,10 @@ $(srcdir)/generated/minloc1_8_r10.c \
 $(srcdir)/generated/minloc1_16_r10.c \
 $(srcdir)/generated/minloc1_4_r16.c \
 $(srcdir)/generated/minloc1_8_r16.c \
-$(srcdir)/generated/minloc1_16_r16.c
+$(srcdir)/generated/minloc1_16_r16.c \
+$(srcdir)/generated/minloc1_4_r17.c \
+$(srcdir)/generated/minloc1_8_r17.c \
+$(srcdir)/generated/minloc1_16_r17.c
 
 i_minloc1s_c= \
 $(srcdir)/generated/minloc1_4_s1.c \
@@ -505,7 +523,8 @@ $(srcdir)/generated/minval_i16.c \
 $(srcdir)/generated/minval_r4.c \
 $(srcdir)/generated/minval_r8.c \
 $(srcdir)/generated/minval_r10.c \
-$(srcdir)/generated/minval_r16.c
+$(srcdir)/generated/minval_r16.c \
+$(srcdir)/generated/minval_r17.c
 
 i_minval0s_c=\
 $(srcdir)/generated/minval0_s1.c \
@@ -519,7 +538,8 @@ i_norm2_c= \
 $(srcdir)/generated/norm2_r4.c \
 $(srcdir)/generated/norm2_r8.c \
 $(srcdir)/generated/norm2_r10.c \
-$(srcdir)/generated/norm2_r16.c
+$(srcdir)/generated/norm2_r16.c \
+$(srcdir)/generated/norm2_r17.c
 
 i_parity_c = \
 $(srcdir)/generated/parity_l1.c \
@@ -538,10 +558,12 @@ $(srcdir)/generated/sum_r4.c \
 $(srcdir)/generated/sum_r8.c \
 $(srcdir)/generated/sum_r10.c \
 $(srcdir)/generated/sum_r16.c \
+$(srcdir)/generated/sum_r17.c \
 $(srcdir)/generated/sum_c4.c \
 $(srcdir)/generated/sum_c8.c \
 $(srcdir)/generated/sum_c10.c \
-$(srcdir)/generated/sum_c16.c
+$(srcdir)/generated/sum_c16.c \
+$(srcdir)/generated/sum_c17.c
 
 i_product_c= \
 $(srcdir)/generated/product_i1.c \
@@ -553,10 +575,12 @@ $(srcdir)/generated/product_r4.c \
 $(srcdir)/generated/product_r8.c \
 $(srcdir)/generated/product_r10.c \
 $(srcdir)/generated/product_r16.c \
+$(srcdir)/generated/product_r17.c \
 $(srcdir)/generated/product_c4.c \
 $(srcdir)/generated/product_c8.c \
 $(srcdir)/generated/product_c10.c \
-$(srcdir)/generated/product_c16.c
+$(srcdir)/generated/product_c16.c \
+$(srcdir)/generated/product_c17.c
 
 i_matmul_c= \
 $(srcdir)/generated/matmul_i1.c \
@@ -568,10 +592,12 @@ $(srcdir)/generated/matmul_r4.c \
 $(srcdir)/generated/matmul_r8.c \
 $(srcdir)/generated/matmul_r10.c \
 $(srcdir)/generated/matmul_r16.c \
+$(srcdir)/generated/matmul_r17.c \
 $(srcdir)/generated/matmul_c4.c \
 $(srcdir)/generated/matmul_c8.c \
 $(srcdir)/generated/matmul_c10.c \
-$(srcdir)/generated/matmul_c16.c
+$(srcdir)/generated/matmul_c16.c \
+$(srcdir)/generated/matmul_c17.c
 
 i_matmulavx128_c= \
 $(srcdir)/generated/matmulavx128_i1.c \
@@ -583,10 +609,12 @@ $(srcdir)/generated/matmulavx128_r4.c \
 $(srcdir)/generated/matmulavx128_r8.c \
 $(srcdir)/generated/matmulavx128_r10.c \
 $(srcdir)/generated/matmulavx128_r16.c \
+$(srcdir)/generated/matmulavx128_r17.c \
 $(srcdir)/generated/matmulavx128_c4.c \
 $(srcdir)/generated/matmulavx128_c8.c \
 $(srcdir)/generated/matmulavx128_c10.c \
-$(srcdir)/generated/matmulavx128_c16.c
+$(srcdir)/generated/matmulavx128_c16.c \
+$(srcdir)/generated/matmulavx128_c17.c;
 
 i_matmull_c= \
 $(srcdir)/generated/matmul_l4.c \
@@ -608,10 +636,12 @@ $(srcdir)/generated/reshape_r4.c \
 $(srcdir)/generated/reshape_r8.c \
 $(srcdir)/generated/reshape_r10.c \
 $(srcdir)/generated/reshape_r16.c \
+$(srcdir)/generated/reshape_r17.c \
 $(srcdir)/generated/reshape_c4.c \
 $(srcdir)/generated/reshape_c8.c \
 $(srcdir)/generated/reshape_c10.c \
-$(srcdir)/generated/reshape_c16.c
+$(srcdir)/generated/reshape_c16.c \
+$(srcdir)/generated/reshape_c17.c
 
 i_eoshift1_c= \
 $(srcdir)/generated/eoshift1_4.c \
@@ -633,10 +663,12 @@ $(srcdir)/generated/cshift0_r4.c \
 $(srcdir)/generated/cshift0_r8.c \
 $(srcdir)/generated/cshift0_r10.c \
 $(srcdir)/generated/cshift0_r16.c \
+$(srcdir)/generated/cshift0_r17.c \
 $(srcdir)/generated/cshift0_c4.c \
 $(srcdir)/generated/cshift0_c8.c \
 $(srcdir)/generated/cshift0_c10.c \
-$(srcdir)/generated/cshift0_c16.c
+$(srcdir)/generated/cshift0_c16.c \
+$(srcdir)/generated/cshift0_c17.c
 
 i_cshift1_c= \
 $(srcdir)/generated/cshift1_4.c \
@@ -653,10 +685,12 @@ $(srcdir)/generated/cshift1_4_r4.c \
 $(srcdir)/generated/cshift1_4_r8.c \
 $(srcdir)/generated/cshift1_4_r10.c \
 $(srcdir)/generated/cshift1_4_r16.c \
+$(srcdir)/generated/cshift1_4_r17.c \
 $(srcdir)/generated/cshift1_4_c4.c \
 $(srcdir)/generated/cshift1_4_c8.c \
 $(srcdir)/generated/cshift1_4_c10.c \
 $(srcdir)/generated/cshift1_4_c16.c \
+$(srcdir)/generated/cshift1_4_c17.c \
 $(srcdir)/generated/cshift1_8_i1.c \
 $(srcdir)/generated/cshift1_8_i2.c \
 $(srcdir)/generated/cshift1_8_i4.c \
@@ -666,10 +700,12 @@ $(srcdir)/generated/cshift1_8_r4.c \
 $(srcdir)/generated/cshift1_8_r8.c \
 $(srcdir)/generated/cshift1_8_r10.c \
 $(srcdir)/generated/cshift1_8_r16.c \
+$(srcdir)/generated/cshift1_8_r17.c \
 $(srcdir)/generated/cshift1_8_c4.c \
 $(srcdir)/generated/cshift1_8_c8.c \
 $(srcdir)/generated/cshift1_8_c10.c \
 $(srcdir)/generated/cshift1_8_c16.c \
+$(srcdir)/generated/cshift1_8_c17.c \
 $(srcdir)/generated/cshift1_16_i1.c \
 $(srcdir)/generated/cshift1_16_i2.c \
 $(srcdir)/generated/cshift1_16_i4.c \
@@ -679,10 +715,12 @@ $(srcdir)/generated/cshift1_16_r4.c \
 $(srcdir)/generated/cshift1_16_r8.c \
 $(srcdir)/generated/cshift1_16_r10.c \
 $(srcdir)/generated/cshift1_16_r16.c \
+$(srcdir)/generated/cshift1_16_r17.c \
 $(srcdir)/generated/cshift1_16_c4.c \
 $(srcdir)/generated/cshift1_16_c8.c \
 $(srcdir)/generated/cshift1_16_c10.c \
-$(srcdir)/generated/cshift1_16_c16.c
+$(srcdir)/generated/cshift1_16_c16.c \
+$(srcdir)/generated/cshift1_16_c17.c
 
 in_pack_c = \
 $(srcdir)/generated/in_pack_i1.c \
@@ -694,10 +732,12 @@ $(srcdir)/generated/in_pack_r4.c \
 $(srcdir)/generated/in_pack_r8.c \
 $(srcdir)/generated/in_pack_r10.c \
 $(srcdir)/generated/in_pack_r16.c \
+$(srcdir)/generated/in_pack_r17.c \
 $(srcdir)/generated/in_pack_c4.c \
 $(srcdir)/generated/in_pack_c8.c \
 $(srcdir)/generated/in_pack_c10.c \
-$(srcdir)/generated/in_pack_c16.c
+$(srcdir)/generated/in_pack_c16.c \
+$(srcdir)/generated/in_pack_c17.c
 
 in_unpack_c = \
 $(srcdir)/generated/in_unpack_i1.c \
@@ -709,20 +749,24 @@ $(srcdir)/generated/in_unpack_r4.c \
 $(srcdir)/generated/in_unpack_r8.c \
 $(srcdir)/generated/in_unpack_r10.c \
 $(srcdir)/generated/in_unpack_r16.c \
+$(srcdir)/generated/in_unpack_r17.c \
 $(srcdir)/generated/in_unpack_c4.c \
 $(srcdir)/generated/in_unpack_c8.c \
 $(srcdir)/generated/in_unpack_c10.c \
-$(srcdir)/generated/in_unpack_c16.c
+$(srcdir)/generated/in_unpack_c16.c \
+$(srcdir)/generated/in_unpack_c17.c
 
 i_pow_c = \
 $(srcdir)/generated/pow_i4_i4.c \
 $(srcdir)/generated/pow_i8_i4.c \
 $(srcdir)/generated/pow_i16_i4.c \
 $(srcdir)/generated/pow_r16_i4.c \
+$(srcdir)/generated/pow_r17_i4.c \
 $(srcdir)/generated/pow_c4_i4.c \
 $(srcdir)/generated/pow_c8_i4.c \
 $(srcdir)/generated/pow_c10_i4.c \
 $(srcdir)/generated/pow_c16_i4.c \
+$(srcdir)/generated/pow_c17_i4.c \
 $(srcdir)/generated/pow_i4_i8.c \
 $(srcdir)/generated/pow_i8_i8.c \
 $(srcdir)/generated/pow_i16_i8.c \
@@ -730,10 +774,12 @@ $(srcdir)/generated/pow_r4_i8.c \
 $(srcdir)/generated/pow_r8_i8.c \
 $(srcdir)/generated/pow_r10_i8.c \
 $(srcdir)/generated/pow_r16_i8.c \
+$(srcdir)/generated/pow_r17_i8.c \
 $(srcdir)/generated/pow_c4_i8.c \
 $(srcdir)/generated/pow_c8_i8.c \
 $(srcdir)/generated/pow_c10_i8.c \
 $(srcdir)/generated/pow_c16_i8.c \
+$(srcdir)/generated/pow_c17_i8.c \
 $(srcdir)/generated/pow_i4_i16.c \
 $(srcdir)/generated/pow_i8_i16.c \
 $(srcdir)/generated/pow_i16_i16.c \
@@ -741,10 +787,12 @@ $(srcdir)/generated/pow_r4_i16.c \
 $(srcdir)/generated/pow_r8_i16.c \
 $(srcdir)/generated/pow_r10_i16.c \
 $(srcdir)/generated/pow_r16_i16.c \
+$(srcdir)/generated/pow_r17_i16.c \
 $(srcdir)/generated/pow_c4_i16.c \
 $(srcdir)/generated/pow_c8_i16.c \
 $(srcdir)/generated/pow_c10_i16.c \
-$(srcdir)/generated/pow_c16_i16.c
+$(srcdir)/generated/pow_c16_i16.c \
+$(srcdir)/generated/pow_c17_i16.c
 
 i_pack_c = \
 $(srcdir)/generated/pack_i1.c \
@@ -756,10 +804,12 @@ $(srcdir)/generated/pack_r4.c \
 $(srcdir)/generated/pack_r8.c \
 $(srcdir)/generated/pack_r10.c \
 $(srcdir)/generated/pack_r16.c \
+$(srcdir)/generated/pack_r17.c \
 $(srcdir)/generated/pack_c4.c \
 $(srcdir)/generated/pack_c8.c \
 $(srcdir)/generated/pack_c10.c \
-$(srcdir)/generated/pack_c16.c
+$(srcdir)/generated/pack_c16.c \
+$(srcdir)/generated/pack_c17.c
 
 i_unpack_c = \
 $(srcdir)/generated/unpack_i1.c \
@@ -771,10 +821,12 @@ $(srcdir)/generated/unpack_r4.c \
 $(srcdir)/generated/unpack_r8.c \
 $(srcdir)/generated/unpack_r10.c \
 $(srcdir)/generated/unpack_r16.c \
+$(srcdir)/generated/unpack_r17.c \
 $(srcdir)/generated/unpack_c4.c \
 $(srcdir)/generated/unpack_c8.c \
 $(srcdir)/generated/unpack_c10.c \
-$(srcdir)/generated/unpack_c16.c
+$(srcdir)/generated/unpack_c16.c \
+$(srcdir)/generated/unpack_c17.c
 
 i_spread_c = \
 $(srcdir)/generated/spread_i1.c \
@@ -786,10 +838,12 @@ $(srcdir)/generated/spread_r4.c \
 $(srcdir)/generated/spread_r8.c \
 $(srcdir)/generated/spread_r10.c \
 $(srcdir)/generated/spread_r16.c \
+$(srcdir)/generated/spread_r17.c \
 $(srcdir)/generated/spread_c4.c \
 $(srcdir)/generated/spread_c8.c \
 $(srcdir)/generated/spread_c10.c \
-$(srcdir)/generated/spread_c16.c 
+$(srcdir)/generated/spread_c16.c \
+$(srcdir)/generated/spread_c17.c 
 
 i_isobinding_c = \
 $(srcdir)/runtime/ISO_Fortran_binding.c
@@ -830,6 +884,7 @@ $(srcdir)/generated/_abs_c4.F90 \
 $(srcdir)/generated/_abs_c8.F90 \
 $(srcdir)/generated/_abs_c10.F90 \
 $(srcdir)/generated/_abs_c16.F90 \
+$(srcdir)/generated/_abs_c17.F90 \
 $(srcdir)/generated/_abs_i4.F90 \
 $(srcdir)/generated/_abs_i8.F90 \
 $(srcdir)/generated/_abs_i16.F90 \
@@ -837,106 +892,132 @@ $(srcdir)/generated/_abs_r4.F90 \
 $(srcdir)/generated/_abs_r8.F90 \
 $(srcdir)/generated/_abs_r10.F90 \
 $(srcdir)/generated/_abs_r16.F90 \
+$(srcdir)/generated/_abs_r17.F90 \
 $(srcdir)/generated/_aimag_c4.F90 \
 $(srcdir)/generated/_aimag_c8.F90 \
 $(srcdir)/generated/_aimag_c10.F90 \
 $(srcdir)/generated/_aimag_c16.F90 \
+$(srcdir)/generated/_aimag_c17.F90 \
 $(srcdir)/generated/_exp_r4.F90 \
 $(srcdir)/generated/_exp_r8.F90 \
 $(srcdir)/generated/_exp_r10.F90 \
 $(srcdir)/generated/_exp_r16.F90 \
+$(srcdir)/generated/_exp_r17.F90 \
 $(srcdir)/generated/_exp_c4.F90 \
 $(srcdir)/generated/_exp_c8.F90 \
 $(srcdir)/generated/_exp_c10.F90 \
 $(srcdir)/generated/_exp_c16.F90 \
+$(srcdir)/generated/_exp_c17.F90 \
 $(srcdir)/generated/_log_r4.F90 \
 $(srcdir)/generated/_log_r8.F90 \
 $(srcdir)/generated/_log_r10.F90 \
 $(srcdir)/generated/_log_r16.F90 \
+$(srcdir)/generated/_log_r17.F90 \
 $(srcdir)/generated/_log_c4.F90 \
 $(srcdir)/generated/_log_c8.F90 \
 $(srcdir)/generated/_log_c10.F90 \
 $(srcdir)/generated/_log_c16.F90 \
+$(srcdir)/generated/_log_c17.F90 \
 $(srcdir)/generated/_log10_r4.F90 \
 $(srcdir)/generated/_log10_r8.F90 \
 $(srcdir)/generated/_log10_r10.F90 \
 $(srcdir)/generated/_log10_r16.F90 \
+$(srcdir)/generated/_log10_r17.F90 \
 $(srcdir)/generated/_sqrt_r4.F90 \
 $(srcdir)/generated/_sqrt_r8.F90 \
 $(srcdir)/generated/_sqrt_r10.F90 \
 $(srcdir)/generated/_sqrt_r16.F90 \
+$(srcdir)/generated/_sqrt_r17.F90 \
 $(srcdir)/generated/_sqrt_c4.F90 \
 $(srcdir)/generated/_sqrt_c8.F90 \
 $(srcdir)/generated/_sqrt_c10.F90 \
 $(srcdir)/generated/_sqrt_c16.F90 \
+$(srcdir)/generated/_sqrt_c17.F90 \
 $(srcdir)/generated/_asin_r4.F90 \
 $(srcdir)/generated/_asin_r8.F90 \
 $(srcdir)/generated/_asin_r10.F90 \
 $(srcdir)/generated/_asin_r16.F90 \
+$(srcdir)/generated/_asin_r17.F90 \
 $(srcdir)/generated/_asinh_r4.F90 \
 $(srcdir)/generated/_asinh_r8.F90 \
 $(srcdir)/generated/_asinh_r10.F90 \
 $(srcdir)/generated/_asinh_r16.F90 \
+$(srcdir)/generated/_asinh_r17.F90 \
 $(srcdir)/generated/_acos_r4.F90 \
 $(srcdir)/generated/_acos_r8.F90 \
 $(srcdir)/generated/_acos_r10.F90 \
 $(srcdir)/generated/_acos_r16.F90 \
+$(srcdir)/generated/_acos_r17.F90 \
 $(srcdir)/generated/_acosh_r4.F90 \
 $(srcdir)/generated/_acosh_r8.F90 \
 $(srcdir)/generated/_acosh_r10.F90 \
 $(srcdir)/generated/_acosh_r16.F90 \
+$(srcdir)/generated/_acosh_r17.F90 \
 $(srcdir)/generated/_atan_r4.F90 \
 $(srcdir)/generated/_atan_r8.F90 \
 $(srcdir)/generated/_atan_r10.F90 \
 $(srcdir)/generated/_atan_r16.F90 \
+$(srcdir)/generated/_atan_r17.F90 \
 $(srcdir)/generated/_atanh_r4.F90 \
 $(srcdir)/generated/_atanh_r8.F90 \
 $(srcdir)/generated/_atanh_r10.F90 \
 $(srcdir)/generated/_atanh_r16.F90 \
+$(srcdir)/generated/_atanh_r17.F90 \
 $(srcdir)/generated/_sin_r4.F90 \
 $(srcdir)/generated/_sin_r8.F90 \
 $(srcdir)/generated/_sin_r10.F90 \
 $(srcdir)/generated/_sin_r16.F90 \
+$(srcdir)/generated/_sin_r17.F90 \
 $(srcdir)/generated/_sin_c4.F90 \
 $(srcdir)/generated/_sin_c8.F90 \
 $(srcdir)/generated/_sin_c10.F90 \
 $(srcdir)/generated/_sin_c16.F90 \
+$(srcdir)/generated/_sin_c17.F90 \
 $(srcdir)/generated/_cos_r4.F90 \
 $(srcdir)/generated/_cos_r8.F90 \
 $(srcdir)/generated/_cos_r10.F90 \
 $(srcdir)/generated/_cos_r16.F90 \
+$(srcdir)/generated/_cos_r17.F90 \
 $(srcdir)/generated/_cos_c4.F90 \
 $(srcdir)/generated/_cos_c8.F90 \
 $(srcdir)/generated/_cos_c10.F90 \
 $(srcdir)/generated/_cos_c16.F90 \
+$(srcdir)/generated/_cos_c17.F90 \
 $(srcdir)/generated/_tan_r4.F90 \
 $(srcdir)/generated/_tan_r8.F90 \
 $(srcdir)/generated/_tan_r10.F90 \
 $(srcdir)/generated/_tan_r16.F90 \
+$(srcdir)/generated/_tan_r17.F90 \
 $(srcdir)/generated/_sinh_r4.F90 \
 $(srcdir)/generated/_sinh_r8.F90 \
 $(srcdir)/generated/_sinh_r10.F90 \
 $(srcdir)/generated/_sinh_r16.F90 \
+$(srcdir)/generated/_sinh_r17.F90 \
 $(srcdir)/generated/_cosh_r4.F90 \
 $(srcdir)/generated/_cosh_r8.F90 \
 $(srcdir)/generated/_cosh_r10.F90 \
 $(srcdir)/generated/_cosh_r16.F90 \
+$(srcdir)/generated/_cosh_r17.F90 \
 $(srcdir)/generated/_tanh_r4.F90 \
 $(srcdir)/generated/_tanh_r8.F90 \
 $(srcdir)/generated/_tanh_r10.F90 \
 $(srcdir)/generated/_tanh_r16.F90 \
+$(srcdir)/generated/_tanh_r17.F90 \
 $(srcdir)/generated/_conjg_c4.F90 \
 $(srcdir)/generated/_conjg_c8.F90 \
 $(srcdir)/generated/_conjg_c10.F90 \
 $(srcdir)/generated/_conjg_c16.F90 \
+$(srcdir)/generated/_conjg_c17.F90 \
 $(srcdir)/generated/_aint_r4.F90 \
 $(srcdir)/generated/_aint_r8.F90 \
 $(srcdir)/generated/_aint_r10.F90 \
 $(srcdir)/generated/_aint_r16.F90 \
+$(srcdir)/generated/_aint_r17.F90 \
 $(srcdir)/generated/_anint_r4.F90 \
 $(srcdir)/generated/_anint_r8.F90 \
 $(srcdir)/generated/_anint_r10.F90 \
-$(srcdir)/generated/_anint_r16.F90
+$(srcdir)/generated/_anint_r16.F90 \
+$(srcdir)/generated/_anint_r17.F90
 
 gfor_built_specific2_src= \
 $(srcdir)/generated/_sign_i4.F90 \
@@ -946,6 +1027,7 @@ $(srcdir)/generated/_sign_r4.F90 \
 $(srcdir)/generated/_sign_r8.F90 \
 $(srcdir)/generated/_sign_r10.F90 \
 $(srcdir)/generated/_sign_r16.F90 \
+$(srcdir)/generated/_sign_r17.F90 \
 $(srcdir)/generated/_dim_i4.F90 \
 $(srcdir)/generated/_dim_i8.F90 \
 $(srcdir)/generated/_dim_i16.F90 \
@@ -953,17 +1035,20 @@ $(srcdir)/generated/_dim_r4.F90 \
 $(srcdir)/generated/_dim_r8.F90 \
 $(srcdir)/generated/_dim_r10.F90 \
 $(srcdir)/generated/_dim_r16.F90 \
+$(srcdir)/generated/_dim_r17.F90 \
 $(srcdir)/generated/_atan2_r4.F90 \
 $(srcdir)/generated/_atan2_r8.F90 \
 $(srcdir)/generated/_atan2_r10.F90 \
 $(srcdir)/generated/_atan2_r16.F90 \
+$(srcdir)/generated/_atan2_r17.F90 \
 $(srcdir)/generated/_mod_i4.F90 \
 $(srcdir)/generated/_mod_i8.F90 \
 $(srcdir)/generated/_mod_i16.F90 \
 $(srcdir)/generated/_mod_r4.F90 \
 $(srcdir)/generated/_mod_r8.F90 \
 $(srcdir)/generated/_mod_r10.F90 \
-$(srcdir)/generated/_mod_r16.F90
+$(srcdir)/generated/_mod_r16.F90 \
+$(srcdir)/generated/_mod_r17.F90
 
 gfor_misc_specifics = $(srcdir)/generated/misc_specifics.F90
 
@@ -989,6 +1074,11 @@ $(patsubst %.c,%.lo,$(notdir $(i_matmull
 $(patsubst %.F90,%.lo,$(patsubst %.f90,%.lo,$(notdir $(gfor_specific_src)))): AM_FCFLAGS += -fallow-leading-underscore
 selected_real_kind.lo selected_int_kind.lo: AM_FCFLAGS += -fallow-leading-underscore
 
+# Build *_r17.F90 and *_c17.F90 with additional -mabi=ieeelongdouble on powerpc64le-linux.
+if HAVE_REAL_17
+$(patsubst %.F90,%.lo,$(filter %_r17.F90 %_c17.F90 $(notdir $(gfor_specific_src)))): AM_FCFLAGS += -mabi=ieeelongdouble
+endif
+
 if IEEE_SUPPORT
 # Add flags for IEEE modules
 $(patsubst %.F90,%.lo,$(notdir $(gfor_ieee_src))): AM_FCFLAGS += -Wno-unused-dummy-argument -Wno-c-binding-type -ffree-line-length-0 -fallow-leading-underscore


	Jakub


  reply	other threads:[~2021-11-19 14:19 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-31 14:43 Thomas Koenig
2021-11-01 15:54 ` Bill Schmidt
2021-11-01 17:32   ` Thomas Koenig
2021-11-01 17:45     ` Jakub Jelinek
2021-11-02  6:19       ` Thomas Koenig
2021-11-04  4:41         ` Michael Meissner
2021-11-01 18:46   ` Michael Meissner
2021-11-15 20:27     ` Thomas Koenig
2021-11-15 22:14       ` Peter Bergner
2021-11-15 23:42       ` Michael Meissner
2021-11-16  7:51         ` Thomas Koenig
2021-11-19 14:19           ` Jakub Jelinek [this message]
2021-11-19 17:30         ` Segher Boessenkool
2021-11-19 19:09           ` Thomas Koenig
2021-11-19 19:36             ` Peter Bergner
2021-11-19 21:30               ` Segher Boessenkool
2022-01-02 22:58     ` [power-iee128] How to specify linker flags Thomas Koenig
2022-01-03 10:19       ` Thomas Koenig
2022-01-03 10:33         ` Jakub Jelinek
2022-01-03 15:23           ` [power-iee128] libgfortran: Use -mno-gnu-attribute in libgfortran Jakub Jelinek
2022-01-03 15:27             ` Thomas Koenig
2022-01-03 10:34         ` [power-iee128] How to specify linker flags Segher Boessenkool
2022-01-05 21:20       ` Michael Meissner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211119141934.GP2646553@tucnak \
    --to=jakub@redhat.com \
    --cc=bergner@linux.ibm.com \
    --cc=dje.gcc@gmail.com \
    --cc=fortran@gcc.gnu.org \
    --cc=meissner@linux.ibm.com \
    --cc=segher@kernel.crashing.org \
    --cc=tkoenig@netcologne.de \
    --cc=wschmidt@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).