public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Optab: add isfinite_optab for __builtin_isfinite
@ 2024-04-12  3:06 HAO CHEN GUI
  2024-05-16 12:16 ` Richard Biener
  2024-05-18 19:42 ` Andrew Pinski
  0 siblings, 2 replies; 4+ messages in thread
From: HAO CHEN GUI @ 2024-04-12  3:06 UTC (permalink / raw)
  To: gcc-patches; +Cc: Segher Boessenkool, David, Kewen.Lin, Peter Bergner

Hi,
  This patch adds an optab for __builtin_isfinite. The finite check can be
implemented on rs6000 by a single instruction. It needs an optab to be
expanded to the certain sequence of instructions.

  The subsequent patches will implement the expand on rs6000.

  Bootstrapped and tested on x86 and powerpc64-linux BE and LE with no
regressions. Is this OK for next stage-1?

Thanks
Gui Haochen

ChangeLog
optab: Add isfinite_optab for isfinite builtin

gcc/
	* builtins.cc (interclass_mathfn_icode): Set optab to isfinite_optab
	for isfinite builtin.
	* optabs.def (isfinite_optab): New.

patch.diff
diff --git a/gcc/builtins.cc b/gcc/builtins.cc
index d2786f207b8..5262aa01660 100644
--- a/gcc/builtins.cc
+++ b/gcc/builtins.cc
@@ -2459,8 +2459,9 @@ interclass_mathfn_icode (tree arg, tree fndecl)
       errno_set = true; builtin_optab = ilogb_optab; break;
     CASE_FLT_FN (BUILT_IN_ISINF):
       builtin_optab = isinf_optab; break;
-    case BUILT_IN_ISNORMAL:
     case BUILT_IN_ISFINITE:
+      builtin_optab = isfinite_optab; break;
+    case BUILT_IN_ISNORMAL:
     CASE_FLT_FN (BUILT_IN_FINITE):
     case BUILT_IN_FINITED32:
     case BUILT_IN_FINITED64:
diff --git a/gcc/optabs.def b/gcc/optabs.def
index ad14f9328b9..dcd77315c2a 100644
--- a/gcc/optabs.def
+++ b/gcc/optabs.def
@@ -352,6 +352,7 @@ OPTAB_D (fmod_optab, "fmod$a3")
 OPTAB_D (hypot_optab, "hypot$a3")
 OPTAB_D (ilogb_optab, "ilogb$a2")
 OPTAB_D (isinf_optab, "isinf$a2")
+OPTAB_D (isfinite_optab, "isfinite$a2")
 OPTAB_D (issignaling_optab, "issignaling$a2")
 OPTAB_D (ldexp_optab, "ldexp$a3")
 OPTAB_D (log10_optab, "log10$a2")

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

* Re: [PATCH] Optab: add isfinite_optab for __builtin_isfinite
  2024-04-12  3:06 [PATCH] Optab: add isfinite_optab for __builtin_isfinite HAO CHEN GUI
@ 2024-05-16 12:16 ` Richard Biener
  2024-05-18 19:42 ` Andrew Pinski
  1 sibling, 0 replies; 4+ messages in thread
From: Richard Biener @ 2024-05-16 12:16 UTC (permalink / raw)
  To: HAO CHEN GUI
  Cc: gcc-patches, Segher Boessenkool, David, Kewen.Lin, Peter Bergner

On Fri, Apr 12, 2024 at 5:07 AM HAO CHEN GUI <guihaoc@linux.ibm.com> wrote:
>
> Hi,
>   This patch adds an optab for __builtin_isfinite. The finite check can be
> implemented on rs6000 by a single instruction. It needs an optab to be
> expanded to the certain sequence of instructions.
>
>   The subsequent patches will implement the expand on rs6000.
>
>   Bootstrapped and tested on x86 and powerpc64-linux BE and LE with no
> regressions. Is this OK for next stage-1?

OK if the rs6000 part is approved.

> Thanks
> Gui Haochen
>
> ChangeLog
> optab: Add isfinite_optab for isfinite builtin
>
> gcc/
>         * builtins.cc (interclass_mathfn_icode): Set optab to isfinite_optab
>         for isfinite builtin.
>         * optabs.def (isfinite_optab): New.
>
> patch.diff
> diff --git a/gcc/builtins.cc b/gcc/builtins.cc
> index d2786f207b8..5262aa01660 100644
> --- a/gcc/builtins.cc
> +++ b/gcc/builtins.cc
> @@ -2459,8 +2459,9 @@ interclass_mathfn_icode (tree arg, tree fndecl)
>        errno_set = true; builtin_optab = ilogb_optab; break;
>      CASE_FLT_FN (BUILT_IN_ISINF):
>        builtin_optab = isinf_optab; break;
> -    case BUILT_IN_ISNORMAL:
>      case BUILT_IN_ISFINITE:
> +      builtin_optab = isfinite_optab; break;
> +    case BUILT_IN_ISNORMAL:
>      CASE_FLT_FN (BUILT_IN_FINITE):
>      case BUILT_IN_FINITED32:
>      case BUILT_IN_FINITED64:
> diff --git a/gcc/optabs.def b/gcc/optabs.def
> index ad14f9328b9..dcd77315c2a 100644
> --- a/gcc/optabs.def
> +++ b/gcc/optabs.def
> @@ -352,6 +352,7 @@ OPTAB_D (fmod_optab, "fmod$a3")
>  OPTAB_D (hypot_optab, "hypot$a3")
>  OPTAB_D (ilogb_optab, "ilogb$a2")
>  OPTAB_D (isinf_optab, "isinf$a2")
> +OPTAB_D (isfinite_optab, "isfinite$a2")
>  OPTAB_D (issignaling_optab, "issignaling$a2")
>  OPTAB_D (ldexp_optab, "ldexp$a3")
>  OPTAB_D (log10_optab, "log10$a2")

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

