public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCHv3] Optab: add isnormal_optab for __builtin_isnormal
@ 2024-05-27  9:37 HAO CHEN GUI
  0 siblings, 0 replies; only message in thread
From: HAO CHEN GUI @ 2024-05-27  9:37 UTC (permalink / raw)
  To: gcc-patches
  Cc: Segher Boessenkool, David, Kewen.Lin, Peter Bergner,
	Andrew Pinski, Richard Biener

Hi,
  This patch adds an optab for __builtin_isnormal. The normal 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.

  Compared to previous version, the main change is to specify acceptable
modes for the optab.
https://gcc.gnu.org/pipermail/gcc-patches/2024-May/652172.html

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

Thanks
Gui Haochen

ChangeLog
optab: Add isnormal_optab for isnormal builtin

gcc/
	* builtins.cc (interclass_mathfn_icode): Set optab to isnormal_optab
	for isnormal builtin.
	* optabs.def (isnormal_optab): New.
	* doc/md.texi (isnormal): Document.


patch.diff
diff --git a/gcc/builtins.cc b/gcc/builtins.cc
index b8432f84020..ccd57fce522 100644
--- a/gcc/builtins.cc
+++ b/gcc/builtins.cc
@@ -2462,6 +2462,7 @@ interclass_mathfn_icode (tree arg, tree fndecl)
     case BUILT_IN_ISFINITE:
       builtin_optab = isfinite_optab; break;
     case BUILT_IN_ISNORMAL:
+      builtin_optab = isnormal_optab; break;
     CASE_FLT_FN (BUILT_IN_FINITE):
     case BUILT_IN_FINITED32:
     case BUILT_IN_FINITED64:
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index bc67324872f..7de9c2b5b70 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -8566,6 +8566,15 @@ and to 0 otherwise.
 If this pattern @code{FAIL}, a call to the library function
 @code{isfinite} is used.

+@cindex @code{isnormal@var{m}2} instruction pattern
+@item @samp{isnormal@var{m}2}
+Set operand 0 to nonzero if operand 1 is a normal @code{SFmode},
+@code{DFmode}, or @code{TFmode} floating point number and to 0
+otherwise.
+
+If this pattern @code{FAIL}, a call to the library function
+@code{isnormal} is used.
+
 @end table

 @end ifset
diff --git a/gcc/optabs.def b/gcc/optabs.def
index dcd77315c2a..3c401fc0b4c 100644
--- a/gcc/optabs.def
+++ b/gcc/optabs.def
@@ -353,6 +353,7 @@ 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 (isnormal_optab, "isnormal$a2")
 OPTAB_D (issignaling_optab, "issignaling$a2")
 OPTAB_D (ldexp_optab, "ldexp$a3")
 OPTAB_D (log10_optab, "log10$a2")

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-05-27  9:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-27  9:37 [PATCHv3] Optab: add isnormal_optab for __builtin_isnormal 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).