On Thu, 14 May 2026, Andrew Pinski wrote: > On Thu, May 14, 2026 at 9:54 AM Alex Coplan <[email protected]> wrote: > > > > On 31/03/2026 19:48, 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. > > > > Thanks for doing this, it is a good starting point. > > > > The main questions I usually want to ask about an unfamiliar > > internal function are: > > 1. How many arguments does it take? > > 2. What are the types of all the arguments / return value? > > 3. What is the interpretation/purpose of each argument? > > 4. What are the semantics of the IFN call?
Yes, I was hoping to extend the documentation, esp. for the IFNs not directly mapping to an optab. > > At the moment the documentation doesn't really answer any of these > > questions. Would you be open to it being extended towards being able to > > answer some or all of these questions? Or do you think that information > > (at least for directly-mapped ifns) belongs more in the optab docs? I'd > > argue that at least the type information is worth including in the IFN > > docs, as some of that is lost when lowering to optabs and RTL modes. > > > Would be interested to hear your thoughts on this. I think for all directly mapped IFNs md.texi should be the primary information and we should avoid duplicating too much info. Clickable cross-references might be nice. There are quite a few IFNs which use custom expanders because while there's optabs, the IFN has extra arguments and/or argument positions are different from optab operand positions. That's things that should be documented. > Note I am in the process of collecting information on the ASAN_* > internal functions in > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125224 > So I can update the documentation for the same reason as above. > I have not looked into styling the information yet which is why I Have > not posted a patch yet. > I was looking into a bug report about asan producing a bad error > message when I was trying to figure out what each argument meant here. > If you have any preference to how these information should be styled > let me know so I can make/use the template here too. I would suggest that whoever starts posts documentation update for a single IFN so we can weight in. Pick sth not overly trivial for that, of course. Richard. > Thanks, > Drea > > > > > Thanks, > > Alex > > > > > > > > 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. > > > > > > v2: wrap long lines and integrate Sandras changes > > > > > > Built and inspected using texinfo 7.1. > > > > > > OK for trunk? > > > > > > Thanks, > > > Richard. > > > > > > PR middle-end/124634 > > > * doc/ifn.texi: New file. > > > * doc/gccint.texi: Include ifn.texi. > > > * Makefile.in (TEXI_GCCINT_FILES): Add ifn.texi. > > > > > > Co-Authored-By: [email protected] > > > --- > > > gcc/Makefile.in | 2 +- > > > gcc/doc/gccint.texi | 2 + > > > gcc/doc/ifn.texi | 1539 +++++++++++++++++++++++++++++++++++++++++++ > > > 3 files changed, 1542 insertions(+), 1 deletion(-) > > > create mode 100644 gcc/doc/ifn.texi > > > > > > diff --git a/gcc/Makefile.in b/gcc/Makefile.in > > > index 6355ab02582..775080ef0f3 100644 > > > --- a/gcc/Makefile.in > > > +++ b/gcc/Makefile.in > > > @@ -3809,7 +3809,7 @@ TEXI_GCCINT_FILES = gccint.texi gcc-common.texi > > > gcc-vers.texi \ > > > sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi \ > > > loop.texi generic.texi gimple.texi plugins.texi optinfo.texi \ > > > match-and-simplify.texi analyzer.texi ux.texi poly-int.texi \ > > > - params.texi specs.texi > > > + params.texi specs.texi ifn.texi > > > > > > TEXI_GCCINSTALL_FILES = install.texi fdl.texi \ > > > gcc-common.texi gcc-vers.texi > > > diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi > > > index 9d3b2f23428..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. > > > @@ -155,6 +156,7 @@ Additional tutorial information is linked to from > > > @include poly-int.texi > > > @include generic.texi > > > @include gimple.texi > > > +@include ifn.texi > > > @include tree-ssa.texi > > > @include rtl.texi > > > @include cfg.texi > > > diff --git a/gcc/doc/ifn.texi b/gcc/doc/ifn.texi > > > new file mode 100644 > > > index 00000000000..6d1c190b5b1 > > > --- /dev/null > > > +++ b/gcc/doc/ifn.texi > > > @@ -0,0 +1,1539 @@ > > > +@c Copyright (C) 1988-2026 Free Software Foundation, Inc. > > > +@c This is part of the GCC manual. > > > +@c For copying conditions, see the file gcc.texi. > > > + > > > +@node Internal Functions > > > +@chapter Internal Functions in GENERIC and GIMPLE > > > +@cindex internal functions > > > +@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 > > > +pre-defined semantics that are inline expanded to RTL rather than to > > > +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}; just a single @code{IFN_SIN}. > > > + > > > +Internal functions are declared in @file{internal-fn.def}. > > > + > > > +@menu > > > +* Internal Function API:: How to operate on internal functions. > > > +* Table of Internal Functions:: > > > +@end menu > > > + > > > +@node Internal Function 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. > > > + > > > +FIXME: not documented yet. > > > + > > > +The following are internal function specific helpers working > > > +on the @code{internal_fn} enumeration type. > > > + > > > +FIXME: not documented yet. > > > + > > > +@node Table of Internal Functions > > > +@section Table of Internal Functions > > > + > > > +@menu > > > +* Direct Internal Functions:: > > > +* Internal Functions Corresponding to Builtins:: > > > +* Other Internal Functions:: > > > +@end menu > > > + > > > +@node Direct Internal Functions > > > +@subsection Direct Internal Functions > > > + > > > +@table @asis > > > + > > > +@cindex @code{IFN_CRC} internal function > > > +@item @samp{IFN_CRC} > > > +The @code{IFN_CRC} internal function directly maps to the @code{crc} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_CRC_REV} internal function > > > +@item @samp{IFN_CRC_REV} > > > +The @code{IFN_CRC_REV} internal function directly maps to the > > > @code{crc_rev} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LOAD} internal function > > > +@item @samp{IFN_MASK_LOAD} > > > +The @code{IFN_MASK_LOAD} internal function directly maps to the > > > @code{maskload} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_LOAD_LANES} internal function > > > +@item @samp{IFN_LOAD_LANES} > > > +The @code{IFN_LOAD_LANES} internal function directly maps to the > > > +@code{vec_load_lanes} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LOAD_LANES} internal function > > > +@item @samp{IFN_MASK_LOAD_LANES} > > > +The @code{IFN_MASK_LOAD_LANES} internal function directly maps to the > > > +@code{vec_mask_load_lanes} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_LOAD_LANES} internal function > > > +@item @samp{IFN_MASK_LEN_LOAD_LANES} > > > +The @code{IFN_MASK_LEN_LOAD_LANES} internal function directly maps to the > > > +@code{vec_mask_len_load_lanes} instruction pattern. > > > + > > > +@cindex @code{IFN_GATHER_LOAD} internal function > > > +@item @samp{IFN_GATHER_LOAD} > > > +The @code{IFN_GATHER_LOAD} internal function directly maps to the > > > +@code{gather_load} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_GATHER_LOAD} internal function > > > +@item @samp{IFN_MASK_GATHER_LOAD} > > > +The @code{IFN_MASK_GATHER_LOAD} internal function directly maps to the > > > +@code{mask_gather_load} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_GATHER_LOAD} internal function > > > +@item @samp{IFN_MASK_LEN_GATHER_LOAD} > > > +The @code{IFN_MASK_LEN_GATHER_LOAD} internal function directly maps to > > > the > > > +@code{mask_len_gather_load} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_STRIDED_LOAD} internal function > > > +@item @samp{IFN_MASK_LEN_STRIDED_LOAD} > > > +The @code{IFN_MASK_LEN_STRIDED_LOAD} internal function directly maps to > > > the > > > +@code{mask_len_strided_load} instruction pattern. > > > + > > > +@cindex @code{IFN_LEN_LOAD} internal function > > > +@item @samp{IFN_LEN_LOAD} > > > +The @code{IFN_LEN_LOAD} internal function directly maps to the > > > @code{len_load} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_LOAD} internal function > > > +@item @samp{IFN_MASK_LEN_LOAD} > > > +The @code{IFN_MASK_LEN_LOAD} internal function directly maps to the > > > +@code{mask_len_load} instruction pattern. > > > + > > > +@cindex @code{IFN_SCATTER_STORE} internal function > > > +@item @samp{IFN_SCATTER_STORE} > > > +The @code{IFN_SCATTER_STORE} internal function directly maps to the > > > +@code{scatter_store} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_SCATTER_STORE} internal function > > > +@item @samp{IFN_MASK_SCATTER_STORE} > > > +The @code{IFN_MASK_SCATTER_STORE} internal function directly maps to the > > > +@code{mask_scatter_store} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_SCATTER_STORE} internal function > > > +@item @samp{IFN_MASK_LEN_SCATTER_STORE} > > > +The @code{IFN_MASK_LEN_SCATTER_STORE} internal function directly maps to > > > the > > > +@code{mask_len_scatter_store} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_STRIDED_STORE} internal function > > > +@item @samp{IFN_MASK_LEN_STRIDED_STORE} > > > +The @code{IFN_MASK_LEN_STRIDED_STORE} internal function directly maps to > > > the > > > +@code{mask_len_strided_store} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_STORE} internal function > > > +@item @samp{IFN_MASK_STORE} > > > +The @code{IFN_MASK_STORE} internal function directly maps to the > > > +@code{maskstore} instruction pattern. > > > + > > > +@cindex @code{IFN_STORE_LANES} internal function > > > +@item @samp{IFN_STORE_LANES} > > > +The @code{IFN_STORE_LANES} internal function directly maps to the > > > +@code{vec_store_lanes} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_STORE_LANES} internal function > > > +@item @samp{IFN_MASK_STORE_LANES} > > > +The @code{IFN_MASK_STORE_LANES} internal function directly maps to the > > > +@code{vec_mask_store_lanes} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_STORE_LANES} internal function > > > +@item @samp{IFN_MASK_LEN_STORE_LANES} > > > +The @code{IFN_MASK_LEN_STORE_LANES} internal function directly maps to > > > the > > > +@code{vec_mask_len_store_lanes} instruction pattern. > > > + > > > +@cindex @code{IFN_VCOND_MASK} internal function > > > +@item @samp{IFN_VCOND_MASK} > > > +The @code{IFN_VCOND_MASK} internal function directly maps to the > > > +@code{vcond_mask} instruction pattern. > > > + > > > +@cindex @code{IFN_VCOND_MASK_LEN} internal function > > > +@item @samp{IFN_VCOND_MASK_LEN} > > > +The @code{IFN_VCOND_MASK_LEN} internal function directly maps to the > > > +@code{vcond_mask_len} instruction pattern. > > > + > > > +@cindex @code{IFN_VEC_SET} internal function > > > +@item @samp{IFN_VEC_SET} > > > +The @code{IFN_VEC_SET} internal function directly maps to the > > > @code{vec_set} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_VEC_EXTRACT} internal function > > > +@item @samp{IFN_VEC_EXTRACT} > > > +The @code{IFN_VEC_EXTRACT} internal function directly maps to the > > > +@code{vec_extract} instruction pattern. > > > + > > > +@cindex @code{IFN_LEN_STORE} internal function > > > +@item @samp{IFN_LEN_STORE} > > > +The @code{IFN_LEN_STORE} internal function directly maps to the > > > +@code{len_store} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_STORE} internal function > > > +@item @samp{IFN_MASK_LEN_STORE} > > > +The @code{IFN_MASK_LEN_STORE} internal function directly maps to the > > > +@code{mask_len_store} instruction pattern. > > > + > > > +@cindex @code{IFN_WHILE_ULT} internal function > > > +@item @samp{IFN_WHILE_ULT} > > > +The @code{IFN_WHILE_ULT} internal function directly maps to the > > > +@code{while_ult} instruction pattern. > > > + > > > +@cindex @code{IFN_SELECT_VL} internal function > > > +@item @samp{IFN_SELECT_VL} > > > +The @code{IFN_SELECT_VL} internal function directly maps to the > > > +@code{select_vl} instruction pattern. > > > + > > > +@cindex @code{IFN_CHECK_RAW_PTRS} internal function > > > +@item @samp{IFN_CHECK_RAW_PTRS} > > > +The @code{IFN_CHECK_RAW_PTRS} internal function directly maps to the > > > +@code{check_raw_ptrs} instruction pattern. > > > + > > > +@cindex @code{IFN_CHECK_WAR_PTRS} internal function > > > +@item @samp{IFN_CHECK_WAR_PTRS} > > > +The @code{IFN_CHECK_WAR_PTRS} internal function directly maps to the > > > +@code{check_war_ptrs} instruction pattern. > > > + > > > +@cindex @code{IFN_VEC_SHL_INSERT} internal function > > > +@item @samp{IFN_VEC_SHL_INSERT} > > > +The @code{IFN_VEC_SHL_INSERT} internal function directly maps to the > > > +@code{vec_shl_insert} instruction pattern. > > > + > > > +@cindex @code{IFN_DIV_POW2} internal function > > > +@item @samp{IFN_DIV_POW2} > > > +The @code{IFN_DIV_POW2} internal function directly maps to the > > > @code{sdiv_pow2} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_FMS} internal function > > > +@item @samp{IFN_FMS} > > > +The @code{IFN_FMS} internal function directly maps to the @code{fms} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_FNMA} internal function > > > +@item @samp{IFN_FNMA} > > > +The @code{IFN_FNMA} internal function directly maps to the @code{fnma} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_FNMS} internal function > > > +@item @samp{IFN_FNMS} > > > +The @code{IFN_FNMS} internal function directly maps to the @code{fnms} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_COND_SQRT} internal function > > > +@item @samp{IFN_COND_SQRT} > > > +The @code{IFN_COND_SQRT} internal function directly maps to the > > > +@code{cond_sqrt} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_SQRT} internal function > > > +@item @samp{IFN_COND_LEN_SQRT} > > > +The @code{IFN_COND_LEN_SQRT} internal function directly maps to the > > > +@code{cond_len_sqrt} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_CEIL} internal function > > > +@item @samp{IFN_COND_CEIL} > > > +The @code{IFN_COND_CEIL} internal function directly maps to the > > > +@code{cond_ceil} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_CEIL} internal function > > > +@item @samp{IFN_COND_LEN_CEIL} > > > +The @code{IFN_COND_LEN_CEIL} internal function directly maps to the > > > +@code{cond_len_ceil} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_FLOOR} internal function > > > +@item @samp{IFN_COND_FLOOR} > > > +The @code{IFN_COND_FLOOR} internal function directly maps to the > > > +@code{cond_floor} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_FLOOR} internal function > > > +@item @samp{IFN_COND_LEN_FLOOR} > > > +The @code{IFN_COND_LEN_FLOOR} internal function directly maps to the > > > +@code{cond_len_floor} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_ROUND} internal function > > > +@item @samp{IFN_COND_ROUND} > > > +The @code{IFN_COND_ROUND} internal function directly maps to the > > > +@code{cond_round} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_ROUND} internal function > > > +@item @samp{IFN_COND_LEN_ROUND} > > > +The @code{IFN_COND_LEN_ROUND} internal function directly maps to the > > > +@code{cond_len_round} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_RINT} internal function > > > +@item @samp{IFN_COND_RINT} > > > +The @code{IFN_COND_RINT} internal function directly maps to the > > > +@code{cond_rint} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_RINT} internal function > > > +@item @samp{IFN_COND_LEN_RINT} > > > +The @code{IFN_COND_LEN_RINT} internal function directly maps to the > > > +@code{cond_len_rint} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_ADD} internal function > > > +@item @samp{IFN_COND_ADD} > > > +The @code{IFN_COND_ADD} internal function directly maps to the > > > +@code{cond_add} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_ADD} internal function > > > +@item @samp{IFN_COND_LEN_ADD} > > > +The @code{IFN_COND_LEN_ADD} internal function directly maps to the > > > +@code{cond_len_add} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_SUB} internal function > > > +@item @samp{IFN_COND_SUB} > > > +The @code{IFN_COND_SUB} internal function directly maps to the > > > +@code{cond_sub} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_SUB} internal function > > > +@item @samp{IFN_COND_LEN_SUB} > > > +The @code{IFN_COND_LEN_SUB} internal function directly maps to the > > > +@code{cond_len_sub} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_MUL} internal function > > > +@item @samp{IFN_COND_MUL} > > > +The @code{IFN_COND_MUL} internal function directly maps to the > > > +@code{cond_smul} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_MUL} internal function > > > +@item @samp{IFN_COND_LEN_MUL} > > > +The @code{IFN_COND_LEN_MUL} internal function directly maps to the > > > +@code{cond_len_smul} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_RDIV} internal function > > > +@item @samp{IFN_COND_RDIV} > > > +The @code{IFN_COND_RDIV} internal function directly maps to the > > > +@code{cond_sdiv} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_RDIV} internal function > > > +@item @samp{IFN_COND_LEN_RDIV} > > > +The @code{IFN_COND_LEN_RDIV} internal function directly maps to the > > > +@code{cond_len_sdiv} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_COPYSIGN} internal function > > > +@item @samp{IFN_COND_COPYSIGN} > > > +The @code{IFN_COND_COPYSIGN} internal function directly maps to the > > > +@code{cond_copysign} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_COPYSIGN} internal function > > > +@item @samp{IFN_COND_LEN_COPYSIGN} > > > +The @code{IFN_COND_LEN_COPYSIGN} internal function directly maps to the > > > +@code{cond_len_copysign} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_FMIN} internal function > > > +@item @samp{IFN_COND_FMIN} > > > +The @code{IFN_COND_FMIN} internal function directly maps to the > > > +@code{cond_fmin} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_FMIN} internal function > > > +@item @samp{IFN_COND_LEN_FMIN} > > > +The @code{IFN_COND_LEN_FMIN} internal function directly maps to the > > > +@code{cond_len_fmin} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_FMAX} internal function > > > +@item @samp{IFN_COND_FMAX} > > > +The @code{IFN_COND_FMAX} internal function directly maps to the > > > +@code{cond_fmax} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_FMAX} internal function > > > +@item @samp{IFN_COND_LEN_FMAX} > > > +The @code{IFN_COND_LEN_FMAX} internal function directly maps to the > > > +@code{cond_len_fmax} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_AND} internal function > > > +@item @samp{IFN_COND_AND} > > > +The @code{IFN_COND_AND} internal function directly maps to the > > > +@code{cond_and} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_AND} internal function > > > +@item @samp{IFN_COND_LEN_AND} > > > +The @code{IFN_COND_LEN_AND} internal function directly maps to the > > > +@code{cond_len_and} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_IOR} internal function > > > +@item @samp{IFN_COND_IOR} > > > +The @code{IFN_COND_IOR} internal function directly maps to the > > > +@code{cond_ior} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_IOR} internal function > > > +@item @samp{IFN_COND_LEN_IOR} > > > +The @code{IFN_COND_LEN_IOR} internal function directly maps to the > > > +@code{cond_len_ior} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_XOR} internal function > > > +@item @samp{IFN_COND_XOR} > > > +The @code{IFN_COND_XOR} internal function directly maps to the > > > +@code{cond_xor} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_XOR} internal function > > > +@item @samp{IFN_COND_LEN_XOR} > > > +The @code{IFN_COND_LEN_XOR} internal function directly maps to the > > > +@code{cond_len_xor} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_SHL} internal function > > > +@item @samp{IFN_COND_SHL} > > > +The @code{IFN_COND_SHL} internal function directly maps to the > > > +@code{cond_ashl} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_SHL} internal function > > > +@item @samp{IFN_COND_LEN_SHL} > > > +The @code{IFN_COND_LEN_SHL} internal function directly maps to the > > > +@code{cond_len_ashl} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_FMA} internal function > > > +@item @samp{IFN_COND_FMA} > > > +The @code{IFN_COND_FMA} internal function directly maps to the > > > +@code{cond_fma} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_FMA} internal function > > > +@item @samp{IFN_COND_LEN_FMA} > > > +The @code{IFN_COND_LEN_FMA} internal function directly maps to the > > > +@code{cond_len_fma} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_FMS} internal function > > > +@item @samp{IFN_COND_FMS} > > > +The @code{IFN_COND_FMS} internal function directly maps to the > > > +@code{cond_fms} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_FMS} internal function > > > +@item @samp{IFN_COND_LEN_FMS} > > > +The @code{IFN_COND_LEN_FMS} internal function directly maps to the > > > +@code{cond_len_fms} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_FNMA} internal function > > > +@item @samp{IFN_COND_FNMA} > > > +The @code{IFN_COND_FNMA} internal function directly maps to the > > > +@code{cond_fnma} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_FNMA} internal function > > > +@item @samp{IFN_COND_LEN_FNMA} > > > +The @code{IFN_COND_LEN_FNMA} internal function directly maps to the > > > +@code{cond_len_fnma} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_FNMS} internal function > > > +@item @samp{IFN_COND_FNMS} > > > +The @code{IFN_COND_FNMS} internal function directly maps to the > > > +@code{cond_fnms} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_FNMS} internal function > > > +@item @samp{IFN_COND_LEN_FNMS} > > > +The @code{IFN_COND_LEN_FNMS} internal function directly maps to the > > > +@code{cond_len_fnms} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_NEG} internal function > > > +@item @samp{IFN_COND_NEG} > > > +The @code{IFN_COND_NEG} internal function directly maps to the > > > +@code{cond_neg} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_NEG} internal function > > > +@item @samp{IFN_COND_LEN_NEG} > > > +The @code{IFN_COND_LEN_NEG} internal function directly maps to the > > > +@code{cond_len_neg} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_NOT} internal function > > > +@item @samp{IFN_COND_NOT} > > > +The @code{IFN_COND_NOT} internal function directly maps to the > > > +@code{cond_one_cmpl} instruction pattern. > > > + > > > +@cindex @code{IFN_COND_LEN_NOT} internal function > > > +@item @samp{IFN_COND_LEN_NOT} > > > +The @code{IFN_COND_LEN_NOT} internal function directly maps to the > > > +@code{cond_len_one_cmpl} instruction pattern. > > > + > > > +@cindex @code{IFN_RSQRT} internal function > > > +@item @samp{IFN_RSQRT} > > > +The @code{IFN_RSQRT} internal function directly maps to the @code{rsqrt} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_PLUS} internal function > > > +@item @samp{IFN_REDUC_PLUS} > > > +The @code{IFN_REDUC_PLUS} internal function directly maps to the > > > +@code{reduc_plus_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_FMAX} internal function > > > +@item @samp{IFN_REDUC_FMAX} > > > +The @code{IFN_REDUC_FMAX} internal function directly maps to the > > > +@code{reduc_fmax_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_FMIN} internal function > > > +@item @samp{IFN_REDUC_FMIN} > > > +The @code{IFN_REDUC_FMIN} internal function directly maps to the > > > +@code{reduc_fmin_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_AND} internal function > > > +@item @samp{IFN_REDUC_AND} > > > +The @code{IFN_REDUC_AND} internal function directly maps to the > > > +@code{reduc_and_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_IOR} internal function > > > +@item @samp{IFN_REDUC_IOR} > > > +The @code{IFN_REDUC_IOR} internal function directly maps to the > > > +@code{reduc_ior_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_XOR} internal function > > > +@item @samp{IFN_REDUC_XOR} > > > +The @code{IFN_REDUC_XOR} internal function directly maps to the > > > +@code{reduc_xor_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_SBOOL_AND} internal function > > > +@item @samp{IFN_REDUC_SBOOL_AND} > > > +The @code{IFN_REDUC_SBOOL_AND} internal function directly maps to the > > > +@code{reduc_sbool_and_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_SBOOL_IOR} internal function > > > +@item @samp{IFN_REDUC_SBOOL_IOR} > > > +The @code{IFN_REDUC_SBOOL_IOR} internal function directly maps to the > > > +@code{reduc_sbool_ior_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_REDUC_SBOOL_XOR} internal function > > > +@item @samp{IFN_REDUC_SBOOL_XOR} > > > +The @code{IFN_REDUC_SBOOL_XOR} internal function directly maps to the > > > +@code{reduc_sbool_xor_scal} instruction pattern. > > > + > > > +@cindex @code{IFN_EXTRACT_LAST} internal function > > > +@item @samp{IFN_EXTRACT_LAST} > > > +The @code{IFN_EXTRACT_LAST} internal function directly maps to the > > > +@code{extract_last} instruction pattern. > > > + > > > +@cindex @code{IFN_FOLD_EXTRACT_LAST} internal function > > > +@item @samp{IFN_FOLD_EXTRACT_LAST} > > > +The @code{IFN_FOLD_EXTRACT_LAST} internal function directly maps to the > > > +@code{fold_extract_last} instruction pattern. > > > + > > > +@cindex @code{IFN_LEN_FOLD_EXTRACT_LAST} internal function > > > +@item @samp{IFN_LEN_FOLD_EXTRACT_LAST} > > > +The @code{IFN_LEN_FOLD_EXTRACT_LAST} internal function directly maps to > > > the > > > +@code{len_fold_extract_last} instruction pattern. > > > + > > > +@cindex @code{IFN_FOLD_LEFT_PLUS} internal function > > > +@item @samp{IFN_FOLD_LEFT_PLUS} > > > +The @code{IFN_FOLD_LEFT_PLUS} internal function directly maps to the > > > +@code{fold_left_plus} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_FOLD_LEFT_PLUS} internal function > > > +@item @samp{IFN_MASK_FOLD_LEFT_PLUS} > > > +The @code{IFN_MASK_FOLD_LEFT_PLUS} internal function directly maps to the > > > +@code{mask_fold_left_plus} instruction pattern. > > > + > > > +@cindex @code{IFN_MASK_LEN_FOLD_LEFT_PLUS} internal function > > > +@item @samp{IFN_MASK_LEN_FOLD_LEFT_PLUS} > > > +The @code{IFN_MASK_LEN_FOLD_LEFT_PLUS} internal function directly maps to > > > +the @code{mask_len_fold_left_plus} instruction pattern. > > > + > > > +@cindex @code{IFN_XORSIGN} internal function > > > +@item @samp{IFN_XORSIGN} > > > +The @code{IFN_XORSIGN} internal function directly maps to the > > > +@code{xorsign} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_ADD_ROT90} internal function > > > +@item @samp{IFN_COMPLEX_ADD_ROT90} > > > +The @code{IFN_COMPLEX_ADD_ROT90} internal function directly maps to the > > > +@code{cadd90} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_ADD_ROT270} internal function > > > +@item @samp{IFN_COMPLEX_ADD_ROT270} > > > +The @code{IFN_COMPLEX_ADD_ROT270} internal function directly maps to the > > > +@code{cadd270} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_MUL} internal function > > > +@item @samp{IFN_COMPLEX_MUL} > > > +The @code{IFN_COMPLEX_MUL} internal function directly maps to the > > > +@code{cmul} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_MUL_CONJ} internal function > > > +@item @samp{IFN_COMPLEX_MUL_CONJ} > > > +The @code{IFN_COMPLEX_MUL_CONJ} internal function directly maps to the > > > +@code{cmul_conj} instruction pattern. > > > + > > > +@cindex @code{IFN_VEC_ADDSUB} internal function > > > +@item @samp{IFN_VEC_ADDSUB} > > > +The @code{IFN_VEC_ADDSUB} internal function directly maps to the > > > +@code{vec_addsub} instruction pattern. > > > + > > > +@cindex @code{IFN_VEC_TRUNC_ADD_HIGH} internal function > > > +@item @samp{IFN_VEC_TRUNC_ADD_HIGH} > > > +The @code{IFN_VEC_TRUNC_ADD_HIGH} internal function directly maps to the > > > +@code{vec_trunc_add_high} instruction pattern. > > > + > > > +@cindex @code{IFN_VEC_FMADDSUB} internal function > > > +@item @samp{IFN_VEC_FMADDSUB} > > > +The @code{IFN_VEC_FMADDSUB} internal function directly maps to the > > > +@code{vec_fmaddsub} instruction pattern. > > > + > > > +@cindex @code{IFN_VEC_FMSUBADD} internal function > > > +@item @samp{IFN_VEC_FMSUBADD} > > > +The @code{IFN_VEC_FMSUBADD} internal function directly maps to the > > > +@code{vec_fmsubadd} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_FMA} internal function > > > +@item @samp{IFN_COMPLEX_FMA} > > > +The @code{IFN_COMPLEX_FMA} internal function directly maps to the > > > +@code{cmla} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_FMA_CONJ} internal function > > > +@item @samp{IFN_COMPLEX_FMA_CONJ} > > > +The @code{IFN_COMPLEX_FMA_CONJ} internal function directly maps to the > > > +@code{cmla_conj} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_FMS} internal function > > > +@item @samp{IFN_COMPLEX_FMS} > > > +The @code{IFN_COMPLEX_FMS} internal function directly maps to the > > > +@code{cmls} instruction pattern. > > > + > > > +@cindex @code{IFN_COMPLEX_FMS_CONJ} internal function > > > +@item @samp{IFN_COMPLEX_FMS_CONJ} > > > +The @code{IFN_COMPLEX_FMS_CONJ} internal function directly maps to the > > > +@code{cmls_conj} instruction pattern. > > > + > > > +@cindex @code{IFN_BIT_ANDN} internal function > > > +@item @samp{IFN_BIT_ANDN} > > > +The @code{IFN_BIT_ANDN} internal function directly maps to the > > > @code{andn} > > > +instruction pattern. > > > + > > > +@cindex @code{IFN_BIT_IORN} internal function > > > +@item @samp{IFN_BIT_IORN} > > > +The @code{IFN_BIT_IORN} internal function directly maps to the > > > @code{iorn} > > > +instruction pattern. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@cindex @code{IFN_VEC_WIDEN_PLUS} internal function > > > +@cindex @code{IFN_VEC_WIDEN_PLUS_LO} internal function > > > +@cindex @code{IFN_VEC_WIDEN_PLUS_HI} internal function > > > +@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 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 > > > +@cindex @code{IFN_VEC_WIDEN_MINUS_HI} internal function > > > +@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 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 > > > +@cindex @code{IFN_VEC_WIDEN_ABD_HI} internal function > > > +@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 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 > > > + > > > +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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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}} > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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. > > > + > > > +@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}} > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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. > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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}} > > > + > > > +@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 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 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 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 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 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 modes. > > > + > > > +@end table > > > + > > > +@node Other Internal Functions > > > +@subsection Other Internal Functions > > > + > > > +@table @asis > > > + > > > +@cindex @code{IFN_GOMP_TARGET_REV} internal function > > > +@item @samp{IFN_GOMP_TARGET_REV} > > > +The @code{IFN_GOMP_TARGET_REV} internal function is expanded by the > > > +@code{expand_GOMP_TARGET_REV} function. > > > + > > > +@cindex @code{IFN_GOMP_USE_SIMT} internal function > > > +@item @samp{IFN_GOMP_USE_SIMT} > > > +The @code{IFN_GOMP_USE_SIMT} internal function is expanded by the > > > +@code{expand_GOMP_USE_SIMT} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_ENTER} internal function > > > +@item @samp{IFN_GOMP_SIMT_ENTER} > > > +The @code{IFN_GOMP_SIMT_ENTER} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_ENTER} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_ENTER_ALLOC} internal function > > > +@item @samp{IFN_GOMP_SIMT_ENTER_ALLOC} > > > +The @code{IFN_GOMP_SIMT_ENTER_ALLOC} internal function is expanded by > > > +the @code{expand_GOMP_SIMT_ENTER_ALLOC} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_EXIT} internal function > > > +@item @samp{IFN_GOMP_SIMT_EXIT} > > > +The @code{IFN_GOMP_SIMT_EXIT} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_EXIT} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_LANE} internal function > > > +@item @samp{IFN_GOMP_SIMT_LANE} > > > +The @code{IFN_GOMP_SIMT_LANE} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_LANE} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_VF} internal function > > > +@item @samp{IFN_GOMP_SIMT_VF} > > > +The @code{IFN_GOMP_SIMT_VF} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_VF} function. > > > + > > > +@cindex @code{IFN_GOMP_MAX_VF} internal function > > > +@item @samp{IFN_GOMP_MAX_VF} > > > +The @code{IFN_GOMP_MAX_VF} internal function is expanded by the > > > +@code{expand_GOMP_MAX_VF} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_LAST_LANE} internal function > > > +@item @samp{IFN_GOMP_SIMT_LAST_LANE} > > > +The @code{IFN_GOMP_SIMT_LAST_LANE} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_LAST_LANE} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_ORDERED_PRED} internal function > > > +@item @samp{IFN_GOMP_SIMT_ORDERED_PRED} > > > +The @code{IFN_GOMP_SIMT_ORDERED_PRED} internal function is expanded by > > > the > > > +@code{expand_GOMP_SIMT_ORDERED_PRED} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_VOTE_ANY} internal function > > > +@item @samp{IFN_GOMP_SIMT_VOTE_ANY} > > > +The @code{IFN_GOMP_SIMT_VOTE_ANY} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_VOTE_ANY} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_XCHG_BFLY} internal function > > > +@item @samp{IFN_GOMP_SIMT_XCHG_BFLY} > > > +The @code{IFN_GOMP_SIMT_XCHG_BFLY} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_XCHG_BFLY} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMT_XCHG_IDX} internal function > > > +@item @samp{IFN_GOMP_SIMT_XCHG_IDX} > > > +The @code{IFN_GOMP_SIMT_XCHG_IDX} internal function is expanded by the > > > +@code{expand_GOMP_SIMT_XCHG_IDX} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMD_LANE} internal function > > > +@item @samp{IFN_GOMP_SIMD_LANE} > > > +The @code{IFN_GOMP_SIMD_LANE} internal function is expanded by the > > > +@code{expand_GOMP_SIMD_LANE} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMD_VF} internal function > > > +@item @samp{IFN_GOMP_SIMD_VF} > > > +The @code{IFN_GOMP_SIMD_VF} internal function is expanded by the > > > +@code{expand_GOMP_SIMD_VF} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMD_LAST_LANE} internal function > > > +@item @samp{IFN_GOMP_SIMD_LAST_LANE} > > > +The @code{IFN_GOMP_SIMD_LAST_LANE} internal function is expanded by the > > > +@code{expand_GOMP_SIMD_LAST_LANE} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMD_ORDERED_START} internal function > > > +@item @samp{IFN_GOMP_SIMD_ORDERED_START} > > > +The @code{IFN_GOMP_SIMD_ORDERED_START} internal function is expanded by > > > the > > > +@code{expand_GOMP_SIMD_ORDERED_START} function. > > > + > > > +@cindex @code{IFN_GOMP_SIMD_ORDERED_END} internal function > > > +@item @samp{IFN_GOMP_SIMD_ORDERED_END} > > > +The @code{IFN_GOMP_SIMD_ORDERED_END} internal function is expanded by the > > > +@code{expand_GOMP_SIMD_ORDERED_END} function. > > > + > > > +@cindex @code{IFN_GOMP_DISPATCH} internal function > > > +@item @samp{IFN_GOMP_DISPATCH} > > > +The @code{IFN_GOMP_DISPATCH} internal function is expanded by the > > > +@code{expand_GOMP_DISPATCH} function. > > > + > > > +@cindex @code{IFN_LOOP_VECTORIZED} internal function > > > +@item @samp{IFN_LOOP_VECTORIZED} > > > +The @code{IFN_LOOP_VECTORIZED} internal function is expanded by the > > > +@code{expand_LOOP_VECTORIZED} function. > > > + > > > +@cindex @code{IFN_LOOP_DIST_ALIAS} internal function > > > +@item @samp{IFN_LOOP_DIST_ALIAS} > > > +The @code{IFN_LOOP_DIST_ALIAS} internal function is expanded by the > > > +@code{expand_LOOP_DIST_ALIAS} function. > > > + > > > +@cindex @code{IFN_ANNOTATE} internal function > > > +@item @samp{IFN_ANNOTATE} > > > +The @code{IFN_ANNOTATE} internal function is expanded by the > > > +@code{expand_ANNOTATE} function. > > > + > > > +@cindex @code{IFN_UBSAN_NULL} internal function > > > +@item @samp{IFN_UBSAN_NULL} > > > +The @code{IFN_UBSAN_NULL} internal function is expanded by the > > > +@code{expand_UBSAN_NULL} function. > > > + > > > +@cindex @code{IFN_UBSAN_BOUNDS} internal function > > > +@item @samp{IFN_UBSAN_BOUNDS} > > > +The @code{IFN_UBSAN_BOUNDS} internal function is expanded by the > > > +@code{expand_UBSAN_BOUNDS} function. > > > + > > > +@cindex @code{IFN_UBSAN_VPTR} internal function > > > +@item @samp{IFN_UBSAN_VPTR} > > > +The @code{IFN_UBSAN_VPTR} internal function is expanded by the > > > +@code{expand_UBSAN_VPTR} function. > > > + > > > +@cindex @code{IFN_UBSAN_CHECK_ADD} internal function > > > +@item @samp{IFN_UBSAN_CHECK_ADD} > > > +The @code{IFN_UBSAN_CHECK_ADD} internal function is expanded by the > > > +@code{expand_UBSAN_CHECK_ADD} function. > > > + > > > +@cindex @code{IFN_UBSAN_CHECK_SUB} internal function > > > +@item @samp{IFN_UBSAN_CHECK_SUB} > > > +The @code{IFN_UBSAN_CHECK_SUB} internal function is expanded by the > > > +@code{expand_UBSAN_CHECK_SUB} function. > > > + > > > +@cindex @code{IFN_UBSAN_CHECK_MUL} internal function > > > +@item @samp{IFN_UBSAN_CHECK_MUL} > > > +The @code{IFN_UBSAN_CHECK_MUL} internal function is expanded by the > > > +@code{expand_UBSAN_CHECK_MUL} function. > > > + > > > +@cindex @code{IFN_UBSAN_PTR} internal function > > > +@item @samp{IFN_UBSAN_PTR} > > > +The @code{IFN_UBSAN_PTR} internal function is expanded by the > > > +@code{expand_UBSAN_PTR} function. > > > + > > > +@cindex @code{IFN_UBSAN_OBJECT_SIZE} internal function > > > +@item @samp{IFN_UBSAN_OBJECT_SIZE} > > > +The @code{IFN_UBSAN_OBJECT_SIZE} internal function is expanded by the > > > +@code{expand_UBSAN_OBJECT_SIZE} function. > > > + > > > +@cindex @code{IFN_ABNORMAL_DISPATCHER} internal function > > > +@item @samp{IFN_ABNORMAL_DISPATCHER} > > > +The @code{IFN_ABNORMAL_DISPATCHER} internal function is expanded by the > > > +@code{expand_ABNORMAL_DISPATCHER} function. > > > + > > > +@cindex @code{IFN_BUILTIN_EXPECT} internal function > > > +@item @samp{IFN_BUILTIN_EXPECT} > > > +The @code{IFN_BUILTIN_EXPECT} internal function is expanded by the > > > +@code{expand_BUILTIN_EXPECT} function. > > > + > > > +@cindex @code{IFN_HWASAN_ALLOCA_POISON} internal function > > > +@item @samp{IFN_HWASAN_ALLOCA_POISON} > > > +The @code{IFN_HWASAN_ALLOCA_POISON} internal function is expanded by the > > > +@code{expand_HWASAN_ALLOCA_POISON} function. > > > + > > > +@cindex @code{IFN_HWASAN_ALLOCA_UNPOISON} internal function > > > +@item @samp{IFN_HWASAN_ALLOCA_UNPOISON} > > > +The @code{IFN_HWASAN_ALLOCA_UNPOISON} internal function is expanded by > > > the > > > +@code{expand_HWASAN_ALLOCA_UNPOISON} function. > > > + > > > +@cindex @code{IFN_HWASAN_CHOOSE_TAG} internal function > > > +@item @samp{IFN_HWASAN_CHOOSE_TAG} > > > +The @code{IFN_HWASAN_CHOOSE_TAG} internal function is expanded by the > > > +@code{expand_HWASAN_CHOOSE_TAG} function. > > > + > > > +@cindex @code{IFN_HWASAN_CHECK} internal function > > > +@item @samp{IFN_HWASAN_CHECK} > > > +The @code{IFN_HWASAN_CHECK} internal function is expanded by the > > > +@code{expand_HWASAN_CHECK} function. > > > + > > > +@cindex @code{IFN_HWASAN_MARK} internal function > > > +@item @samp{IFN_HWASAN_MARK} > > > +The @code{IFN_HWASAN_MARK} internal function is expanded by the > > > +@code{expand_HWASAN_MARK} function. > > > + > > > +@cindex @code{IFN_HWASAN_SET_TAG} internal function > > > +@item @samp{IFN_HWASAN_SET_TAG} > > > +The @code{IFN_HWASAN_SET_TAG} internal function is expanded by the > > > +@code{expand_HWASAN_SET_TAG} function. > > > + > > > +@cindex @code{IFN_ASAN_CHECK} internal function > > > +@item @samp{IFN_ASAN_CHECK} > > > +The @code{IFN_ASAN_CHECK} internal function is expanded by the > > > +@code{expand_ASAN_CHECK} function. > > > + > > > +@cindex @code{IFN_ASAN_MARK} internal function > > > +@item @samp{IFN_ASAN_MARK} > > > +The @code{IFN_ASAN_MARK} internal function is expanded by the > > > +@code{expand_ASAN_MARK} function. > > > + > > > +@cindex @code{IFN_ASAN_POISON} internal function > > > +@item @samp{IFN_ASAN_POISON} > > > +The @code{IFN_ASAN_POISON} internal function is expanded by the > > > +@code{expand_ASAN_POISON} function. > > > + > > > +@cindex @code{IFN_ASAN_POISON_USE} internal function > > > +@item @samp{IFN_ASAN_POISON_USE} > > > +The @code{IFN_ASAN_POISON_USE} internal function is expanded by the > > > +@code{expand_ASAN_POISON_USE} function. > > > + > > > +@cindex @code{IFN_ADD_OVERFLOW} internal function > > > +@item @samp{IFN_ADD_OVERFLOW} > > > +The @code{IFN_ADD_OVERFLOW} internal function is expanded by the > > > +@code{expand_ADD_OVERFLOW} function. > > > + > > > +@cindex @code{IFN_SUB_OVERFLOW} internal function > > > +@item @samp{IFN_SUB_OVERFLOW} > > > +The @code{IFN_SUB_OVERFLOW} internal function is expanded by the > > > +@code{expand_SUB_OVERFLOW} function. > > > + > > > +@cindex @code{IFN_MUL_OVERFLOW} internal function > > > +@item @samp{IFN_MUL_OVERFLOW} > > > +The @code{IFN_MUL_OVERFLOW} internal function is expanded by the > > > +@code{expand_MUL_OVERFLOW} function. > > > + > > > +@cindex @code{IFN_UADDC} internal function > > > +@item @samp{IFN_UADDC} > > > +The @code{IFN_UADDC} internal function is expanded by the > > > @code{expand_UADDC} > > > +function. > > > + > > > +@cindex @code{IFN_USUBC} internal function > > > +@item @samp{IFN_USUBC} > > > +The @code{IFN_USUBC} internal function is expanded by the > > > @code{expand_USUBC} function. > > > + > > > +@cindex @code{IFN_TSAN_FUNC_EXIT} internal function > > > +@item @samp{IFN_TSAN_FUNC_EXIT} > > > +The @code{IFN_TSAN_FUNC_EXIT} internal function is expanded by the > > > +@code{expand_TSAN_FUNC_EXIT} function. > > > + > > > +@cindex @code{IFN_VA_ARG} internal function > > > +@item @samp{IFN_VA_ARG} > > > +The @code{IFN_VA_ARG} internal function is expanded by the > > > +@code{expand_VA_ARG} function. > > > + > > > +@cindex @code{IFN_VEC_CONVERT} internal function > > > +@item @samp{IFN_VEC_CONVERT} > > > +The @code{IFN_VEC_CONVERT} internal function is expanded by the > > > +@code{expand_VEC_CONVERT} function. > > > + > > > +@cindex @code{IFN_RAWMEMCHR} internal function > > > +@item @samp{IFN_RAWMEMCHR} > > > +The @code{IFN_RAWMEMCHR} internal function is expanded by the > > > +@code{expand_RAWMEMCHR} function. > > > + > > > +@cindex @code{IFN_UNIQUE} internal function > > > +@item @samp{IFN_UNIQUE} > > > +The @code{IFN_UNIQUE} internal function is expanded by the > > > +@code{expand_UNIQUE} function. > > > + > > > +@cindex @code{IFN_PHI} internal function > > > +@item @samp{IFN_PHI} > > > +The @code{IFN_PHI} internal function is used by the GIMPLE frontend and > > > +lowered to PHI nodes. > > > + > > > +@cindex @code{IFN_DEFERRED_INIT} internal function > > > +@item @samp{IFN_DEFERRED_INIT} > > > +The @code{IFN_DEFERRED_INIT} internal function is expanded by the > > > +@code{expand_DEFERRED_INIT} function. > > > + > > > +@cindex @code{IFN_ACCESS_WITH_SIZE} internal function > > > +@item @samp{IFN_ACCESS_WITH_SIZE} > > > +The @code{IFN_ACCESS_WITH_SIZE} internal function is expanded by the > > > +@code{expand_ACCESS_WITH_SIZE} function. > > > + > > > +@cindex @code{IFN_GOACC_DIM_SIZE} internal function > > > +@item @samp{IFN_GOACC_DIM_SIZE} > > > +The @code{IFN_GOACC_DIM_SIZE} internal function is expanded by the > > > +@code{expand_GOACC_DIM_SIZE} function. > > > + > > > +@cindex @code{IFN_GOACC_DIM_POS} internal function > > > +@item @samp{IFN_GOACC_DIM_POS} > > > +The @code{IFN_GOACC_DIM_POS} internal function is expanded by the > > > +@code{expand_GOACC_DIM_POS} function. > > > + > > > +@cindex @code{IFN_GOACC_LOOP} internal function > > > +@item @samp{IFN_GOACC_LOOP} > > > +The @code{IFN_GOACC_LOOP} internal function is expanded by the > > > +@code{expand_GOACC_LOOP} function. > > > + > > > +@cindex @code{IFN_GOACC_REDUCTION} internal function > > > +@item @samp{IFN_GOACC_REDUCTION} > > > +The @code{IFN_GOACC_REDUCTION} internal function is expanded by the > > > +@code{expand_GOACC_REDUCTION} function. > > > + > > > +@cindex @code{IFN_GOACC_TILE} internal function > > > +@item @samp{IFN_GOACC_TILE} > > > +The @code{IFN_GOACC_TILE} internal function is expanded by the > > > +@code{expand_GOACC_TILE} function. > > > + > > > +@cindex @code{IFN_SET_EDOM} internal function > > > +@item @samp{IFN_SET_EDOM} > > > +The @code{IFN_SET_EDOM} internal function is expanded by the > > > +@code{expand_SET_EDOM} function. > > > + > > > +@cindex @code{IFN_ATOMIC_BIT_TEST_AND_SET} internal function > > > +@item @samp{IFN_ATOMIC_BIT_TEST_AND_SET} > > > +The @code{IFN_ATOMIC_BIT_TEST_AND_SET} internal function is expanded by > > > the > > > +@code{expand_ATOMIC_BIT_TEST_AND_SET} function. > > > + > > > +@cindex @code{IFN_ATOMIC_BIT_TEST_AND_COMPLEMENT} internal function > > > +@item @samp{IFN_ATOMIC_BIT_TEST_AND_COMPLEMENT} > > > +The @code{IFN_ATOMIC_BIT_TEST_AND_COMPLEMENT} internal function is > > > expanded by > > > +the @code{expand_ATOMIC_BIT_TEST_AND_COMPLEMENT} function. > > > + > > > +@cindex @code{IFN_ATOMIC_BIT_TEST_AND_RESET} internal function > > > +@item @samp{IFN_ATOMIC_BIT_TEST_AND_RESET} > > > +The @code{IFN_ATOMIC_BIT_TEST_AND_RESET} internal function is expanded by > > > +the @code{expand_ATOMIC_BIT_TEST_AND_RESET} function. > > > + > > > +@cindex @code{IFN_ATOMIC_COMPARE_EXCHANGE} internal function > > > +@item @samp{IFN_ATOMIC_COMPARE_EXCHANGE} > > > +The @code{IFN_ATOMIC_COMPARE_EXCHANGE} internal function is expanded by > > > the > > > +@code{expand_ATOMIC_COMPARE_EXCHANGE} function. > > > + > > > +@cindex @code{IFN_ATOMIC_ADD_FETCH_CMP_0} internal function > > > +@item @samp{IFN_ATOMIC_ADD_FETCH_CMP_0} > > > +The @code{IFN_ATOMIC_ADD_FETCH_CMP_0} internal function is expanded by > > > the > > > +@code{expand_ATOMIC_ADD_FETCH_CMP_0} function. > > > + > > > +@cindex @code{IFN_ATOMIC_SUB_FETCH_CMP_0} internal function > > > +@item @samp{IFN_ATOMIC_SUB_FETCH_CMP_0} > > > +The @code{IFN_ATOMIC_SUB_FETCH_CMP_0} internal function is expanded by > > > the > > > +@code{expand_ATOMIC_SUB_FETCH_CMP_0} function. > > > + > > > +@cindex @code{IFN_ATOMIC_AND_FETCH_CMP_0} internal function > > > +@item @samp{IFN_ATOMIC_AND_FETCH_CMP_0} > > > +The @code{IFN_ATOMIC_AND_FETCH_CMP_0} internal function is expanded by > > > the > > > +@code{expand_ATOMIC_AND_FETCH_CMP_0} function. > > > + > > > +@cindex @code{IFN_ATOMIC_OR_FETCH_CMP_0} internal function > > > +@item @samp{IFN_ATOMIC_OR_FETCH_CMP_0} > > > +The @code{IFN_ATOMIC_OR_FETCH_CMP_0} internal function is expanded by the > > > +@code{expand_ATOMIC_OR_FETCH_CMP_0} function. > > > + > > > +@cindex @code{IFN_ATOMIC_XOR_FETCH_CMP_0} internal function > > > +@item @samp{IFN_ATOMIC_XOR_FETCH_CMP_0} > > > +The @code{IFN_ATOMIC_XOR_FETCH_CMP_0} internal function is expanded by > > > the > > > +@code{expand_ATOMIC_XOR_FETCH_CMP_0} function. > > > + > > > +@cindex @code{IFN_FALLTHROUGH} internal function > > > +@item @samp{IFN_FALLTHROUGH} > > > +The @code{IFN_FALLTHROUGH} internal function is expanded by the > > > +@code{expand_FALLTHROUGH} function. > > > + > > > +@cindex @code{IFN_LAUNDER} internal function > > > +@item @samp{IFN_LAUNDER} > > > +The @code{IFN_LAUNDER} internal function is expanded by the > > > +@code{expand_LAUNDER} function. > > > + > > > +@cindex @code{IFN_DIVMOD} internal function > > > +@item @samp{IFN_DIVMOD} > > > +The @code{IFN_DIVMOD} internal function is expanded by the > > > +@code{expand_DIVMOD} function. > > > + > > > +@cindex @code{IFN_CO_ACTOR} internal function > > > +@item @samp{IFN_CO_ACTOR} > > > +The @code{IFN_CO_ACTOR} internal function is expanded by the > > > +@code{expand_CO_ACTOR} function. > > > + > > > +@cindex @code{IFN_CO_YIELD} internal function > > > +@item @samp{IFN_CO_YIELD} > > > +The @code{IFN_CO_YIELD} internal function is expanded by the > > > +@code{expand_CO_YIELD} function. > > > + > > > +@cindex @code{IFN_CO_SUSPN} internal function > > > +@item @samp{IFN_CO_SUSPN} > > > +The @code{IFN_CO_SUSPN} internal function is expanded by the > > > +@code{expand_CO_SUSPN} function. > > > + > > > +@cindex @code{IFN_CO_FRAME} internal function > > > +@item @samp{IFN_CO_FRAME} > > > +The @code{IFN_CO_FRAME} internal function is expanded by the > > > +@code{expand_CO_FRAME} function. > > > + > > > +@cindex @code{IFN_NOP} internal function > > > +@item @samp{IFN_NOP} > > > +The @code{IFN_NOP} internal function is expanded by the @code{expand_NOP} > > > +function. > > > + > > > +@cindex @code{IFN_SHUFFLEVECTOR} internal function > > > +@item @samp{IFN_SHUFFLEVECTOR} > > > +The @code{IFN_SHUFFLEVECTOR} internal function is expanded by the > > > +@code{expand_SHUFFLEVECTOR} function. > > > + > > > +@cindex @code{IFN_SPACESHIP} internal function > > > +@item @samp{IFN_SPACESHIP} > > > +The @code{IFN_SPACESHIP} internal function is expanded by the > > > +@code{expand_SPACESHIP} function. > > > + > > > +@cindex @code{IFN_ASSUME} internal function > > > +@item @samp{IFN_ASSUME} > > > +The @code{IFN_ASSUME} internal function is expanded by the > > > +@code{expand_ASSUME} function. > > > + > > > +@cindex @code{IFN_MASK_CALL} internal function > > > +@item @samp{IFN_MASK_CALL} > > > +The @code{IFN_MASK_CALL} internal function is expanded by the > > > +@code{expand_MASK_CALL} function. > > > + > > > +@cindex @code{IFN_MULBITINT} internal function > > > +@item @samp{IFN_MULBITINT} > > > +The @code{IFN_MULBITINT} internal function is expanded by the > > > +@code{expand_MULBITINT} function. > > > + > > > +@cindex @code{IFN_DIVMODBITINT} internal function > > > +@item @samp{IFN_DIVMODBITINT} > > > +The @code{IFN_DIVMODBITINT} internal function is expanded by the > > > +@code{expand_DIVMODBITINT} function. > > > + > > > +@cindex @code{IFN_FLOATTOBITINT} internal function > > > +@item @samp{IFN_FLOATTOBITINT} > > > +The @code{IFN_FLOATTOBITINT} internal function is expanded by the > > > +@code{expand_FLOATTOBITINT} function. > > > + > > > +@cindex @code{IFN_BITINTTOFLOAT} internal function > > > +@item @samp{IFN_BITINTTOFLOAT} > > > +The @code{IFN_BITINTTOFLOAT} internal function is expanded by the > > > +@code{expand_BITINTTOFLOAT} function. > > > + > > > +@end table > > > + > > > -- > > > 2.51.0 > -- Richard Biener <[email protected]> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Jochen Jaser, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)