* Re: [PATCH] Optab: add isfinite_optab for __builtin_isfinite
  2024-04-12  3:06 [PATCH] Optab: add isfinite_optab for __builtin_isfinite HAO CHEN GUI
  2024-05-16 12:16 ` Richard Biener
@ 2024-05-18 19:42 ` Andrew Pinski
  2024-05-20  5:30   ` HAO CHEN GUI
  1 sibling, 1 reply; 4+ messages in thread
From: Andrew Pinski @ 2024-05-18 19:42 UTC (permalink / raw)
  To: HAO CHEN GUI
  Cc: gcc-patches, Segher Boessenkool, David, Kewen.Lin, Peter Bergner

On Thu, Apr 11, 2024 at 8:07 PM HAO CHEN GUI <guihaoc@linux.ibm.com> wrote:
>
> Hi,
>   This patch adds an optab for __builtin_isfinite. The finite check can be
> implemented on rs6000 by a single instruction. It needs an optab to be
> expanded to the certain sequence of instructions.
>
>   The subsequent patches will implement the expand on rs6000.
>
>   Bootstrapped and tested on x86 and powerpc64-linux BE and LE with no
> regressions. Is this OK for next stage-1?


This is missing adding documentation for the new optab.
It should be documented in md.texi under `Standard Pattern Names For
Generation` section.

Thanks,
Andrew


>
> Thanks
> Gui Haochen
>
> ChangeLog
> optab: Add isfinite_optab for isfinite builtin
>
> gcc/
>         * builtins.cc (interclass_mathfn_icode): Set optab to isfinite_optab
>         for isfinite builtin.
>         * optabs.def (isfinite_optab): New.
>
> patch.diff
> diff --git a/gcc/builtins.cc b/gcc/builtins.cc
> index d2786f207b8..5262aa01660 100644
> --- a/gcc/builtins.cc
> +++ b/gcc/builtins.cc
> @@ -2459,8 +2459,9 @@ interclass_mathfn_icode (tree arg, tree fndecl)
>        errno_set = true; builtin_optab = ilogb_optab; break;
>      CASE_FLT_FN (BUILT_IN_ISINF):
>        builtin_optab = isinf_optab; break;
> -    case BUILT_IN_ISNORMAL:
>      case BUILT_IN_ISFINITE:
> +      builtin_optab = isfinite_optab; break;
> +    case BUILT_IN_ISNORMAL:
>      CASE_FLT_FN (BUILT_IN_FINITE):
>      case BUILT_IN_FINITED32:
>      case BUILT_IN_FINITED64:
> diff --git a/gcc/optabs.def b/gcc/optabs.def
> index ad14f9328b9..dcd77315c2a 100644
> --- a/gcc/optabs.def
> +++ b/gcc/optabs.def
> @@ -352,6 +352,7 @@ OPTAB_D (fmod_optab, "fmod$a3")
>  OPTAB_D (hypot_optab, "hypot$a3")
>  OPTAB_D (ilogb_optab, "ilogb$a2")
>  OPTAB_D (isinf_optab, "isinf$a2")
> +OPTAB_D (isfinite_optab, "isfinite$a2")
>  OPTAB_D (issignaling_optab, "issignaling$a2")
>  OPTAB_D (ldexp_optab, "ldexp$a3")
>  OPTAB_D (log10_optab, "log10$a2")

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

* Re: [PATCH] Optab: add isfinite_optab for __builtin_isfinite
  2024-05-18 19:42 ` Andrew Pinski
@ 2024-05-20  5:30   ` HAO CHEN GUI
  0 siblings, 0 replies; 4+ messages in thread
From: HAO CHEN GUI @ 2024-05-20  5:30 UTC (permalink / raw)
  To: Andrew Pinski
  Cc: gcc-patches, Segher Boessenkool, David, Kewen.Lin, Peter Bergner

Hi Andrew,

在 2024/5/19 3:42, Andrew Pinski 写道:
> This is missing adding documentation for the new optab.
> It should be documented in md.texi under `Standard Pattern Names For
> Generation` section.

Thanks for your reminder. I will add ones for all patches.

Thanks
Gui Haochen

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

end of thread, other threads:[~2024-05-20  5:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-12  3:06 [PATCH] Optab: add isfinite_optab for __builtin_isfinite HAO CHEN GUI
2024-05-16 12:16 ` Richard Biener
2024-05-18 19:42 ` Andrew Pinski
2024-05-20  5:30   ` HAO CHEN GUI

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