libgcc: allow building float128 libraries on FreeBSD
Commit Message
From: Piotr Kubaj <pkubaj@FreeBSD.org>
While FreeBSD currently uses 64-bit long double, there should be no
problem with adding support for float128.
Signed-off-by: Piotr Kubaj <pkubaj@FreeBSD.org>
---
libgcc/configure | 22 ++++++++++++++++++++++
libgcc/configure.ac | 11 +++++++++++
2 files changed, 33 insertions(+)
Comments
Bumping. Is there anything wrong with this patch?
On 22-02-21 00:37:56, pkubaj@FreeBSD.org wrote:
> From: Piotr Kubaj <pkubaj@FreeBSD.org>
>
> While FreeBSD currently uses 64-bit long double, there should be no
> problem with adding support for float128.
>
> Signed-off-by: Piotr Kubaj <pkubaj@FreeBSD.org>
> ---
> libgcc/configure | 22 ++++++++++++++++++++++
> libgcc/configure.ac | 11 +++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/libgcc/configure b/libgcc/configure
> index 4919a56f518..334d20d1fb1 100755
> --- a/libgcc/configure
> +++ b/libgcc/configure
> @@ -5300,6 +5300,28 @@ fi
> { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_3_1_float128_hw" >&5
> $as_echo "$libgcc_cv_powerpc_3_1_float128_hw" >&6; }
> CFLAGS="$saved_CFLAGS"
> +;;
> +powerpc*-*-freebsd*)
> + saved_CFLAGS="$CFLAGS"
> + CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
> + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 2.06 to build __float128 libraries" >&5
> +$as_echo_n "checking for PowerPC ISA 2.06 to build __float128 libraries... " >&6; }
> +if ${libgcc_cv_powerpc_float128+:} false; then :
> + $as_echo_n "(cached) " >&6
> +else
> + cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h. */
> +vector double dadd (vector double a, vector double b) { return a + b; }
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> + libgcc_cv_powerpc_float128=yes
> +else
> + libgcc_cv_powerpc_float128=no
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128" >&5
> +$as_echo "$libgcc_cv_powerpc_float128" >&6; }
> esac
>
> # Collect host-machine-specific information.
> diff --git a/libgcc/configure.ac b/libgcc/configure.ac
> index 13a80b2551b..99ec5d405a4 100644
> --- a/libgcc/configure.ac
> +++ b/libgcc/configure.ac
> @@ -483,6 +483,17 @@ powerpc*-*-linux*)
> [libgcc_cv_powerpc_3_1_float128_hw=yes],
> [libgcc_cv_powerpc_3_1_float128_hw=no])])
> CFLAGS="$saved_CFLAGS"
> +;;
> +powerpc*-*-freebsd*)
> + saved_CFLAGS="$CFLAGS"
> + CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
> + AC_CACHE_CHECK([for PowerPC ISA 2.06 to build __float128 libraries],
> + [libgcc_cv_powerpc_float128],
> + [AC_COMPILE_IFELSE(
> + [AC_LANG_SOURCE([vector double dadd (vector double a, vector double b) { return a + b; }])],
> + [libgcc_cv_powerpc_float128=yes],
> + [libgcc_cv_powerpc_float128=no])])
> + CFLAGS="$saved_CFLAGS"
> esac
>
> # Collect host-machine-specific information.
> --
> 2.35.1
>
I don't have any objection, but the patch is FreeBSD-specific. You
are sending the patch from the FreeBSD organization, but I don't know
the authority structure within the organization. Andreas Tobler is
the FreeBSD maintainer for GCC, but I don't know his current status.
Thanks, David
On Sun, Feb 20, 2022 at 6:38 PM <pkubaj@freebsd.org> wrote:
>
> From: Piotr Kubaj <pkubaj@FreeBSD.org>
>
> While FreeBSD currently uses 64-bit long double, there should be no
> problem with adding support for float128.
>
> Signed-off-by: Piotr Kubaj <pkubaj@FreeBSD.org>
> ---
> libgcc/configure | 22 ++++++++++++++++++++++
> libgcc/configure.ac | 11 +++++++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/libgcc/configure b/libgcc/configure
> index 4919a56f518..334d20d1fb1 100755
> --- a/libgcc/configure
> +++ b/libgcc/configure
> @@ -5300,6 +5300,28 @@ fi
> { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_3_1_float128_hw" >&5
> $as_echo "$libgcc_cv_powerpc_3_1_float128_hw" >&6; }
> CFLAGS="$saved_CFLAGS"
> +;;
> +powerpc*-*-freebsd*)
> + saved_CFLAGS="$CFLAGS"
> + CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
> + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 2.06 to build __float128 libraries" >&5
> +$as_echo_n "checking for PowerPC ISA 2.06 to build __float128 libraries... " >&6; }
> +if ${libgcc_cv_powerpc_float128+:} false; then :
> + $as_echo_n "(cached) " >&6
> +else
> + cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h. */
> +vector double dadd (vector double a, vector double b) { return a + b; }
> +_ACEOF
> +if ac_fn_c_try_compile "$LINENO"; then :
> + libgcc_cv_powerpc_float128=yes
> +else
> + libgcc_cv_powerpc_float128=no
> +fi
> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +fi
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128" >&5
> +$as_echo "$libgcc_cv_powerpc_float128" >&6; }
> esac
>
> # Collect host-machine-specific information.
> diff --git a/libgcc/configure.ac b/libgcc/configure.ac
> index 13a80b2551b..99ec5d405a4 100644
> --- a/libgcc/configure.ac
> +++ b/libgcc/configure.ac
> @@ -483,6 +483,17 @@ powerpc*-*-linux*)
> [libgcc_cv_powerpc_3_1_float128_hw=yes],
> [libgcc_cv_powerpc_3_1_float128_hw=no])])
> CFLAGS="$saved_CFLAGS"
> +;;
> +powerpc*-*-freebsd*)
> + saved_CFLAGS="$CFLAGS"
> + CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
> + AC_CACHE_CHECK([for PowerPC ISA 2.06 to build __float128 libraries],
> + [libgcc_cv_powerpc_float128],
> + [AC_COMPILE_IFELSE(
> + [AC_LANG_SOURCE([vector double dadd (vector double a, vector double b) { return a + b; }])],
> + [libgcc_cv_powerpc_float128=yes],
> + [libgcc_cv_powerpc_float128=no])])
> + CFLAGS="$saved_CFLAGS"
> esac
>
> # Collect host-machine-specific information.
> --
> 2.35.1
>
Hi!
On Mon, Feb 21, 2022 at 12:37:56AM +0100, pkubaj@FreeBSD.org wrote:
> From: Piotr Kubaj <pkubaj@FreeBSD.org>
>
> While FreeBSD currently uses 64-bit long double, there should be no
> problem with adding support for float128.
>
> Signed-off-by: Piotr Kubaj <pkubaj@FreeBSD.org>
This needs a changelog. The entry for configure should just say
"Regenerate." btw :-)
So, I had some problems with this. Firstly, the test does not make very
much sense, or rather, it is very indirect. But you copied this from
the Linux code, so :-)
Secondly, I needed to think about if this code should just be shared
between the two then. Copied code easily turns into a maintenance
nightmare, after all.
And then I just forgot, it fell off my to-do lists, sorry.
The patch is okay for trunk, with a suitable changelog. Thanks! Do you
want backports for this as well?
Segher
@@ -5300,6 +5300,28 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_3_1_float128_hw" >&5
$as_echo "$libgcc_cv_powerpc_3_1_float128_hw" >&6; }
CFLAGS="$saved_CFLAGS"
+;;
+powerpc*-*-freebsd*)
+ saved_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 2.06 to build __float128 libraries" >&5
+$as_echo_n "checking for PowerPC ISA 2.06 to build __float128 libraries... " >&6; }
+if ${libgcc_cv_powerpc_float128+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+vector double dadd (vector double a, vector double b) { return a + b; }
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ libgcc_cv_powerpc_float128=yes
+else
+ libgcc_cv_powerpc_float128=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128" >&5
+$as_echo "$libgcc_cv_powerpc_float128" >&6; }
esac
# Collect host-machine-specific information.
@@ -483,6 +483,17 @@ powerpc*-*-linux*)
[libgcc_cv_powerpc_3_1_float128_hw=yes],
[libgcc_cv_powerpc_3_1_float128_hw=no])])
CFLAGS="$saved_CFLAGS"
+;;
+powerpc*-*-freebsd*)
+ saved_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
+ AC_CACHE_CHECK([for PowerPC ISA 2.06 to build __float128 libraries],
+ [libgcc_cv_powerpc_float128],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE([vector double dadd (vector double a, vector double b) { return a + b; }])],
+ [libgcc_cv_powerpc_float128=yes],
+ [libgcc_cv_powerpc_float128=no])])
+ CFLAGS="$saved_CFLAGS"
esac
# Collect host-machine-specific information.