On 3/30/26 12:11, Richard Biener wrote:
The following adds documentation for internal function details. I have populated the internal function tables via macro expansion of the internal-fn.def file, so it's quite boiler-plate and asks for manual amending in more complicated places.Without such a place it's quite difficult to tell people to document things when they add new internal functions. We might want to split the table into two, separating direct internal functions from others. I have added some overall sentences related to internal functions and builtins but left the API section as a FIXME. I'm not sure we need a separate index - I have used IFN_ prefixes which separates them nicely. Removing those would warrant a separate index. I've placed the contents after the GENERIC/GIMPLE chapters. I have looked over the generated pdf and it looks reasonable. Is this OK to push in this state? Or is "bad" documentation worse than none?
I was not able to get the patch to build as-is, using texinfo 7.2. There were a missing menu entry, two @nodes with the same name, some bad markup on a @table, and a stray preprocessor line directive that gave a misleading location for the last of those errors. I've attached a patch that goes on top of yours to fix those things, plus some punctuation and capitalization problems, typo/paste-o errors, etc.
I'd also like to see the long lines >= 80 characters wrapped before this is pushed. I didn't do that now because I thought it would obscure the other changes I made.
-Sandra
commit cd16ff1d776860cd8fd59751d86d876687b24ac9 Author: Sandra Loosemore <[email protected]> Date: Tue Mar 31 16:12:55 2026 +0000 Fixes for ifn documentation diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi index be752db3cd4..30c5509ca41 100644 --- a/gcc/doc/gccint.texi +++ b/gcc/doc/gccint.texi @@ -113,6 +113,7 @@ Additional tutorial information is linked to from * poly_int:: Representation of runtime sizes and offsets. * GENERIC:: Language-independent representation generated by Front Ends * GIMPLE:: Tuple representation used by Tree SSA optimizers +* Internal Functions:: Calls with pre-defined semantics that expand to RTL * Tree SSA:: Analysis and optimization of GIMPLE * RTL:: Machine-dependent low-level intermediate representation. * Control Flow:: Maintaining and manipulating the control flow graph. diff --git a/gcc/doc/ifn.texi b/gcc/doc/ifn.texi index 4fa51f0b5ca..3051b12445f 100644 --- a/gcc/doc/ifn.texi +++ b/gcc/doc/ifn.texi @@ -8,41 +8,41 @@ @cindex @file{internal-fn.def} In addition to builtin functions specified in @file{builtins.def} and -friends the GENERIC and GIMPLE intermediate languages use calls with +friends, the GENERIC and GIMPLE intermediate languages use calls with pre-defined semantics that are inline expanded to RTL rather than to -calls or lowered at some point during optimziation. +calls or lowered at some point during optimization. Internal functions work like tree operation codes in that they are not strongly typed so there are no variants like @code{BUILT_IN_SIN} -and @code{BUILT_IN_SINF} but just a single @code{IFN_SIN}. +and @code{BUILT_IN_SINF}; just a single @code{IFN_SIN}. Internal functions are declared in @file{internal-fn.def}. @menu -* Internal Function API:: The internal function related API. -* Internal Functions:: Table of internal functions. +* Internal Function API:: How to operate on internal functions. +* Table of Internal Functions:: @end menu @node Internal Function API -@section The internal function related API +@section Internal Function API Internal functions and builtin functions can be operated on transparently via the @code{combined_fn} enumeration type and the following set of helper functions. -@c FIXME +FIXME: not documented yet. The following are internal function specific helpers working on the @code{internal_fn} enumeration type. -@c FIXME +FIXME: not documented yet. -@node Internal Functions -@section Table of internal functions +@node Table of Internal Functions +@section Table of Internal Functions @menu * Direct Internal Functions:: -* Internal Functions corresponding to builtins:: +* Internal Functions Corresponding to Builtins:: * Other Internal Functions:: @end menu @@ -471,86 +471,86 @@ The @code{IFN_BIT_IORN} internal function directly maps to the @code{iorn} instr @cindex @code{IFN_ABD} internal function @item @samp{IFN_ABD} -The @code{IFN_ABD} internal function directly maps to the @code{sabd} and @code{uabd} instruction patterns depending on the sign of the first argument. +The @code{IFN_ABD} internal function directly maps to the @code{sabd} and @code{uabd} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_AVG_FLOOR} internal function @item @samp{IFN_AVG_FLOOR} -The @code{IFN_AVG_FLOOR} internal function directly maps to the @code{savg_floor} and @code{uavg_floor} instruction patterns depending on the sign of the first argument. +The @code{IFN_AVG_FLOOR} internal function directly maps to the @code{savg_floor} and @code{uavg_floor} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_AVG_CEIL} internal function @item @samp{IFN_AVG_CEIL} -The @code{IFN_AVG_CEIL} internal function directly maps to the @code{savg_ceil} and @code{uavg_ceil} instruction patterns depending on the sign of the first argument. +The @code{IFN_AVG_CEIL} internal function directly maps to the @code{savg_ceil} and @code{uavg_ceil} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_MULH} internal function @item @samp{IFN_MULH} -The @code{IFN_MULH} internal function directly maps to the @code{smul_highpart} and @code{umul_highpart} instruction patterns depending on the sign of the first argument. +The @code{IFN_MULH} internal function directly maps to the @code{smul_highpart} and @code{umul_highpart} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_MULHS} internal function @item @samp{IFN_MULHS} -The @code{IFN_MULHS} internal function directly maps to the @code{smulhs} and @code{umulhs} instruction patterns depending on the sign of the first argument. +The @code{IFN_MULHS} internal function directly maps to the @code{smulhs} and @code{umulhs} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_MULHRS} internal function @item @samp{IFN_MULHRS} -The @code{IFN_MULHRS} internal function directly maps to the @code{smulhrs} and @code{umulhrs} instruction patterns depending on the sign of the first argument. +The @code{IFN_MULHRS} internal function directly maps to the @code{smulhrs} and @code{umulhrs} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_SAT_ADD} internal function @item @samp{IFN_SAT_ADD} -The @code{IFN_SAT_ADD} internal function directly maps to the @code{ssadd} and @code{usadd} instruction patterns depending on the sign of the first argument. +The @code{IFN_SAT_ADD} internal function directly maps to the @code{ssadd} and @code{usadd} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_SAT_SUB} internal function @item @samp{IFN_SAT_SUB} -The @code{IFN_SAT_SUB} internal function directly maps to the @code{sssub} and @code{ussub} instruction patterns depending on the sign of the first argument. +The @code{IFN_SAT_SUB} internal function directly maps to the @code{sssub} and @code{ussub} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_SAT_MUL} internal function @item @samp{IFN_SAT_MUL} -The @code{IFN_SAT_MUL} internal function directly maps to the @code{ssmul} and @code{usmul} instruction patterns depending on the sign of the first argument. +The @code{IFN_SAT_MUL} internal function directly maps to the @code{ssmul} and @code{usmul} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_SAT_TRUNC} internal function @item @samp{IFN_SAT_TRUNC} -The @code{IFN_SAT_TRUNC} internal function directly maps to the @code{sstrunc} and @code{ustrunc} instruction patterns depending on the sign of the first argument. +The @code{IFN_SAT_TRUNC} internal function directly maps to the @code{sstrunc} and @code{ustrunc} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_DIV} internal function @item @samp{IFN_COND_DIV} -The @code{IFN_COND_DIV} internal function directly maps to the @code{cond_sdiv} and @code{cond_udiv} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_DIV} internal function directly maps to the @code{cond_sdiv} and @code{cond_udiv} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_LEN_DIV} internal function @item @samp{IFN_COND_LEN_DIV} -The @code{IFN_COND_LEN_DIV} internal function directly maps to the @code{cond_len_sdiv} and @code{cond_len_udiv} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_LEN_DIV} internal function directly maps to the @code{cond_len_sdiv} and @code{cond_len_udiv} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_MOD} internal function @item @samp{IFN_COND_MOD} -The @code{IFN_COND_MOD} internal function directly maps to the @code{cond_smod} and @code{cond_umod} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_MOD} internal function directly maps to the @code{cond_smod} and @code{cond_umod} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_LEN_MOD} internal function @item @samp{IFN_COND_LEN_MOD} -The @code{IFN_COND_LEN_MOD} internal function directly maps to the @code{cond_len_smod} and @code{cond_len_umod} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_LEN_MOD} internal function directly maps to the @code{cond_len_smod} and @code{cond_len_umod} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_MIN} internal function @item @samp{IFN_COND_MIN} -The @code{IFN_COND_MIN} internal function directly maps to the @code{cond_smin} and @code{cond_umin} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_MIN} internal function directly maps to the @code{cond_smin} and @code{cond_umin} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_LEN_MIN} internal function @item @samp{IFN_COND_LEN_MIN} -The @code{IFN_COND_LEN_MIN} internal function directly maps to the @code{cond_len_smin} and @code{cond_len_umin} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_LEN_MIN} internal function directly maps to the @code{cond_len_smin} and @code{cond_len_umin} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_MAX} internal function @item @samp{IFN_COND_MAX} -The @code{IFN_COND_MAX} internal function directly maps to the @code{cond_smax} and @code{cond_umax} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_MAX} internal function directly maps to the @code{cond_smax} and @code{cond_umax} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_LEN_MAX} internal function @item @samp{IFN_COND_LEN_MAX} -The @code{IFN_COND_LEN_MAX} internal function directly maps to the @code{cond_len_smax} and @code{cond_len_umax} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_LEN_MAX} internal function directly maps to the @code{cond_len_smax} and @code{cond_len_umax} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_SHR} internal function @item @samp{IFN_COND_SHR} -The @code{IFN_COND_SHR} internal function directly maps to the @code{cond_ashr} and @code{cond_lshr} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_SHR} internal function directly maps to the @code{cond_ashr} and @code{cond_lshr} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_COND_LEN_SHR} internal function @item @samp{IFN_COND_LEN_SHR} -The @code{IFN_COND_LEN_SHR} internal function directly maps to the @code{cond_len_ashr} and @code{cond_len_lshr} instruction patterns depending on the sign of the first argument. +The @code{IFN_COND_LEN_SHR} internal function directly maps to the @code{cond_len_ashr} and @code{cond_len_lshr} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_REDUC_MAX} internal function @item @samp{IFN_REDUC_MAX} -The @code{IFN_REDUC_MAX} internal function directly maps to the @code{reduc_smax_scal} and @code{reduc_umax_scal} instruction patterns depending on the sign of the first argument. +The @code{IFN_REDUC_MAX} internal function directly maps to the @code{reduc_smax_scal} and @code{reduc_umax_scal} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_REDUC_MIN} internal function @item @samp{IFN_REDUC_MIN} -The @code{IFN_REDUC_MIN} internal function directly maps to the @code{reduc_smin_scal} and @code{reduc_umin_scal} instruction patterns depending on the sign of the first argument. +The @code{IFN_REDUC_MIN} internal function directly maps to the @code{reduc_smin_scal} and @code{reduc_umin_scal} instruction patterns, depending on the sign of the first argument. @cindex @code{IFN_VEC_WIDEN_PLUS} internal function @cindex @code{IFN_VEC_WIDEN_PLUS_LO} internal function @@ -558,7 +558,7 @@ The @code{IFN_REDUC_MIN} internal function directly maps to the @code{reduc_smin @cindex @code{IFN_VEC_WIDEN_PLUS_EVEN} internal function @cindex @code{IFN_VEC_WIDEN_PLUS_ODD} internal function @item @samp{IFN_VEC_WIDEN_PLUS} -The @code{IFN_VEC_WIDEN_PLUS} set of internal functions directly map to the @code{vec_widen_sadd} and @code{vec_widen_uadd} instruction patterns depending on the sign of the first argument. The @code{IFN_VEC_WIDEN_PLUS_LO} and @code{IFN_VEC_WIDEN_PLUS_HI} work on the low and highpart of a vector, the @code{IFN_VEC_WIDEN_PLUS_EVEN} and @code {IFN_VEC_WIDEN_PLUS_ODD} functions work on the even and odd elements of a vector. +The @code{IFN_VEC_WIDEN_PLUS} set of internal functions directly map to the @code{vec_widen_sadd} and @code{vec_widen_uadd} instruction patterns, depending on the sign of the first argument. The @code{IFN_VEC_WIDEN_PLUS_LO} and @code{IFN_VEC_WIDEN_PLUS_HI} work on the low and high parts of a vector, the @code{IFN_VEC_WIDEN_PLUS_EVEN} and @code {IFN_VEC_WIDEN_PLUS_ODD} functions work on the even and odd elements of a vector. @cindex @code{IFN_VEC_WIDEN_MINUS} internal function @cindex @code{IFN_VEC_WIDEN_MINUS_LO} internal function @@ -566,7 +566,7 @@ The @code{IFN_VEC_WIDEN_PLUS} set of internal functions directly map to the @cod @cindex @code{IFN_VEC_WIDEN_MINUS_EVEN} internal function @cindex @code{IFN_VEC_WIDEN_MINUS_ODD} internal function @item @samp{IFN_VEC_WIDEN_MINUS} -The @code{IFN_VEC_WIDEN_MINUS} set of internal functions directly map to the @code{vec_widen_ssub} and @code{vec_widen_usub} instruction patterns depending on the sign of the first argument. The @code{IFN_VEC_WIDEN_MINUS_LO} and @code{IFN_VEC_WIDEN_MINUS_HI} work on the low and highpart of a vector, the @code{IFN_VEC_WIDEN_MINUS_EVEN} and @code {IFN_VEC_WIDEN_MINUS_ODD} functions work on the even and odd elements of a vector. +The @code{IFN_VEC_WIDEN_MINUS} set of internal functions directly map to the @code{vec_widen_ssub} and @code{vec_widen_usub} instruction patterns, depending on the sign of the first argument. The @code{IFN_VEC_WIDEN_MINUS_LO} and @code{IFN_VEC_WIDEN_MINUS_HI} work on the low and high parts of a vector, the @code{IFN_VEC_WIDEN_MINUS_EVEN} and @code {IFN_VEC_WIDEN_MINUS_ODD} functions work on the even and odd elements of a vector. @cindex @code{IFN_VEC_WIDEN_ABD} internal function @cindex @code{IFN_VEC_WIDEN_ABD_LO} internal function @@ -574,266 +574,264 @@ The @code{IFN_VEC_WIDEN_MINUS} set of internal functions directly map to the @co @cindex @code{IFN_VEC_WIDEN_ABD_EVEN} internal function @cindex @code{IFN_VEC_WIDEN_ABD_ODD} internal function @item @samp{IFN_VEC_WIDEN_ABD} -The @code{IFN_VEC_WIDEN_ABD} set of internal functions directly map to the @code{vec_widen_sabd} and @code{vec_widen_uabd} instruction patterns depending on the sign of the first argument. The @code{IFN_VEC_WIDEN_ABD_LO} and @code{IFN_VEC_WIDEN_ABD_HI} work on the low and highpart of a vector, the @code{IFN_VEC_WIDEN_ABD_EVEN} and @code {IFN_VEC_WIDEN_ABD_ODD} functions work on the even and odd elements of a vector. +The @code{IFN_VEC_WIDEN_ABD} set of internal functions directly map to the @code{vec_widen_sabd} and @code{vec_widen_uabd} instruction patterns, depending on the sign of the first argument. The @code{IFN_VEC_WIDEN_ABD_LO} and @code{IFN_VEC_WIDEN_ABD_HI} work on the low and high parts of a vector, the @code{IFN_VEC_WIDEN_ABD_EVEN} and @code {IFN_VEC_WIDEN_ABD_ODD} functions work on the even and odd elements of a vector. @end table -@node Internal Functions corresponding to builtins -@subsection Internal Functions corresponding to builtins +@node Internal Functions Corresponding to Builtins +@subsection Internal Functions Corresponding to Builtins -These group of internal functions extend the @code{BUILT_IN_@var{X}} -builtins to wider set of types. +These group of internal functions extend the corresponding +@code{BUILT_IN_@var{X}} builtins to a wider set of types. @table @asis @cindex @code{IFN_ACOS} internal function @item @samp{IFN_ACOS} -The @code{IFN_ACOS} internal function directly maps to the @code{acos} instruction pattern for floating point modes. +The @code{IFN_ACOS} internal function directly maps to the @code{acos} instruction pattern for floating-point modes. @cindex @code{IFN_ACOSH} internal function @item @samp{IFN_ACOSH} -The @code{IFN_ACOSH} internal function directly maps to the @code{acosh} instruction pattern for floating point modes. +The @code{IFN_ACOSH} internal function directly maps to the @code{acosh} instruction pattern for floating-point modes. @cindex @code{IFN_ASIN} internal function @item @samp{IFN_ASIN} -The @code{IFN_ASIN} internal function directly maps to the @code{asin} instruction pattern for floating point modes. +The @code{IFN_ASIN} internal function directly maps to the @code{asin} instruction pattern for floating-point modes. @cindex @code{IFN_ASINH} internal function @item @samp{IFN_ASINH} -The @code{IFN_ASINH} internal function directly maps to the @code{asinh} instruction pattern for floating point modes. +The @code{IFN_ASINH} internal function directly maps to the @code{asinh} instruction pattern for floating-point modes. @cindex @code{IFN_ATAN} internal function @item @samp{IFN_ATAN} -The @code{IFN_ATAN} internal function directly maps to the @code{atan} instruction pattern for floating point modes. +The @code{IFN_ATAN} internal function directly maps to the @code{atan} instruction pattern for floating-point modes. @cindex @code{IFN_ATANH} internal function @item @samp{IFN_ATANH} -The @code{IFN_ATANH} internal function directly maps to the @code{atanh} instruction pattern for floating point modes. +The @code{IFN_ATANH} internal function directly maps to the @code{atanh} instruction pattern for floating-point modes. @cindex @code{IFN_COS} internal function @item @samp{IFN_COS} -The @code{IFN_COS} internal function directly maps to the @code{cos} instruction pattern for floating point modes. +The @code{IFN_COS} internal function directly maps to the @code{cos} instruction pattern for floating-point modes. @cindex @code{IFN_COSH} internal function @item @samp{IFN_COSH} -The @code{IFN_COSH} internal function directly maps to the @code{cosh} instruction pattern for floating point modes. +The @code{IFN_COSH} internal function directly maps to the @code{cosh} instruction pattern for floating-point modes. @cindex @code{IFN_EXP} internal function @item @samp{IFN_EXP} -The @code{IFN_EXP} internal function directly maps to the @code{exp} instruction pattern for floating point modes. +The @code{IFN_EXP} internal function directly maps to the @code{exp} instruction pattern for floating-point modes. @cindex @code{IFN_EXP10} internal function @item @samp{IFN_EXP10} -The @code{IFN_EXP10} internal function directly maps to the @code{exp10} instruction pattern for floating point modes. +The @code{IFN_EXP10} internal function directly maps to the @code{exp10} instruction pattern for floating-point modes. @cindex @code{IFN_EXP2} internal function @item @samp{IFN_EXP2} -The @code{IFN_EXP2} internal function directly maps to the @code{exp2} instruction pattern for floating point modes. +The @code{IFN_EXP2} internal function directly maps to the @code{exp2} instruction pattern for floating-point modes. @cindex @code{IFN_EXPM1} internal function @item @samp{IFN_EXPM1} -The @code{IFN_EXPM1} internal function directly maps to the @code{expm1} instruction pattern for floating point modes. +The @code{IFN_EXPM1} internal function directly maps to the @code{expm1} instruction pattern for floating-point modes. @cindex @code{IFN_LOG} internal function @item @samp{IFN_LOG} -The @code{IFN_LOG} internal function directly maps to the @code{log} instruction pattern for floating point modes. +The @code{IFN_LOG} internal function directly maps to the @code{log} instruction pattern for floating-point modes. @cindex @code{IFN_LOG10} internal function @item @samp{IFN_LOG10} -The @code{IFN_LOG10} internal function directly maps to the @code{log10} instruction pattern for floating point modes. +The @code{IFN_LOG10} internal function directly maps to the @code{log10} instruction pattern for floating-point modes. @cindex @code{IFN_LOG1P} internal function @item @samp{IFN_LOG1P} -The @code{IFN_LOG1P} internal function directly maps to the @code{log1p} instruction pattern for floating point modes. +The @code{IFN_LOG1P} internal function directly maps to the @code{log1p} instruction pattern for floating-point modes. @cindex @code{IFN_LOG2} internal function @item @samp{IFN_LOG2} -The @code{IFN_LOG2} internal function directly maps to the @code{log2} instruction pattern for floating point modes. +The @code{IFN_LOG2} internal function directly maps to the @code{log2} instruction pattern for floating-point modes. @cindex @code{IFN_LOGB} internal function @item @samp{IFN_LOGB} -The @code{IFN_LOGB} internal function directly maps to the @code{logb} instruction pattern for floating point modes. +The @code{IFN_LOGB} internal function directly maps to the @code{logb} instruction pattern for floating-point modes. @cindex @code{IFN_SIGNBIT} internal function @item @samp{IFN_SIGNBIT} -The @code{IFN_SIGNBIT} internal function directly maps to the @code{signbit} instruction pattern for floating point modes. +The @code{IFN_SIGNBIT} internal function directly maps to the @code{signbit} instruction pattern for floating-point modes. @cindex @code{IFN_SIGNIFICAND} internal function @item @samp{IFN_SIGNIFICAND} -The @code{IFN_SIGNIFICAND} internal function directly maps to the @code{significand} instruction pattern for floating point modes. +The @code{IFN_SIGNIFICAND} internal function directly maps to the @code{significand} instruction pattern for floating-point modes. @cindex @code{IFN_SIN} internal function @item @samp{IFN_SIN} -The @code{IFN_SIN} internal function directly maps to the @code{sin} instruction pattern for floating point modes. +The @code{IFN_SIN} internal function directly maps to the @code{sin} instruction pattern for floating-point modes. @cindex @code{IFN_SINH} internal function @item @samp{IFN_SINH} -The @code{IFN_SINH} internal function directly maps to the @code{sinh} instruction pattern for floating point modes. +The @code{IFN_SINH} internal function directly maps to the @code{sinh} instruction pattern for floating-point modes. @cindex @code{IFN_SQRT} internal function @item @samp{IFN_SQRT} -The @code{IFN_SQRT} internal function directly maps to the @code{sqrt} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_SQRT} internal function directly maps to the @code{sqrt} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_TAN} internal function @item @samp{IFN_TAN} -The @code{IFN_TAN} internal function directly maps to the @code{tan} instruction pattern for floating point modes. +The @code{IFN_TAN} internal function directly maps to the @code{tan} instruction pattern for floating-point modes. @cindex @code{IFN_TANH} internal function @item @samp{IFN_TANH} -The @code{IFN_TANH} internal function directly maps to the @code{tanh} instruction pattern for floating point modes. -# 399 "internal-fn.def" +The @code{IFN_TANH} internal function directly maps to the @code{tanh} instruction pattern for floating-point modes. @cindex @code{IFN_ICEIL} internal function @item @samp{IFN_ICEIL} -The @code{IFN_ICEIL} internal function directly maps to the @code{lceil} instruction pattern for floating point modes. +The @code{IFN_ICEIL} internal function directly maps to the @code{lceil} instruction pattern for floating-point modes. @cindex @code{IFN_IFLOOR} internal function @item @samp{IFN_IFLOOR} -The @code{IFN_IFLOOR} internal function directly maps to the @code{lfloor} instruction pattern for floating point modes. +The @code{IFN_IFLOOR} internal function directly maps to the @code{lfloor} instruction pattern for floating-point modes. @cindex @code{IFN_IRINT} internal function @item @samp{IFN_IRINT} -The @code{IFN_IRINT} internal function directly maps to the @code{lrint} instruction pattern for floating point modes. +The @code{IFN_IRINT} internal function directly maps to the @code{lrint} instruction pattern for floating-point modes. @cindex @code{IFN_IROUND} internal function @item @samp{IFN_IROUND} -The @code{IFN_IROUND} internal function directly maps to the @code{lround} instruction pattern for floating point modes. +The @code{IFN_IROUND} internal function directly maps to the @code{lround} instruction pattern for floating-point modes. @cindex @code{IFN_LCEIL} internal function @item @samp{IFN_LCEIL} -The @code{IFN_LCEIL} internal function directly maps to the @code{lceil} instruction pattern for floating point modes. +The @code{IFN_LCEIL} internal function directly maps to the @code{lceil} instruction pattern for floating-point modes. @cindex @code{IFN_LFLOOR} internal function @item @samp{IFN_LFLOOR} -The @code{IFN_LFLOOR} internal function directly maps to the @code{lfloor} instruction pattern for floating point modes. +The @code{IFN_LFLOOR} internal function directly maps to the @code{lfloor} instruction pattern for floating-point modes. @cindex @code{IFN_LRINT} internal function @item @samp{IFN_LRINT} -The @code{IFN_LRINT} internal function directly maps to the @code{lrint} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_LRINT} internal function directly maps to the @code{lrint} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_LROUND} internal function @item @samp{IFN_LROUND} -The @code{IFN_LROUND} internal function directly maps to the @code{lround} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_LROUND} internal function directly maps to the @code{lround} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_LLCEIL} internal function @item @samp{IFN_LLCEIL} -The @code{IFN_LLCEIL} internal function directly maps to the @code{lceil} instruction pattern for floating point modes. +The @code{IFN_LLCEIL} internal function directly maps to the @code{lceil} instruction pattern for floating-point modes. @cindex @code{IFN_LLFLOOR} internal function @item @samp{IFN_LLFLOOR} -The @code{IFN_LLFLOOR} internal function directly maps to the @code{lfloor} instruction pattern for floating point modes. +The @code{IFN_LLFLOOR} internal function directly maps to the @code{lfloor} instruction pattern for floating-point modes. @cindex @code{IFN_LLRINT} internal function @item @samp{IFN_LLRINT} -The @code{IFN_LLRINT} internal function directly maps to the @code{lrint} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_LLRINT} internal function directly maps to the @code{lrint} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_LLROUND} internal function @item @samp{IFN_LLROUND} -The @code{IFN_LLROUND} internal function directly maps to the @code{lround} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_LLROUND} internal function directly maps to the @code{lround} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_CEIL} internal function @item @samp{IFN_CEIL} -The @code{IFN_CEIL} internal function directly maps to the @code{ceil} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_CEIL} internal function directly maps to the @code{ceil} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_FLOOR} internal function @item @samp{IFN_FLOOR} -The @code{IFN_FLOOR} internal function directly maps to the @code{floor} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_FLOOR} internal function directly maps to the @code{floor} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_NEARBYINT} internal function @item @samp{IFN_NEARBYINT} -The @code{IFN_NEARBYINT} internal function directly maps to the @code{nearbyint} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_NEARBYINT} internal function directly maps to the @code{nearbyint} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_RINT} internal function @item @samp{IFN_RINT} -The @code{IFN_RINT} internal function directly maps to the @code{rint} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_RINT} internal function directly maps to the @code{rint} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_ROUND} internal function @item @samp{IFN_ROUND} -The @code{IFN_ROUND} internal function directly maps to the @code{round} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_ROUND} internal function directly maps to the @code{round} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_ROUNDEVEN} internal function @item @samp{IFN_ROUNDEVEN} -The @code{IFN_ROUNDEVEN} internal function directly maps to the @code{roundeven} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_ROUNDEVEN} internal function directly maps to the @code{roundeven} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_TRUNC} internal function @item @samp{IFN_TRUNC} -The @code{IFN_TRUNC} internal function directly maps to the @code{btrunc} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_TRUNC} internal function directly maps to the @code{btrunc} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_ATAN2} internal function @item @samp{IFN_ATAN2} -The @code{IFN_ATAN2} internal function directly maps to the @code{atan2} instruction pattern for floating point modes. +The @code{IFN_ATAN2} internal function directly maps to the @code{atan2} instruction pattern for floating-point modes. @cindex @code{IFN_COPYSIGN} internal function @item @samp{IFN_COPYSIGN} -The @code{IFN_COPYSIGN} internal function directly maps to the @code{copysign} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_COPYSIGN} internal function directly maps to the @code{copysign} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_FMOD} internal function @item @samp{IFN_FMOD} -The @code{IFN_FMOD} internal function directly maps to the @code{fmod} instruction pattern for floating point modes. +The @code{IFN_FMOD} internal function directly maps to the @code{fmod} instruction pattern for floating-point modes. @cindex @code{IFN_HYPOT} internal function @item @samp{IFN_HYPOT} -The @code{IFN_HYPOT} internal function directly maps to the @code{hypot} instruction pattern for floating point modes. +The @code{IFN_HYPOT} internal function directly maps to the @code{hypot} instruction pattern for floating-point modes. @cindex @code{IFN_POW} internal function @item @samp{IFN_POW} -The @code{IFN_POW} internal function directly maps to the @code{pow} instruction pattern for floating point modes. +The @code{IFN_POW} internal function directly maps to the @code{pow} instruction pattern for floating-point modes. @cindex @code{IFN_REMAINDER} internal function @item @samp{IFN_REMAINDER} -The @code{IFN_REMAINDER} internal function directly maps to the @code{remainder} instruction pattern for floating point modes. +The @code{IFN_REMAINDER} internal function directly maps to the @code{remainder} instruction pattern for floating-point modes. @cindex @code{IFN_SCALB} internal function @item @samp{IFN_SCALB} -The @code{IFN_SCALB} internal function directly maps to the @code{scalb} instruction pattern for floating point modes. +The @code{IFN_SCALB} internal function directly maps to the @code{scalb} instruction pattern for floating-point modes. @cindex @code{IFN_FMIN} internal function @item @samp{IFN_FMIN} -The @code{IFN_FMIN} internal function directly maps to the @code{fmin} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_FMIN} internal function directly maps to the @code{fmin} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_FMAX} internal function @item @samp{IFN_FMAX} -The @code{IFN_FMAX} internal function directly maps to the @code{fmax} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_FMAX} internal function directly maps to the @code{fmax} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_LDEXP} internal function @item @samp{IFN_LDEXP} -The @code{IFN_LDEXP} internal function directly maps to the @code{ldexp} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_LDEXP} internal function directly maps to the @code{ldexp} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_FMA} internal function @item @samp{IFN_FMA} -The @code{IFN_FMA} internal function directly maps to the @code{fma} instruction pattern for floating point modes including those for @code{_Float@var{n}} +The @code{IFN_FMA} internal function directly maps to the @code{fma} instruction pattern for floating-point modes including those for @code{_Float@var{n}} @cindex @code{IFN_CLRSB} internal function @item @samp{IFN_CLRSB} -The @code{IFN_CLRSB} internal function directly maps to the @code{clrsb} instruction pattern for integer and integer vector point modes. +The @code{IFN_CLRSB} internal function directly maps to the @code{clrsb} instruction pattern for integer and integer vector modes. @cindex @code{IFN_CLZ} internal function @item @samp{IFN_CLZ} -The @code{IFN_CLZ} internal function directly maps to the @code{clz} instruction pattern for integer and integer vector point modes. +The @code{IFN_CLZ} internal function directly maps to the @code{clz} instruction pattern for integer and integer vector modes. @cindex @code{IFN_CTZ} internal function @item @samp{IFN_CTZ} -The @code{IFN_CTZ} internal function directly maps to the @code{ctz} instruction pattern for integer and integer vector point modes. +The @code{IFN_CTZ} internal function directly maps to the @code{ctz} instruction pattern for integer and integer vector modes. @cindex @code{IFN_FFS} internal function @item @samp{IFN_FFS} -The @code{IFN_FFS} internal function directly maps to the @code{ffs} instruction pattern for integer and integer vector point modes. +The @code{IFN_FFS} internal function directly maps to the @code{ffs} instruction pattern for integer and integer vector modes. @cindex @code{IFN_PARITY} internal function @item @samp{IFN_PARITY} -The @code{IFN_PARITY} internal function directly maps to the @code{parity} instruction pattern for integer and integer vector point modes. +The @code{IFN_PARITY} internal function directly maps to the @code{parity} instruction pattern for integer and integer vector modes. @cindex @code{IFN_POPCOUNT} internal function @item @samp{IFN_POPCOUNT} -The @code{IFN_POPCOUNT} internal function directly maps to the @code{popcount} instruction pattern for integer and integer vector point modes. +The @code{IFN_POPCOUNT} internal function directly maps to the @code{popcount} instruction pattern for integer and integer vector modes. @end table @node Other Internal Functions @subsection Other Internal Functions -@table -@asis +@table @asis @cindex @code{IFN_GOMP_TARGET_REV} internal function @item @samp{IFN_GOMP_TARGET_REV}
