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?

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.

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

Reply via email to