public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] libgcc, i386: Add __fix{,uns}bfti and __float{,un}tibf [PR107703]
@ 2022-11-16  9:06 Jakub Jelinek
  2022-11-16 11:51 ` [PATCH] libgcc, i386, optabs, v2: Add __float{,un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703] Jakub Jelinek
  0 siblings, 1 reply; 7+ messages in thread
From: Jakub Jelinek @ 2022-11-16  9:06 UTC (permalink / raw)
  To: Uros Bizjak, Richard Biener, Jeff Law, Joseph S. Myers; +Cc: gcc-patches

Hi!

While DI <-> BF conversions can be handled (and are) through
DI <-> XF <-> BF and for narrower integral modes even sometimes
through DF or SF, because XFmode has 64-bit mantissa and so all
the DImode values are exactly representable in XFmode.
That is not the case for TImode, and while e.g. the HF -> TI
conversions are IMHO useless in libgcc, because HFmode has
-65504.0f16, 65504.0f16 range, all the integers will be already
representable in SImode (or even HImode for unsigned) and so
I think HF -> DI -> TI conversions are faster and valid,
BFmode has roughly the same range as SFmode and so we absolutely need
the TI -> BF conversions to avoid double rounding.

As for BF -> TI conversions, they can be either also implemented
in libgcc (as done in the patch), or they could be implemented
as BF -> SF -> TI conversions with the same code generation used
elsewhere, just doing the 16-bit left shift of the bits - I think
we don't need to handle sNaNs during the BF -> SF part because
SF -> TI (which is already a libcall too) will handle that too.

Thoughts on this?  I guess my preference would be the BF -> SF -> TI
path because we won't need to waste
    32: 0000000000015e10   321 FUNC    GLOBAL DEFAULT   13 __fixbfti@@GCC_13.0.0
    89: 0000000000015f60   299 FUNC    GLOBAL DEFAULT   13 __fixunsbfti@@GCC_13.0.0
If so, I'd need to cut the fix parts of the patch below and
do something in the middle-end.

2022-11-16  Jakub Jelinek  <jakub@redhat.com>

	PR target/107703
	* soft-fp/fixbfti.c: New file.
	* soft-fp/fixunsbfti.c: New file.
	* soft-fp/floattibf.c: New file.
	* soft-fp/floatuntibf.c: New file.
	* config/i386/libgcc-glibc.ver: Export __fix{,uns}bfti
	and __float{,un}tibf @ GCC_13.0.0.
	* config/i386/64/t-softfp (softfp_extras): Add
	fixbfti, fixunsbfti, floattibf and floatuntibf.
	(CFLAGS-fixbfti.c, CFLAGS-fixunsbfti.c, CFLAGS-floattibf.c,
	CFLAGS-floatunstibf.c): Add -msse2.

--- libgcc/soft-fp/fixbfti.c.jj	2022-11-15 19:07:41.747901840 +0100
+++ libgcc/soft-fp/fixbfti.c	2022-11-15 19:13:45.990927498 +0100
@@ -0,0 +1,45 @@
+/* Software floating-point emulation.
+   Convert bfloat16 to 128bit signed integer
+   Copyright (C) 2007-2022 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file into
+   combinations with other programs, and to distribute those
+   combinations without any restriction coming from the use of this
+   file.  (The Lesser General Public License restrictions do apply in
+   other respects; for example, they cover modification of the file,
+   and distribution when not linked into a combine executable.)
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "soft-fp.h"
+#include "brain.h"
+
+TItype
+__fixbfti (BFtype a)
+{
+  FP_DECL_EX;
+  FP_DECL_B (A);
+  UTItype r;
+
+  FP_INIT_EXCEPTIONS;
+  FP_UNPACK_RAW_B (A, a);
+  FP_TO_INT_B (r, A, TI_BITS, 1);
+  FP_HANDLE_EXCEPTIONS;
+
+  return r;
+}
--- libgcc/soft-fp/fixunsbfti.c.jj	2022-11-15 19:08:24.400319352 +0100
+++ libgcc/soft-fp/fixunsbfti.c	2022-11-15 19:13:50.200870008 +0100
@@ -0,0 +1,45 @@
+/* Software floating-point emulation.
+   Convert bfloat16 to 128bit unsigned integer
+   Copyright (C) 2007-2022 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file into
+   combinations with other programs, and to distribute those
+   combinations without any restriction coming from the use of this
+   file.  (The Lesser General Public License restrictions do apply in
+   other respects; for example, they cover modification of the file,
+   and distribution when not linked into a combine executable.)
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "soft-fp.h"
+#include "brain.h"
+
+UTItype
+__fixunsbfti (BFtype a)
+{
+  FP_DECL_EX;
+  FP_DECL_B (A);
+  UTItype r;
+
+  FP_INIT_EXCEPTIONS;
+  FP_UNPACK_RAW_B (A, a);
+  FP_TO_INT_B (r, A, TI_BITS, 0);
+  FP_HANDLE_EXCEPTIONS;
+
+  return r;
+}
--- libgcc/soft-fp/floattibf.c.jj	2022-11-15 19:10:13.147834226 +0100
+++ libgcc/soft-fp/floattibf.c	2022-11-15 19:13:40.939996482 +0100
@@ -0,0 +1,45 @@
+/* Software floating-point emulation.
+   Convert a 128bit signed integer to bfloat16
+   Copyright (C) 2007-2022 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file into
+   combinations with other programs, and to distribute those
+   combinations without any restriction coming from the use of this
+   file.  (The Lesser General Public License restrictions do apply in
+   other respects; for example, they cover modification of the file,
+   and distribution when not linked into a combine executable.)
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "soft-fp.h"
+#include "brain.h"
+
+BFtype
+__floattibf (TItype i)
+{
+  FP_DECL_EX;
+  FP_DECL_B (A);
+  BFtype a;
+
+  FP_INIT_ROUNDMODE;
+  FP_FROM_INT_B (A, i, TI_BITS, UTItype);
+  FP_PACK_RAW_B (a, A);
+  FP_HANDLE_EXCEPTIONS;
+
+  return a;
+}
--- libgcc/soft-fp/floatuntibf.c.jj	2022-11-15 19:10:53.363285018 +0100
+++ libgcc/soft-fp/floatuntibf.c	2022-11-15 19:13:31.399126765 +0100
@@ -0,0 +1,45 @@
+/* Software floating-point emulation.
+   Convert a 128bit unsigned integer to bfloat16
+   Copyright (C) 2007-2022 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file into
+   combinations with other programs, and to distribute those
+   combinations without any restriction coming from the use of this
+   file.  (The Lesser General Public License restrictions do apply in
+   other respects; for example, they cover modification of the file,
+   and distribution when not linked into a combine executable.)
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "soft-fp.h"
+#include "brain.h"
+
+BFtype
+__floatuntibf (UTItype i)
+{
+  FP_DECL_EX;
+  FP_DECL_B (A);
+  BFtype a;
+
+  FP_INIT_ROUNDMODE;
+  FP_FROM_INT_B (A, i, TI_BITS, UTItype);
+  FP_PACK_RAW_B (a, A);
+  FP_HANDLE_EXCEPTIONS;
+
+  return a;
+}
--- libgcc/config/i386/libgcc-glibc.ver.jj	2022-10-14 09:35:56.269989297 +0200
+++ libgcc/config/i386/libgcc-glibc.ver	2022-11-15 19:26:37.125389987 +0100
@@ -218,6 +218,10 @@ GCC_12.0.0 {
 %inherit GCC_13.0.0 GCC_12.0.0
 GCC_13.0.0 {
   __extendbfsf2
+  __fixbfti
+  __fixunsbfti
+  __floattibf
+  __floatuntibf
   __truncdfbf2
   __truncsfbf2
   __trunctfbf2
--- libgcc/config/i386/64/t-softfp.jj	2021-12-30 15:12:44.111138056 +0100
+++ libgcc/config/i386/64/t-softfp	2022-11-15 19:26:07.184799287 +0100
@@ -1,6 +1,11 @@
-softfp_extras := fixhfti fixunshfti floattihf floatuntihf
+softfp_extras := fixhfti fixunshfti floattihf floatuntihf \
+		 fixbfti fixunsbfti floattibf floatuntibf
 
 CFLAGS-fixhfti.c += -msse2
 CFLAGS-fixunshfti.c += -msse2
 CFLAGS-floattihf.c += -msse2
 CFLAGS-floatunstihf.c += -msse2
+CFLAGS-fixbfti.c += -msse2
+CFLAGS-fixunsbfti.c += -msse2
+CFLAGS-floattibf.c += -msse2
+CFLAGS-floatunstibf.c += -msse2

	Jakub


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] libgcc, i386, optabs, v2: Add __float{,un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703]
  2022-11-16  9:06 [PATCH] libgcc, i386: Add __fix{,uns}bfti and __float{,un}tibf [PR107703] Jakub Jelinek
@ 2022-11-16 11:51 ` Jakub Jelinek
  2023-03-01 12:32   ` Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf " Jakub Jelinek
  0 siblings, 1 reply; 7+ messages in thread
From: Jakub Jelinek @ 2022-11-16 11:51 UTC (permalink / raw)
  To: Uros Bizjak, Richard Biener, Jeff Law, Joseph S. Myers, gcc-patches

On Wed, Nov 16, 2022 at 10:06:17AM +0100, Jakub Jelinek via Gcc-patches wrote:
> Thoughts on this?  I guess my preference would be the BF -> SF -> TI
> path because we won't need to waste
>     32: 0000000000015e10   321 FUNC    GLOBAL DEFAULT   13 __fixbfti@@GCC_13.0.0
>     89: 0000000000015f60   299 FUNC    GLOBAL DEFAULT   13 __fixunsbfti@@GCC_13.0.0
> If so, I'd need to cut the fix parts of the patch below and
> do something in the middle-end.

Here is adjusted patch that does that.

2022-11-16  Jakub Jelinek  <jakub@redhat.com>

	PR target/107703
	* optabs.cc (expand_fix): For conversions from BFmode to integral,
	use shifts to convert it to SFmode first and then convert SFmode
	to integral.

	* soft-fp/floattibf.c: New file.
	* soft-fp/floatuntibf.c: New file.
	* config/i386/libgcc-glibc.ver: Export __float{,un}tibf @ GCC_13.0.0.
	* config/i386/64/t-softfp (softfp_extras): Add floattibf and
	floatuntibf.
	(CFLAGS-floattibf.c, CFLAGS-floatunstibf.c): Add -msse2.

--- gcc/optabs.cc.jj	2022-11-16 07:29:11.665715915 +0100
+++ gcc/optabs.cc	2022-11-16 12:46:25.523281210 +0100
@@ -5574,7 +5574,21 @@ expand_fix (rtx to, rtx from, int unsign
 	    rtx_insn *last = get_last_insn ();
 	    rtx from1 = from;
 	    if (fmode != GET_MODE (from))
-	      from1 = convert_to_mode (fmode, from, 0);
+	      {
+		if (REAL_MODE_FORMAT (GET_MODE (from))
+		    == &arm_bfloat_half_format
+		    && REAL_MODE_FORMAT (fmode) == &ieee_single_format)
+		  /* The BF -> SF conversions can be just a shift, doesn't
+		     need to handle sNANs.  */
+		  {
+		    int save_flag_finite_math_only = flag_finite_math_only;
+		    flag_finite_math_only = true;
+		    from1 = convert_to_mode (fmode, from, 0);
+		    flag_finite_math_only = save_flag_finite_math_only;
+		  }
+		else
+		  from1 = convert_to_mode (fmode, from, 0);
+	      }
 
 	    if (must_trunc)
 	      {
@@ -5646,7 +5660,21 @@ expand_fix (rtx to, rtx from, int unsign
 	    lab2 = gen_label_rtx ();
 
 	    if (fmode != GET_MODE (from))
-	      from = convert_to_mode (fmode, from, 0);
+	      {
+		if (REAL_MODE_FORMAT (GET_MODE (from))
+		    == &arm_bfloat_half_format
+		    && REAL_MODE_FORMAT (fmode) == &ieee_single_format)
+		  /* The BF -> SF conversions can be just a shift, doesn't
+		     need to handle sNANs.  */
+		  {
+		    int save_flag_finite_math_only = flag_finite_math_only;
+		    flag_finite_math_only = true;
+		    from = convert_to_mode (fmode, from, 0);
+		    flag_finite_math_only = save_flag_finite_math_only;
+		  }
+		else
+		  from = convert_to_mode (fmode, from, 0);
+	      }
 
 	    /* See if we need to do the subtraction.  */
 	    do_pending_stack_adjust ();
@@ -5690,6 +5718,22 @@ expand_fix (rtx to, rtx from, int unsign
 	  }
       }
 
+#ifdef HAVE_SFmode
+  if (REAL_MODE_FORMAT (GET_MODE (from)) == &arm_bfloat_half_format
+      && REAL_MODE_FORMAT (SFmode) == &ieee_single_format)
+    /* We don't have BF -> TI library functions, use BF -> SF -> TI
+       instead but the BF -> SF conversion can be just a shift, doesn't
+       need to handle sNANs.  */
+    {
+      int save_flag_finite_math_only = flag_finite_math_only;
+      flag_finite_math_only = true;
+      from = convert_to_mode (SFmode, from, 0);
+      flag_finite_math_only = save_flag_finite_math_only;
+      expand_fix (to, from, unsignedp);
+      return;
+    }
+#endif
+
   /* We can't do it with an insn, so use a library call.  But first ensure
      that the mode of TO is at least as wide as SImode, since those are the
      only library calls we know about.  */
--- libgcc/soft-fp/floattibf.c.jj	2022-11-15 19:10:13.147834226 +0100
+++ libgcc/soft-fp/floattibf.c	2022-11-15 19:13:40.939996482 +0100
@@ -0,0 +1,45 @@
+/* Software floating-point emulation.
+   Convert a 128bit signed integer to bfloat16
+   Copyright (C) 2007-2022 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file into
+   combinations with other programs, and to distribute those
+   combinations without any restriction coming from the use of this
+   file.  (The Lesser General Public License restrictions do apply in
+   other respects; for example, they cover modification of the file,
+   and distribution when not linked into a combine executable.)
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "soft-fp.h"
+#include "brain.h"
+
+BFtype
+__floattibf (TItype i)
+{
+  FP_DECL_EX;
+  FP_DECL_B (A);
+  BFtype a;
+
+  FP_INIT_ROUNDMODE;
+  FP_FROM_INT_B (A, i, TI_BITS, UTItype);
+  FP_PACK_RAW_B (a, A);
+  FP_HANDLE_EXCEPTIONS;
+
+  return a;
+}
--- libgcc/soft-fp/floatuntibf.c.jj	2022-11-15 19:10:53.363285018 +0100
+++ libgcc/soft-fp/floatuntibf.c	2022-11-15 19:13:31.399126765 +0100
@@ -0,0 +1,45 @@
+/* Software floating-point emulation.
+   Convert a 128bit unsigned integer to bfloat16
+   Copyright (C) 2007-2022 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file into
+   combinations with other programs, and to distribute those
+   combinations without any restriction coming from the use of this
+   file.  (The Lesser General Public License restrictions do apply in
+   other respects; for example, they cover modification of the file,
+   and distribution when not linked into a combine executable.)
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include "soft-fp.h"
+#include "brain.h"
+
+BFtype
+__floatuntibf (UTItype i)
+{
+  FP_DECL_EX;
+  FP_DECL_B (A);
+  BFtype a;
+
+  FP_INIT_ROUNDMODE;
+  FP_FROM_INT_B (A, i, TI_BITS, UTItype);
+  FP_PACK_RAW_B (a, A);
+  FP_HANDLE_EXCEPTIONS;
+
+  return a;
+}
--- libgcc/config/i386/libgcc-glibc.ver.jj	2022-10-14 09:35:56.269989297 +0200
+++ libgcc/config/i386/libgcc-glibc.ver	2022-11-15 19:26:37.125389987 +0100
@@ -218,6 +218,8 @@ GCC_12.0.0 {
 %inherit GCC_13.0.0 GCC_12.0.0
 GCC_13.0.0 {
   __extendbfsf2
+  __floattibf
+  __floatuntibf
   __truncdfbf2
   __truncsfbf2
   __trunctfbf2
--- libgcc/config/i386/64/t-softfp.jj	2021-12-30 15:12:44.111138056 +0100
+++ libgcc/config/i386/64/t-softfp	2022-11-15 19:26:07.184799287 +0100
@@ -1,6 +1,9 @@
-softfp_extras := fixhfti fixunshfti floattihf floatuntihf
+softfp_extras := fixhfti fixunshfti floattihf floatuntihf \
+		 floattibf floatuntibf
 
 CFLAGS-fixhfti.c += -msse2
 CFLAGS-fixunshfti.c += -msse2
 CFLAGS-floattihf.c += -msse2
 CFLAGS-floatunstihf.c += -msse2
+CFLAGS-floattibf.c += -msse2
+CFLAGS-floatunstibf.c += -msse2


	Jakub


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703]
  2022-11-16 11:51 ` [PATCH] libgcc, i386, optabs, v2: Add __float{,un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703] Jakub Jelinek
