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)

Reply via email to