@ 2023-03-01 12:32   ` Jakub Jelinek
  2023-03-10  9:00     ` Jakub Jelinek
  2023-03-11 15:03     ` Jeff Law
  0 siblings, 2 replies; 7+ messages in thread
From: Jakub Jelinek @ 2023-03-01 12:32 UTC (permalink / raw)
  To: Ian Lance Taylor, Joseph S. Myers; +Cc: gcc-patches

Hi!

On Wed, Nov 16, 2022 at 12:51:14PM +0100, Jakub Jelinek via Gcc-patches wrote:
> On Wed, Nov 16, 2022 at 10:06:17AM +0100, Jakub Jelinek via Gcc-patches wrote:
> > Thoughts on this?  I guess my preference would be the BF -> SF -> TI
> > path because we won't need to waste
> >     32: 0000000000015e10   321 FUNC    GLOBAL DEFAULT   13 __fixbfti@@GCC_13.0.0
> >     89: 0000000000015f60   299 FUNC    GLOBAL DEFAULT   13 __fixunsbfti@@GCC_13.0.0
> > If so, I'd need to cut the fix parts of the patch below and
> > do something in the middle-end.
> 
> Here is adjusted patch that does that.
> 
> 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
> 
> 	PR target/107703
> 	* optabs.cc (expand_fix): For conversions from BFmode to integral,
> 	use shifts to convert it to SFmode first and then convert SFmode
> 	to integral.
> 
> 	* soft-fp/floattibf.c: New file.
> 	* soft-fp/floatuntibf.c: New file.
> 	* config/i386/libgcc-glibc.ver: Export __float{,un}tibf @ GCC_13.0.0.
> 	* config/i386/64/t-softfp (softfp_extras): Add floattibf and
> 	floatuntibf.
> 	(CFLAGS-floattibf.c, CFLAGS-floatunstibf.c): Add -msse2.

I'd like to ping the libgcc non-i386 part of this patch, Uros said the i386
part is ok but that one depends on the generic libgcc changes.
I'll ping the optabs.cc change separately.

https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606398.html
with more info in
https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606382.html

Thanks.

	Jakub


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703]
  2023-03-01 12:32   ` Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf " Jakub Jelinek
@ 2023-03-10  9:00     ` Jakub Jelinek
  2023-03-10 18:10       ` Ian Lance Taylor
  2023-03-11 15:03     ` Jeff Law
  1 sibling, 1 reply; 7+ messages in thread
From: Jakub Jelinek @ 2023-03-10  9:00 UTC (permalink / raw)
  To: Ian Lance Taylor, Joseph S. Myers, Richard Biener, Jeff Law; +Cc: gcc-patches

Hi!

On Wed, Mar 01, 2023 at 01:32:43PM +0100, Jakub Jelinek via Gcc-patches wrote:
> On Wed, Nov 16, 2022 at 12:51:14PM +0100, Jakub Jelinek via Gcc-patches wrote:
> > On Wed, Nov 16, 2022 at 10:06:17AM +0100, Jakub Jelinek via Gcc-patches wrote:
> > > Thoughts on this?  I guess my preference would be the BF -> SF -> TI
> > > path because we won't need to waste
> > >     32: 0000000000015e10   321 FUNC    GLOBAL DEFAULT   13 __fixbfti@@GCC_13.0.0
> > >     89: 0000000000015f60   299 FUNC    GLOBAL DEFAULT   13 __fixunsbfti@@GCC_13.0.0
> > > If so, I'd need to cut the fix parts of the patch below and
> > > do something in the middle-end.
> > 
> > Here is adjusted patch that does that.
> > 
> > 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
> > 
> > 	PR target/107703
> > 	* optabs.cc (expand_fix): For conversions from BFmode to integral,
> > 	use shifts to convert it to SFmode first and then convert SFmode
> > 	to integral.
> > 
> > 	* soft-fp/floattibf.c: New file.
> > 	* soft-fp/floatuntibf.c: New file.
> > 	* config/i386/libgcc-glibc.ver: Export __float{,un}tibf @ GCC_13.0.0.
> > 	* config/i386/64/t-softfp (softfp_extras): Add floattibf and
> > 	floatuntibf.
> > 	(CFLAGS-floattibf.c, CFLAGS-floatunstibf.c): Add -msse2.
> 
> I'd like to ping the libgcc non-i386 part of this patch, Uros said the i386
> part is ok but that one depends on the generic libgcc changes.
> I'll ping the optabs.cc change separately.
> 
> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606398.html
> with more info in
> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606382.html

I'd like to ping this again.  I've posted the previously added
bfloat16 changes as well as the above 2 new files to libc-alpha as well
https://sourceware.org/pipermail/libc-alpha/2023-March/146246.html
if it makes the review easier.

Thanks

	Jakub


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703]
  2023-03-10  9:00     ` Jakub Jelinek
@ 2023-03-10 18:10       ` Ian Lance Taylor
  2023-03-11  9:17         ` Uros Bizjak
  0 siblings, 1 reply; 7+ messages in thread
From: Ian Lance Taylor @ 2023-03-10 18:10 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Joseph S. Myers, Richard Biener, Jeff Law, gcc-patches

Jakub Jelinek <jakub@redhat.com> writes:

> On Wed, Mar 01, 2023 at 01:32:43PM +0100, Jakub Jelinek via Gcc-patches wrote:
>> On Wed, Nov 16, 2022 at 12:51:14PM +0100, Jakub Jelinek via Gcc-patches wrote:
>> > On Wed, Nov 16, 2022 at 10:06:17AM +0100, Jakub Jelinek via
>> > Gcc-patches wrote:
>> > > Thoughts on this?  I guess my preference would be the BF -> SF -> TI
>> > > path because we won't need to waste
>> > >     32: 0000000000015e10 321 FUNC GLOBAL DEFAULT 13
>> > > __fixbfti@@GCC_13.0.0
>> > >     89: 0000000000015f60 299 FUNC GLOBAL DEFAULT 13
>> > > __fixunsbfti@@GCC_13.0.0
>> > > If so, I'd need to cut the fix parts of the patch below and
>> > > do something in the middle-end.
>> > 
>> > Here is adjusted patch that does that.
>> > 
>> > 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
>> > 
>> > 	PR target/107703
>> > 	* optabs.cc (expand_fix): For conversions from BFmode to integral,
>> > 	use shifts to convert it to SFmode first and then convert SFmode
>> > 	to integral.
>> > 
>> > 	* soft-fp/floattibf.c: New file.
>> > 	* soft-fp/floatuntibf.c: New file.
>> > 	* config/i386/libgcc-glibc.ver: Export __float{,un}tibf @ GCC_13.0.0.
>> > 	* config/i386/64/t-softfp (softfp_extras): Add floattibf and
>> > 	floatuntibf.
>> > 	(CFLAGS-floattibf.c, CFLAGS-floatunstibf.c): Add -msse2.
>> 
>> I'd like to ping the libgcc non-i386 part of this patch, Uros said the i386
>> part is ok but that one depends on the generic libgcc changes.
>> I'll ping the optabs.cc change separately.
>> 
>> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606398.html
>> with more info in
>> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606382.html
>
> I'd like to ping this again.  I've posted the previously added
> bfloat16 changes as well as the above 2 new files to libc-alpha as well
> https://sourceware.org/pipermail/libc-alpha/2023-March/146246.html
> if it makes the review easier.


The libgcc parts of this are fine.  Thanks.

Ian

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703]
  2023-03-10 18:10       ` Ian Lance Taylor
@ 2023-03-11  9:17         ` Uros Bizjak
  0 siblings, 0 replies; 7+ messages in thread
From: Uros Bizjak @ 2023-03-11  9:17 UTC (permalink / raw)
  To: Ian Lance Taylor
  Cc: Jakub Jelinek, Joseph S. Myers, Richard Biener, Jeff Law, gcc-patches

On Fri, Mar 10, 2023 at 7:11 PM Ian Lance Taylor <ian@airs.com> wrote:
>
> Jakub Jelinek <jakub@redhat.com> writes:
>
> > On Wed, Mar 01, 2023 at 01:32:43PM +0100, Jakub Jelinek via Gcc-patches wrote:
> >> On Wed, Nov 16, 2022 at 12:51:14PM +0100, Jakub Jelinek via Gcc-patches wrote:
> >> > On Wed, Nov 16, 2022 at 10:06:17AM +0100, Jakub Jelinek via
> >> > Gcc-patches wrote:
> >> > > Thoughts on this?  I guess my preference would be the BF -> SF -> TI
> >> > > path because we won't need to waste
> >> > >     32: 0000000000015e10 321 FUNC GLOBAL DEFAULT 13
> >> > > __fixbfti@@GCC_13.0.0
> >> > >     89: 0000000000015f60 299 FUNC GLOBAL DEFAULT 13
> >> > > __fixunsbfti@@GCC_13.0.0
> >> > > If so, I'd need to cut the fix parts of the patch below and
> >> > > do something in the middle-end.
> >> >
> >> > Here is adjusted patch that does that.
> >> >
> >> > 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
> >> >
> >> >    PR target/107703
> >> >    * optabs.cc (expand_fix): For conversions from BFmode to integral,
> >> >    use shifts to convert it to SFmode first and then convert SFmode
> >> >    to integral.
> >> >
> >> >    * soft-fp/floattibf.c: New file.
> >> >    * soft-fp/floatuntibf.c: New file.
> >> >    * config/i386/libgcc-glibc.ver: Export __float{,un}tibf @ GCC_13.0.0.
> >> >    * config/i386/64/t-softfp (softfp_extras): Add floattibf and
> >> >    floatuntibf.
> >> >    (CFLAGS-floattibf.c, CFLAGS-floatunstibf.c): Add -msse2.
> >>
> >> I'd like to ping the libgcc non-i386 part of this patch, Uros said the i386
> >> part is ok but that one depends on the generic libgcc changes.
> >> I'll ping the optabs.cc change separately.
> >>
> >> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606398.html
> >> with more info in
> >> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606382.html
> >
> > I'd like to ping this again.  I've posted the previously added
> > bfloat16 changes as well as the above 2 new files to libc-alpha as well
> > https://sourceware.org/pipermail/libc-alpha/2023-March/146246.html
> > if it makes the review easier.
>
>
> The libgcc parts of this are fine.  Thanks.

Also OK for the x86 part.

Thanks,
Uros.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703]
  2023-03-01 12:32   ` Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf " Jakub Jelinek
  2023-03-10  9:00     ` Jakub Jelinek
@ 2023-03-11 15:03     ` Jeff Law
  1 sibling, 0 replies; 7+ messages in thread
From: Jeff Law @ 2023-03-11 15:03 UTC (permalink / raw)
  To: Jakub Jelinek, Ian Lance Taylor, Joseph S. Myers; +Cc: gcc-patches



On 3/1/23 05:32, Jakub Jelinek via Gcc-patches wrote:
> Hi!
> 
> On Wed, Nov 16, 2022 at 12:51:14PM +0100, Jakub Jelinek via Gcc-patches wrote:
>> On Wed, Nov 16, 2022 at 10:06:17AM +0100, Jakub Jelinek via Gcc-patches wrote:
>>> Thoughts on this?  I guess my preference would be the BF -> SF -> TI
>>> path because we won't need to waste
>>>      32: 0000000000015e10   321 FUNC    GLOBAL DEFAULT   13 __fixbfti@@GCC_13.0.0
>>>      89: 0000000000015f60   299 FUNC    GLOBAL DEFAULT   13 __fixunsbfti@@GCC_13.0.0
>>> If so, I'd need to cut the fix parts of the patch below and
>>> do something in the middle-end.
>>
>> Here is adjusted patch that does that.
>>
>> 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
>>
>> 	PR target/107703
>> 	* optabs.cc (expand_fix): For conversions from BFmode to integral,
>> 	use shifts to convert it to SFmode first and then convert SFmode
>> 	to integral.
>>
>> 	* soft-fp/floattibf.c: New file.
>> 	* soft-fp/floatuntibf.c: New file.
>> 	* config/i386/libgcc-glibc.ver: Export __float{,un}tibf @ GCC_13.0.0.
>> 	* config/i386/64/t-softfp (softfp_extras): Add floattibf and
>> 	floatuntibf.
>> 	(CFLAGS-floattibf.c, CFLAGS-floatunstibf.c): Add -msse2.
> 
> I'd like to ping the libgcc non-i386 part of this patch, Uros said the i386
> part is ok but that one depends on the generic libgcc changes.
> I'll ping the optabs.cc change separately.
> 
> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606398.html
> with more info in
> https://gcc.gnu.org/pipermail/gcc-patches/2022-November/606382.html
The optab changes are OK too.
jeff

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-03-11 15:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-16  9:06 [PATCH] libgcc, i386: Add __fix{,uns}bfti and __float{,un}tibf [PR107703] Jakub Jelinek
2022-11-16 11:51 ` [PATCH] libgcc, i386, optabs, v2: Add __float{,un}tibf to libgcc and expand BF -> integral through SF intermediate [PR107703] Jakub Jelinek
2023-03-01 12:32   ` Patch ping: Re: [PATCH] libgcc, i386, optabs, v2: Add __float{, un}tibf " Jakub Jelinek
2023-03-10  9:00     ` Jakub Jelinek
2023-03-10 18:10       ` Ian Lance Taylor
2023-03-11  9:17         ` Uros Bizjak
2023-03-11 15:03     ` Jeff Law

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).