LCOV - code coverage report
Current view: top level - gcc - internal-fn.def (source / functions) Coverage Total Hit
Test: gcc.info Lines: 91.8 % 257 236
Test Date: 2026-06-20 15:32:29 Functions: 82.6 % 201 166
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* Internal functions.
       2              :    Copyright (C) 2011-2026 Free Software Foundation, Inc.
       3              : 
       4              : This file is part of GCC.
       5              : 
       6              : GCC is free software; you can redistribute it and/or modify it under
       7              : the terms of the GNU General Public License as published by the Free
       8              : Software Foundation; either version 3, or (at your option) any later
       9              : version.
      10              : 
      11              : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
      12              : WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13              : FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14              : for more details.
      15              : 
      16              : You should have received a copy of the GNU General Public License
      17              : along with GCC; see the file COPYING3.  If not see
      18              : <http://www.gnu.org/licenses/>.  */
      19              : 
      20              : /* This file specifies a list of internal "functions".  These functions
      21              :    differ from built-in functions in that they have no linkage and cannot
      22              :    be called directly by the user.  They represent operations that are only
      23              :    synthesised by GCC itself.
      24              : 
      25              :    Internal functions are used instead of tree codes if the operation
      26              :    and its operands are more naturally represented as a GIMPLE_CALL
      27              :    than a GIMPLE_ASSIGN.
      28              : 
      29              :    Each entry in this file has one of the forms:
      30              : 
      31              :      DEF_INTERNAL_FN (NAME, FLAGS, FNSPEC)
      32              :      DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
      33              :      DEF_INTERNAL_SIGNED_OPTAB_FN (NAME, FLAGS, SELECTOR, SIGNED_OPTAB,
      34              :                                    UNSIGNED_OPTAB, TYPE)
      35              :      DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE)
      36              :      DEF_INTERNAL_FLT_FLOATN_FN (NAME, FLAGS, OPTAB, TYPE)
      37              :      DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
      38              :      DEF_INTERNAL_INT_EXT_FN (NAME, FLAGS, OPTAB, TYPE)
      39              :      DEF_INTERNAL_INTSZ_FN (NAME, FLAGS, OPTAB, TYPE)
      40              :      DEF_INTERNAL_INTSZ_EXT_FN (NAME, FLAGS, OPTAB, TYPE)
      41              :      DEF_INTERNAL_COND_FN (NAME, FLAGS, OPTAB, TYPE)
      42              :      DEF_INTERNAL_SIGNED_COND_FN (NAME, FLAGS, OPTAB, TYPE)
      43              :      DEF_INTERNAL_WIDENING_OPTAB_FN (NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB,
      44              :                                      TYPE)
      45              : 
      46              :    where NAME is the name of the function, FLAGS is a set of
      47              :    ECF_* flags and FNSPEC is a string describing functions fnspec.
      48              : 
      49              :    DEF_INTERNAL_OPTAB_FN defines an internal function that maps to a
      50              :    direct optab.  The function should only be called with a given
      51              :    set of types if the associated optab is available for the modes
      52              :    of those types.  OPTAB says what optab to use (without the trailing
      53              :    "_optab") and TYPE categorizes the optab based on its inputs and
      54              :    outputs.  The possible types of optab are:
      55              : 
      56              :    - mask_load: currently just maskload
      57              :    - load_lanes: currently just vec_load_lanes
      58              :    - mask_load_lanes: currently just vec_mask_load_lanes
      59              :    - mask_len_load_lanes: currently just vec_mask_len_load_lanes
      60              :    - gather_load: used for {mask_,mask_len_,}gather_load
      61              :    - strided_load: currently just mask_len_strided_load
      62              :    - len_load: currently just len_load
      63              :    - mask_len_load: currently just mask_len_load
      64              : 
      65              :    - mask_store: currently just maskstore
      66              :    - store_lanes: currently just vec_store_lanes
      67              :    - mask_store_lanes: currently just vec_mask_store_lanes
      68              :    - mask_len_store_lanes: currently just vec_mask_len_store_lanes
      69              :    - scatter_store: used for {mask_,mask_len_,}scatter_store
      70              :    - strided_store: currently just mask_len_strided_store
      71              :    - len_store: currently just len_store
      72              :    - mask_len_store: currently just mask_len_store
      73              : 
      74              :    - unary: a normal unary optab, such as vec_reverse_<mode>
      75              :    - binary: a normal binary optab, such as vec_interleave_lo_<mode>
      76              :    - ternary: a normal ternary optab, such as fma<mode>4
      77              : 
      78              :    - unary_convert: a single-input conversion optab, such as
      79              :      lround<srcmode><dstmode>2.
      80              : 
      81              :    - cond_binary: a conditional binary optab, such as cond_add<mode>
      82              :    - cond_unary: a conditional unary optab, such as cond_neg<mode>
      83              :    - cond_ternary: a conditional ternary optab, such as cond_fma_rev<mode>
      84              : 
      85              :    - fold_left: for scalar = FN (scalar, vector), keyed off the vector mode
      86              :    - check_ptrs: used for check_{raw,war}_ptrs
      87              : 
      88              :    - cond_len_unary: a conditional unary optab, such as cond_len_neg<mode>
      89              :    - cond_len_binary: a conditional binary optab, such as cond_len_add<mode>
      90              :    - cond_len_ternary: a conditional ternary optab, such as
      91              :    cond_len_fma_rev<mode>
      92              : 
      93              :    DEF_INTERNAL_SIGNED_OPTAB_FN defines an internal function that
      94              :    maps to one of two optabs, depending on the signedness of an input.
      95              :    SIGNED_OPTAB and UNSIGNED_OPTAB are the optabs for signed and
      96              :    unsigned inputs respectively, both without the trailing "_optab".
      97              :    SELECTOR says which type in the tree_pair determines the signedness.
      98              : 
      99              :    DEF_INTERNAL_FLT_FN is like DEF_INTERNAL_OPTAB_FN, but in addition,
     100              :    the function implements the computational part of a built-in math
     101              :    function BUILT_IN_<NAME>{F,,L}.  Unlike some built-in functions,
     102              :    these internal functions never set errno.
     103              : 
     104              :    DEF_INTERNAL_INT_FN is like DEF_INTERNAL_OPTAB_FN, but in addition
     105              :    says that the function extends the C-level BUILT_IN_<NAME>{,L,LL,IMAX}
     106              :    group of functions to any integral mode (including vector modes).
     107              : 
     108              :    DEF_INTERNAL_INT_EXT_FN is like DEF_INTERNAL_INT_FN, except that it
     109              :    has expand_##NAME defined in internal-fn.cc to override the
     110              :    DEF_INTERNAL_INT_FN expansion behavior.
     111              : 
     112              :    DEF_INTERNAL_INTSZ_FN is like DEF_INTERNAL_OPTAB_FN, but in addition
     113              :    says that the function extends the C-level BUILT_IN_<NAME>{8,16,32,64,128}
     114              :    group of functions to any integral mode (including vector modes).
     115              : 
     116              :    DEF_INTERNAL_INTSZ_EXT_FN is like DEF_INTERNAL_INTSZ_FN, except that it
     117              :    has expand_##NAME defined in internal-fn.cc to override the
     118              :    DEF_INTERNAL_INTSZ_FN expansion behavior.
     119              : 
     120              :    DEF_INTERNAL_WIDENING_OPTAB_FN is a wrapper that defines five internal
     121              :    functions with DEF_INTERNAL_SIGNED_OPTAB_FN:
     122              :    - one that describes a widening operation with the same number of elements
     123              :    in the output and input vectors,
     124              :    - two that describe a pair of high-low widening operations where the output
     125              :    vectors each have half the number of elements of the input vectors,
     126              :    corresponding to the result of the widening operation on the top half and
     127              :    bottom half, these have the suffixes _HI and _LO,
     128              :    - and two that describe a pair of even-odd widening operations where the
     129              :    output vectors each have half the number of elements of the input vectors,
     130              :    corresponding to the result of the widening operation on the even and odd
     131              :    elements, these have the suffixes _EVEN and _ODD.
     132              :    These five internal functions will require two optabs each, a SIGNED_OPTAB
     133              :    and an UNSIGNED_OTPAB.
     134              : 
     135              :    DEF_INTERNAL_COND_FN is a wrapper that defines 2 internal functions with
     136              :    DEF_INTERNAL_OPTAB_FN:
     137              :    - One is COND_* operations that are predicated by mask only. Such operations
     138              :      make sense for both vectors and scalars.
     139              :    - The other is COND_LEN_* operations that are predicated by mask and len
     140              :      both. Such operations only make sense for vectors.
     141              : 
     142              :    DEF_INTERNAL_SIGNED_COND_FN is like DEF_INTERNAL_COND_FN but defines internal
     143              :    functions with DEF_INTERNAL_SIGNED_OPTAB_FN.
     144              : 
     145              :    Each entry must have a corresponding expander of the form:
     146              : 
     147              :      void expand_NAME (gimple_call stmt)
     148              : 
     149              :    where STMT is the statement that performs the call.  These are generated
     150              :    automatically for optab functions and call out to a function or macro
     151              :    called expand_<TYPE>_optab_fn.  */
     152              : 
     153              : #ifndef DEF_INTERNAL_FN
     154              : #define DEF_INTERNAL_FN(CODE, FLAGS, FNSPEC)
     155              : #endif
     156              : 
     157              : #ifndef DEF_INTERNAL_OPTAB_FN
     158              : #define DEF_INTERNAL_OPTAB_FN(NAME, FLAGS, OPTAB, TYPE) \
     159              :   DEF_INTERNAL_FN (NAME, FLAGS | ECF_LEAF, NULL)
     160              : #endif
     161              : 
     162              : #ifndef DEF_INTERNAL_SIGNED_OPTAB_FN
     163              : #define DEF_INTERNAL_SIGNED_OPTAB_FN(NAME, FLAGS, SELECTOR, SIGNED_OPTAB, \
     164              :                                      UNSIGNED_OPTAB, TYPE) \
     165              :   DEF_INTERNAL_FN (NAME, FLAGS | ECF_LEAF, NULL)
     166              : #endif
     167              : 
     168              : #ifndef DEF_INTERNAL_FLT_FN
     169              : #define DEF_INTERNAL_FLT_FN(NAME, FLAGS, OPTAB, TYPE) \
     170              :   DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
     171              : #endif
     172              : 
     173              : #ifndef DEF_INTERNAL_FLT_FLOATN_FN
     174              : #define DEF_INTERNAL_FLT_FLOATN_FN(NAME, FLAGS, OPTAB, TYPE) \
     175              :   DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE)
     176              : #endif
     177              : 
     178              : #ifndef DEF_INTERNAL_INT_FN
     179              : #define DEF_INTERNAL_INT_FN(NAME, FLAGS, OPTAB, TYPE) \
     180              :   DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
     181              : #endif
     182              : 
     183              : #ifndef DEF_INTERNAL_INT_EXT_FN
     184              : #define DEF_INTERNAL_INT_EXT_FN(NAME, FLAGS, OPTAB, TYPE) \
     185              :   DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
     186              : #endif
     187              : 
     188              : #ifndef DEF_INTERNAL_INTSZ_FN
     189              : #define DEF_INTERNAL_INTSZ_FN(NAME, FLAGS, OPTAB, TYPE) \
     190              :   DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
     191              : #endif
     192              : 
     193              : #ifndef DEF_INTERNAL_INTSZ_EXT_FN
     194              : #define DEF_INTERNAL_INTSZ_EXT_FN(NAME, FLAGS, OPTAB, TYPE) \
     195              :   DEF_INTERNAL_INTSZ_FN (NAME, FLAGS, OPTAB, TYPE)
     196              : #endif
     197              : 
     198              : #ifndef DEF_INTERNAL_WIDENING_OPTAB_FN
     199              : #define DEF_INTERNAL_WIDENING_OPTAB_FN(NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB, TYPE)                 \
     200              :   DEF_INTERNAL_SIGNED_OPTAB_FN (NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB, TYPE)                        \
     201              :   DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _LO, FLAGS, SELECTOR, SOPTAB##_lo, UOPTAB##_lo, TYPE)       \
     202              :   DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _HI, FLAGS, SELECTOR, SOPTAB##_hi, UOPTAB##_hi, TYPE)       \
     203              :   DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _EVEN, FLAGS, SELECTOR, SOPTAB##_even, UOPTAB##_even, TYPE) \
     204              :   DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _ODD, FLAGS, SELECTOR, SOPTAB##_odd, UOPTAB##_odd, TYPE)
     205              : #endif
     206              : 
     207              : #ifndef DEF_INTERNAL_COND_FN
     208              : #define DEF_INTERNAL_COND_FN(NAME, FLAGS, OPTAB, TYPE)                         \
     209              :   DEF_INTERNAL_OPTAB_FN (COND_##NAME, FLAGS, cond_##OPTAB, cond_##TYPE)        \
     210              :   DEF_INTERNAL_OPTAB_FN (COND_LEN_##NAME, FLAGS, cond_len_##OPTAB,             \
     211              :                          cond_len_##TYPE)
     212              : #endif
     213              : 
     214              : #ifndef DEF_INTERNAL_SIGNED_COND_FN
     215              : #define DEF_INTERNAL_SIGNED_COND_FN(NAME, FLAGS, SELECTOR, SIGNED_OPTAB,       \
     216              :                                     UNSIGNED_OPTAB, TYPE)                      \
     217              :   DEF_INTERNAL_SIGNED_OPTAB_FN (COND_##NAME, FLAGS, SELECTOR,                  \
     218              :                                 cond_##SIGNED_OPTAB, cond_##UNSIGNED_OPTAB,    \
     219              :                                 cond_##TYPE)                                   \
     220              :   DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_##NAME, FLAGS, SELECTOR,              \
     221              :                                 cond_len_##SIGNED_OPTAB,                       \
     222              :                                 cond_len_##UNSIGNED_OPTAB, cond_len_##TYPE)
     223              : #endif
     224              : 
     225          252 : DEF_INTERNAL_OPTAB_FN (CRC, ECF_CONST | ECF_NOTHROW, crc, crc)
     226          271 : DEF_INTERNAL_OPTAB_FN (CRC_REV, ECF_CONST | ECF_NOTHROW, crc_rev, crc)
     227          725 : DEF_INTERNAL_OPTAB_FN (MASK_LOAD, ECF_PURE, maskload, mask_load)
     228            0 : DEF_INTERNAL_OPTAB_FN (LOAD_LANES, ECF_CONST, vec_load_lanes, load_lanes)
     229            0 : DEF_INTERNAL_OPTAB_FN (MASK_LOAD_LANES, ECF_PURE,
     230              :                        vec_mask_load_lanes, mask_load_lanes)
     231            0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_LOAD_LANES, ECF_PURE,
     232              :                        vec_mask_len_load_lanes, mask_load_lanes)
     233              : 
     234       238094 : DEF_INTERNAL_OPTAB_FN (GATHER_LOAD, ECF_PURE, gather_load, gather_load)
     235       246036 : DEF_INTERNAL_OPTAB_FN (MASK_GATHER_LOAD, ECF_PURE,
     236              :                        mask_gather_load, gather_load)
     237       242620 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_GATHER_LOAD, ECF_PURE,
     238              :                        mask_len_gather_load, gather_load)
     239         1074 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_STRIDED_LOAD, ECF_PURE,
     240              :                        mask_len_strided_load, strided_load)
     241              : 
     242            0 : DEF_INTERNAL_OPTAB_FN (LEN_LOAD, ECF_PURE, len_load, len_load)
     243            0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_LOAD, ECF_PURE, mask_len_load, mask_len_load)
     244              : 
     245        80248 : DEF_INTERNAL_OPTAB_FN (SCATTER_STORE, 0, scatter_store, scatter_store)
     246        82438 : DEF_INTERNAL_OPTAB_FN (MASK_SCATTER_STORE, 0,
     247              :                        mask_scatter_store, scatter_store)
     248        81482 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_SCATTER_STORE, 0,
     249              :                        mask_len_scatter_store, scatter_store)
     250         2171 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_STRIDED_STORE, 0,
     251              :                        mask_len_strided_store, strided_store)
     252              : 
     253          762 : DEF_INTERNAL_OPTAB_FN (MASK_STORE, 0, maskstore, mask_store)
     254            0 : DEF_INTERNAL_OPTAB_FN (STORE_LANES, ECF_CONST, vec_store_lanes, store_lanes)
     255            0 : DEF_INTERNAL_OPTAB_FN (MASK_STORE_LANES, 0,
     256              :                        vec_mask_store_lanes, mask_store_lanes)
     257            0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE_LANES, 0,
     258              :                        vec_mask_len_store_lanes, mask_store_lanes)
     259              : 
     260         8944 : DEF_INTERNAL_OPTAB_FN (VCOND_MASK, ECF_CONST | ECF_NOTHROW,
     261              :                        vcond_mask, vec_cond_mask)
     262         1544 : DEF_INTERNAL_OPTAB_FN (VCOND_MASK_LEN, ECF_CONST | ECF_NOTHROW,
     263              :                        vcond_mask_len, cond_len_unary)
     264              : 
     265          123 : DEF_INTERNAL_OPTAB_FN (VEC_SET, ECF_CONST | ECF_NOTHROW, vec_set, vec_set)
     266            0 : DEF_INTERNAL_OPTAB_FN (VEC_EXTRACT, ECF_CONST | ECF_NOTHROW,
     267              :                        vec_extract, vec_extract)
     268              : 
     269            0 : DEF_INTERNAL_OPTAB_FN (LEN_STORE, 0, len_store, len_store)
     270            0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_STORE, 0, mask_len_store, mask_len_store)
     271              : 
     272       109782 : DEF_INTERNAL_OPTAB_FN (WHILE_ULT, ECF_CONST | ECF_NOTHROW, while_ult, while)
     273            0 : DEF_INTERNAL_OPTAB_FN (SELECT_VL, ECF_CONST | ECF_NOTHROW, select_vl, select_vl)
     274           72 : DEF_INTERNAL_OPTAB_FN (CHECK_RAW_PTRS, ECF_CONST | ECF_NOTHROW,
     275              :                        check_raw_ptrs, check_ptrs)
     276         5154 : DEF_INTERNAL_OPTAB_FN (CHECK_WAR_PTRS, ECF_CONST | ECF_NOTHROW,
     277              :                        check_war_ptrs, check_ptrs)
     278              : 
     279            0 : DEF_INTERNAL_OPTAB_FN (VEC_SHL_INSERT, ECF_CONST | ECF_NOTHROW,
     280              :                        vec_shl_insert, binary)
     281              : 
     282        79969 : DEF_INTERNAL_OPTAB_FN (DIV_POW2, ECF_CONST | ECF_NOTHROW, sdiv_pow2, binary)
     283              : 
     284         6905 : DEF_INTERNAL_OPTAB_FN (FMS, ECF_CONST, fms, ternary)
     285         6276 : DEF_INTERNAL_OPTAB_FN (FNMA, ECF_CONST, fnma, ternary)
     286         1822 : DEF_INTERNAL_OPTAB_FN (FNMS, ECF_CONST, fnms, ternary)
     287              : 
     288         1872 : DEF_INTERNAL_SIGNED_OPTAB_FN (ABD, ECF_CONST | ECF_NOTHROW, first,
     289              :                               sabd, uabd, binary)
     290              : 
     291         5594 : DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_FLOOR, ECF_CONST | ECF_NOTHROW, first,
     292              :                               savg_floor, uavg_floor, binary)
     293          532 : DEF_INTERNAL_SIGNED_OPTAB_FN (AVG_CEIL, ECF_CONST | ECF_NOTHROW, first,
     294              :                               savg_ceil, uavg_ceil, binary)
     295              : 
     296         1178 : DEF_INTERNAL_SIGNED_OPTAB_FN (MULH, ECF_CONST | ECF_NOTHROW, first,
     297              :                               smul_highpart, umul_highpart, binary)
     298           34 : DEF_INTERNAL_SIGNED_OPTAB_FN (MULHS, ECF_CONST | ECF_NOTHROW, first,
     299              :                               smulhs, umulhs, binary)
     300          126 : DEF_INTERNAL_SIGNED_OPTAB_FN (MULHRS, ECF_CONST | ECF_NOTHROW, first,
     301              :                               smulhrs, umulhrs, binary)
     302              : 
     303          276 : DEF_INTERNAL_SIGNED_OPTAB_FN (SAT_ADD, ECF_CONST, first, ssadd, usadd, binary)
     304          762 : DEF_INTERNAL_SIGNED_OPTAB_FN (SAT_SUB, ECF_CONST, first, sssub, ussub, binary)
     305            0 : DEF_INTERNAL_SIGNED_OPTAB_FN (SAT_MUL, ECF_CONST, first, ssmul, usmul, binary)
     306              : 
     307          555 : DEF_INTERNAL_SIGNED_OPTAB_FN (SAT_TRUNC, ECF_CONST, first, sstrunc, ustrunc, unary_convert)
     308              : 
     309           16 : DEF_INTERNAL_COND_FN (SQRT, ECF_CONST, sqrt, unary)
     310           68 : DEF_INTERNAL_COND_FN (CEIL, ECF_CONST, ceil, unary)
     311           74 : DEF_INTERNAL_COND_FN (FLOOR, ECF_CONST, floor, unary)
     312           32 : DEF_INTERNAL_COND_FN (ROUND, ECF_CONST, round, unary)
     313           74 : DEF_INTERNAL_COND_FN (RINT, ECF_CONST, rint, unary)
     314        59410 : DEF_INTERNAL_COND_FN (ADD, ECF_CONST, add, binary)
     315         4547 : DEF_INTERNAL_COND_FN (SUB, ECF_CONST, sub, binary)
     316        19893 : DEF_INTERNAL_COND_FN (MUL, ECF_CONST, smul, binary)
     317          291 : DEF_INTERNAL_SIGNED_COND_FN (DIV, ECF_CONST, first, sdiv, udiv, binary)
     318          327 : DEF_INTERNAL_SIGNED_COND_FN (MOD, ECF_CONST, first, smod, umod, binary)
     319          939 : DEF_INTERNAL_COND_FN (RDIV, ECF_CONST, sdiv, binary)
     320          673 : DEF_INTERNAL_SIGNED_COND_FN (MIN, ECF_CONST, first, smin, umin, binary)
     321          718 : DEF_INTERNAL_SIGNED_COND_FN (MAX, ECF_CONST, first, smax, umax, binary)
     322            0 : DEF_INTERNAL_COND_FN (COPYSIGN, ECF_CONST, copysign, binary)
     323            5 : DEF_INTERNAL_COND_FN (FMIN, ECF_CONST, fmin, binary)
     324            5 : DEF_INTERNAL_COND_FN (FMAX, ECF_CONST, fmax, binary)
     325         1995 : DEF_INTERNAL_COND_FN (AND, ECF_CONST | ECF_NOTHROW, and, binary)
     326         6308 : DEF_INTERNAL_COND_FN (IOR, ECF_CONST | ECF_NOTHROW, ior, binary)
     327          941 : DEF_INTERNAL_COND_FN (XOR, ECF_CONST | ECF_NOTHROW, xor, binary)
     328          634 : DEF_INTERNAL_COND_FN (SHL, ECF_CONST | ECF_NOTHROW, ashl, binary)
     329          865 : DEF_INTERNAL_SIGNED_COND_FN (SHR, ECF_CONST | ECF_NOTHROW, first, ashr, lshr,
     330              :                              binary)
     331              : 
     332         1602 : DEF_INTERNAL_COND_FN (FMA, ECF_CONST, fma, ternary)
     333          136 : DEF_INTERNAL_COND_FN (FMS, ECF_CONST, fms, ternary)
     334          112 : DEF_INTERNAL_COND_FN (FNMA, ECF_CONST, fnma, ternary)
     335          108 : DEF_INTERNAL_COND_FN (FNMS, ECF_CONST, fnms, ternary)
     336              : 
     337          830 : DEF_INTERNAL_COND_FN (NEG, ECF_CONST, neg, unary)
     338          214 : DEF_INTERNAL_COND_FN (NOT, ECF_CONST, one_cmpl, unary)
     339              : 
     340          148 : DEF_INTERNAL_OPTAB_FN (RSQRT, ECF_CONST, rsqrt, unary)
     341              : 
     342        94970 : DEF_INTERNAL_OPTAB_FN (REDUC_PLUS, ECF_CONST | ECF_NOTHROW,
     343              :                        reduc_plus_scal, unary)
     344         3602 : DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MAX, ECF_CONST | ECF_NOTHROW, first,
     345              :                               reduc_smax_scal, reduc_umax_scal, unary)
     346         5224 : DEF_INTERNAL_SIGNED_OPTAB_FN (REDUC_MIN, ECF_CONST | ECF_NOTHROW, first,
     347              :                               reduc_smin_scal, reduc_umin_scal, unary)
     348           34 : DEF_INTERNAL_OPTAB_FN (REDUC_FMAX, ECF_CONST | ECF_NOTHROW,
     349              :                        reduc_fmax_scal, unary)
     350           24 : DEF_INTERNAL_OPTAB_FN (REDUC_FMIN, ECF_CONST | ECF_NOTHROW,
     351              :                        reduc_fmin_scal, unary)
     352        11553 : DEF_INTERNAL_OPTAB_FN (REDUC_AND, ECF_CONST | ECF_NOTHROW,
     353              :                        reduc_and_scal, unary)
     354        45091 : DEF_INTERNAL_OPTAB_FN (REDUC_IOR, ECF_CONST | ECF_NOTHROW,
     355              :                        reduc_ior_scal, unary)
     356         1737 : DEF_INTERNAL_OPTAB_FN (REDUC_XOR, ECF_CONST | ECF_NOTHROW,
     357              :                        reduc_xor_scal, unary)
     358          138 : DEF_INTERNAL_OPTAB_FN (REDUC_SBOOL_AND, ECF_CONST | ECF_NOTHROW,
     359              :                        reduc_sbool_and_scal, reduc_sbool)
     360          879 : DEF_INTERNAL_OPTAB_FN (REDUC_SBOOL_IOR, ECF_CONST | ECF_NOTHROW,
     361              :                        reduc_sbool_ior_scal, reduc_sbool)
     362          173 : DEF_INTERNAL_OPTAB_FN (REDUC_SBOOL_XOR, ECF_CONST | ECF_NOTHROW,
     363              :                        reduc_sbool_xor_scal, reduc_sbool)
     364              : 
     365              : 
     366              : /* Extract the last active element from a vector.  */
     367        11748 : DEF_INTERNAL_OPTAB_FN (EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
     368              :                        extract_last, fold_left)
     369              : 
     370              : /* Same, but return the first argument if no elements are active.  */
     371          795 : DEF_INTERNAL_OPTAB_FN (FOLD_EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
     372              :                        fold_extract_last, fold_extract)
     373              : 
     374          795 : DEF_INTERNAL_OPTAB_FN (LEN_FOLD_EXTRACT_LAST, ECF_CONST | ECF_NOTHROW,
     375              :                        len_fold_extract_last, fold_len_extract)
     376              : 
     377         4411 : DEF_INTERNAL_OPTAB_FN (FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
     378              :                        fold_left_plus, fold_left)
     379              : 
     380            0 : DEF_INTERNAL_OPTAB_FN (MASK_FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
     381              :                        mask_fold_left_plus, mask_fold_left)
     382              : 
     383            0 : DEF_INTERNAL_OPTAB_FN (MASK_LEN_FOLD_LEFT_PLUS, ECF_CONST | ECF_NOTHROW,
     384              :                        mask_len_fold_left_plus, mask_len_fold_left)
     385              : 
     386              : /* Unary math functions.  */
     387          178 : DEF_INTERNAL_FLT_FN (ACOS, ECF_CONST, acos, unary)
     388          834 : DEF_INTERNAL_FLT_FN (ACOSH, ECF_CONST, acosh, unary)
     389         1812 : DEF_INTERNAL_FLT_FN (ASIN, ECF_CONST, asin, unary)
     390          485 : DEF_INTERNAL_FLT_FN (ASINH, ECF_CONST, asinh, unary)
     391         1423 : DEF_INTERNAL_FLT_FN (ATAN, ECF_CONST, atan, unary)
     392         1109 : DEF_INTERNAL_FLT_FN (ATANH, ECF_CONST, atanh, unary)
     393         5481 : DEF_INTERNAL_FLT_FN (COS, ECF_CONST, cos, unary)
     394         2749 : DEF_INTERNAL_FLT_FN (COSH, ECF_CONST, cosh, unary)
     395        12276 : DEF_INTERNAL_FLT_FN (EXP, ECF_CONST, exp, unary)
     396           22 : DEF_INTERNAL_FLT_FN (EXP10, ECF_CONST, exp10, unary)
     397         2642 : DEF_INTERNAL_FLT_FN (EXP2, ECF_CONST, exp2, unary)
     398          679 : DEF_INTERNAL_FLT_FN (EXPM1, ECF_CONST, expm1, unary)
     399        12360 : DEF_INTERNAL_FLT_FN (LOG, ECF_CONST, log, unary)
     400         2339 : DEF_INTERNAL_FLT_FN (LOG10, ECF_CONST, log10, unary)
     401         1301 : DEF_INTERNAL_FLT_FN (LOG1P, ECF_CONST, log1p, unary)
     402         1663 : DEF_INTERNAL_FLT_FN (LOG2, ECF_CONST, log2, unary)
     403          818 : DEF_INTERNAL_FLT_FN (LOGB, ECF_CONST, logb, unary)
     404        20426 : DEF_INTERNAL_FLT_FN (SIGNBIT, ECF_CONST, signbit, unary)
     405          216 : DEF_INTERNAL_FLT_FN (SIGNIFICAND, ECF_CONST, significand, unary)
     406         9526 : DEF_INTERNAL_FLT_FN (SIN, ECF_CONST, sin, unary)
     407         2551 : DEF_INTERNAL_FLT_FN (SINH, ECF_CONST, sinh, unary)
     408         7413 : DEF_INTERNAL_FLT_FLOATN_FN (SQRT, ECF_CONST, sqrt, unary)
     409         2008 : DEF_INTERNAL_FLT_FN (TAN, ECF_CONST, tan, unary)
     410          576 : DEF_INTERNAL_FLT_FN (TANH, ECF_CONST, tanh, unary)
     411              : 
     412              : /* Floating-point to integer conversions.
     413              : 
     414              :    ??? Here we preserve the I/L/LL prefix convention from the
     415              :    corresponding built-in functions, rather than make the internal
     416              :    functions polymorphic in both the argument and the return types.
     417              :    Perhaps an alternative would be to pass a zero of the required
     418              :    return type as a second parameter.  */
     419          216 : DEF_INTERNAL_FLT_FN (ICEIL, ECF_CONST, lceil, unary_convert)
     420          219 : DEF_INTERNAL_FLT_FN (IFLOOR, ECF_CONST, lfloor, unary_convert)
     421          272 : DEF_INTERNAL_FLT_FN (IRINT, ECF_CONST, lrint, unary_convert)
     422         3506 : DEF_INTERNAL_FLT_FN (IROUND, ECF_CONST, lround, unary_convert)
     423         2343 : DEF_INTERNAL_FLT_FN (LCEIL, ECF_CONST, lceil, unary_convert)
     424         2283 : DEF_INTERNAL_FLT_FN (LFLOOR, ECF_CONST, lfloor, unary_convert)
     425          432 : DEF_INTERNAL_FLT_FLOATN_FN (LRINT, ECF_CONST, lrint, unary_convert)
     426          168 : DEF_INTERNAL_FLT_FLOATN_FN (LROUND, ECF_CONST, lround, unary_convert)
     427          396 : DEF_INTERNAL_FLT_FN (LLCEIL, ECF_CONST, lceil, unary_convert)
     428          396 : DEF_INTERNAL_FLT_FN (LLFLOOR, ECF_CONST, lfloor, unary_convert)
     429           32 : DEF_INTERNAL_FLT_FLOATN_FN (LLRINT, ECF_CONST, lrint, unary_convert)
     430           32 : DEF_INTERNAL_FLT_FLOATN_FN (LLROUND, ECF_CONST, lround, unary_convert)
     431              : 
     432              : /* FP rounding.  */
     433         1118 : DEF_INTERNAL_FLT_FLOATN_FN (CEIL, ECF_CONST, ceil, unary)
     434          918 : DEF_INTERNAL_FLT_FLOATN_FN (FLOOR, ECF_CONST, floor, unary)
     435          316 : DEF_INTERNAL_FLT_FLOATN_FN (NEARBYINT, ECF_CONST, nearbyint, unary)
     436          556 : DEF_INTERNAL_FLT_FLOATN_FN (RINT, ECF_CONST, rint, unary)
     437          393 : DEF_INTERNAL_FLT_FLOATN_FN (ROUND, ECF_CONST, round, unary)
     438           25 : DEF_INTERNAL_FLT_FLOATN_FN (ROUNDEVEN, ECF_CONST, roundeven, unary)
     439         1702 : DEF_INTERNAL_FLT_FLOATN_FN (TRUNC, ECF_CONST, btrunc, unary)
     440              : 
     441              : /* Binary math functions.  */
     442         7564 : DEF_INTERNAL_FLT_FN (ATAN2, ECF_CONST, atan2, binary)
     443        67297 : DEF_INTERNAL_FLT_FLOATN_FN (COPYSIGN, ECF_CONST, copysign, binary)
     444         5895 : DEF_INTERNAL_FLT_FN (FMOD, ECF_CONST, fmod, binary)
     445         1425 : DEF_INTERNAL_FLT_FN (HYPOT, ECF_CONST, hypot, binary)
     446        23504 : DEF_INTERNAL_FLT_FN (POW, ECF_CONST, pow, binary)
     447          261 : DEF_INTERNAL_FLT_FN (REMAINDER, ECF_CONST, remainder, binary)
     448          399 : DEF_INTERNAL_FLT_FN (SCALB, ECF_CONST, scalb, binary)
     449          241 : DEF_INTERNAL_FLT_FLOATN_FN (FMIN, ECF_CONST, fmin, binary)
     450          309 : DEF_INTERNAL_FLT_FLOATN_FN (FMAX, ECF_CONST, fmax, binary)
     451           43 : DEF_INTERNAL_OPTAB_FN (XORSIGN, ECF_CONST, xorsign, binary)
     452          259 : DEF_INTERNAL_OPTAB_FN (COMPLEX_ADD_ROT90, ECF_CONST, cadd90, binary)
     453           89 : DEF_INTERNAL_OPTAB_FN (COMPLEX_ADD_ROT270, ECF_CONST, cadd270, binary)
     454          124 : DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL, ECF_CONST, cmul, binary)
     455           22 : DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL_CONJ, ECF_CONST, cmul_conj, binary)
     456         5528 : DEF_INTERNAL_OPTAB_FN (VEC_ADDSUB, ECF_CONST, vec_addsub, binary)
     457        62879 : DEF_INTERNAL_OPTAB_FN (VEC_TRUNC_ADD_HIGH, ECF_CONST | ECF_NOTHROW,
     458              :                        vec_trunc_add_high, binary)
     459       269340 : DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_PLUS,
     460              :                                 ECF_CONST | ECF_NOTHROW,
     461              :                                 first,
     462              :                                 vec_widen_sadd, vec_widen_uadd,
     463              :                                 binary)
     464        48744 : DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_MINUS,
     465              :                                 ECF_CONST | ECF_NOTHROW,
     466              :                                 first,
     467              :                                 vec_widen_ssub, vec_widen_usub,
     468              :                                 binary)
     469         9030 : DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_ABD,
     470              :                                 ECF_CONST | ECF_NOTHROW,
     471              :                                 first,
     472              :                                 vec_widen_sabd, vec_widen_uabd,
     473              :                                 binary)
     474          943 : DEF_INTERNAL_OPTAB_FN (VEC_FMADDSUB, ECF_CONST, vec_fmaddsub, ternary)
     475          611 : DEF_INTERNAL_OPTAB_FN (VEC_FMSUBADD, ECF_CONST, vec_fmsubadd, ternary)
     476              : 
     477              : /* FP scales.  */
     478          907 : DEF_INTERNAL_FLT_FLOATN_FN (LDEXP, ECF_CONST, ldexp, binary)
     479              : 
     480              : /* Ternary math functions.  */
     481      3382210 : DEF_INTERNAL_FLT_FLOATN_FN (FMA, ECF_CONST, fma, ternary)
     482           22 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMA, ECF_CONST, cmla, ternary)
     483           22 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMA_CONJ, ECF_CONST, cmla_conj, ternary)
     484            0 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMS, ECF_CONST, cmls, ternary)
     485            0 : DEF_INTERNAL_OPTAB_FN (COMPLEX_FMS_CONJ, ECF_CONST, cmls_conj, ternary)
     486              : 
     487              : /* Unary integer ops.  */
     488          807 : DEF_INTERNAL_INT_EXT_FN (CLRSB, ECF_CONST | ECF_NOTHROW, clrsb, unary)
     489       162509 : DEF_INTERNAL_INT_EXT_FN (CLZ, ECF_CONST | ECF_NOTHROW, clz, unary)
     490        76880 : DEF_INTERNAL_INT_EXT_FN (CTZ, ECF_CONST | ECF_NOTHROW, ctz, unary)
     491        10350 : DEF_INTERNAL_INT_EXT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)
     492         1980 : DEF_INTERNAL_INT_EXT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)
     493        12135 : DEF_INTERNAL_INT_EXT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)
     494            0 : DEF_INTERNAL_INTSZ_EXT_FN (BSWAP, ECF_CONST | ECF_NOTHROW, bswap, unary)
     495            0 : DEF_INTERNAL_INTSZ_EXT_FN (BITREVERSE, ECF_CONST | ECF_NOTHROW, bitreverse,
     496              :                            unary)
     497              : 
     498       298462 : DEF_INTERNAL_FN (GOMP_TARGET_REV, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     499       298462 : DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     500       298462 : DEF_INTERNAL_FN (GOMP_SIMT_ENTER, ECF_LEAF | ECF_NOTHROW, NULL)
     501       298462 : DEF_INTERNAL_FN (GOMP_SIMT_ENTER_ALLOC, ECF_LEAF | ECF_NOTHROW, NULL)
     502       298462 : DEF_INTERNAL_FN (GOMP_SIMT_EXIT, ECF_LEAF | ECF_NOTHROW, NULL)
     503       298462 : DEF_INTERNAL_FN (GOMP_SIMT_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     504       298462 : DEF_INTERNAL_FN (GOMP_SIMT_VF, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     505       298462 : DEF_INTERNAL_FN (GOMP_MAX_VF, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     506       298462 : DEF_INTERNAL_FN (GOMP_SIMT_LAST_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     507       298462 : DEF_INTERNAL_FN (GOMP_SIMT_ORDERED_PRED, ECF_LEAF | ECF_NOTHROW, NULL)
     508       298462 : DEF_INTERNAL_FN (GOMP_SIMT_VOTE_ANY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     509       298462 : DEF_INTERNAL_FN (GOMP_SIMT_XCHG_BFLY, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     510       298462 : DEF_INTERNAL_FN (GOMP_SIMT_XCHG_IDX, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     511       298462 : DEF_INTERNAL_FN (GOMP_SIMD_LANE, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     512       298462 : DEF_INTERNAL_FN (GOMP_SIMD_VF, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     513       298462 : DEF_INTERNAL_FN (GOMP_SIMD_LAST_LANE, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     514       298462 : DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_START, ECF_LEAF | ECF_NOTHROW, NULL)
     515       298462 : DEF_INTERNAL_FN (GOMP_SIMD_ORDERED_END, ECF_LEAF | ECF_NOTHROW, NULL)
     516       298462 : DEF_INTERNAL_FN (GOMP_DISPATCH, ECF_LEAF | ECF_NOTHROW, NULL)
     517       298462 : DEF_INTERNAL_FN (LOOP_VECTORIZED, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     518       298462 : DEF_INTERNAL_FN (LOOP_DIST_ALIAS, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     519       298462 : DEF_INTERNAL_FN (ANNOTATE,  ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     520       298462 : DEF_INTERNAL_FN (UBSAN_NULL, ECF_LEAF | ECF_NOTHROW, ". R . ")
     521       298462 : DEF_INTERNAL_FN (UBSAN_BOUNDS, ECF_LEAF | ECF_NOTHROW, NULL)
     522       298462 : DEF_INTERNAL_FN (UBSAN_VPTR, ECF_LEAF | ECF_NOTHROW, ". R R . . ")
     523       298462 : DEF_INTERNAL_FN (UBSAN_CHECK_ADD, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     524       298462 : DEF_INTERNAL_FN (UBSAN_CHECK_SUB, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     525       298462 : DEF_INTERNAL_FN (UBSAN_CHECK_MUL, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     526       298462 : DEF_INTERNAL_FN (UBSAN_PTR, ECF_LEAF | ECF_NOTHROW, ". R . ")
     527       298462 : DEF_INTERNAL_FN (UBSAN_OBJECT_SIZE, ECF_LEAF | ECF_NOTHROW, NULL)
     528       298462 : DEF_INTERNAL_FN (ABNORMAL_DISPATCHER, ECF_NORETURN, NULL)
     529       298462 : DEF_INTERNAL_FN (BUILTIN_EXPECT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     530       298462 : DEF_INTERNAL_FN (HWASAN_ALLOCA_POISON, ECF_LEAF | ECF_NOTHROW, NULL)
     531       298462 : DEF_INTERNAL_FN (HWASAN_ALLOCA_UNPOISON, ECF_LEAF | ECF_NOTHROW, ". R ")
     532       298462 : DEF_INTERNAL_FN (HWASAN_CHOOSE_TAG, ECF_LEAF | ECF_NOTHROW, ". ")
     533       298462 : DEF_INTERNAL_FN (HWASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW,
     534              :                  ". . R . . ")
     535       298462 : DEF_INTERNAL_FN (HWASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL)
     536       298462 : DEF_INTERNAL_FN (HWASAN_SET_TAG,
     537              :                  ECF_TM_PURE | ECF_PURE | ECF_LEAF | ECF_NOTHROW, ". R R ")
     538       298462 : DEF_INTERNAL_FN (ASAN_CHECK, ECF_TM_PURE | ECF_LEAF | ECF_NOTHROW,
     539              :                  ". . R . . ")
     540       298462 : DEF_INTERNAL_FN (ASAN_MARK, ECF_LEAF | ECF_NOTHROW, NULL)
     541       298462 : DEF_INTERNAL_FN (ASAN_POISON, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
     542       298462 : DEF_INTERNAL_FN (ASAN_POISON_USE, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
     543       298462 : DEF_INTERNAL_FN (ADD_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     544       298462 : DEF_INTERNAL_FN (SUB_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     545       298462 : DEF_INTERNAL_FN (MUL_OVERFLOW, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     546       298462 : DEF_INTERNAL_FN (UADDC, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     547       298462 : DEF_INTERNAL_FN (USUBC, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     548       298462 : DEF_INTERNAL_FN (TSAN_FUNC_EXIT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     549       298462 : DEF_INTERNAL_FN (VA_ARG, ECF_NOTHROW | ECF_LEAF, NULL)
     550       298462 : DEF_INTERNAL_FN (VEC_CONVERT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     551       298462 : DEF_INTERNAL_FN (RAWMEMCHR, ECF_PURE | ECF_LEAF | ECF_NOTHROW, NULL)
     552              : 
     553              : /* An unduplicable, uncombinable function.  Generally used to preserve
     554              :    a CFG property in the face of jump threading, tail merging or
     555              :    other such optimizations.  The first argument distinguishes
     556              :    between uses.  See internal-fn.h for usage.  */
     557       298462 : DEF_INTERNAL_FN (UNIQUE, ECF_NOTHROW, NULL)
     558       298462 : DEF_INTERNAL_FN (PHI, 0, NULL)
     559              : 
     560              : /* A function to represent an artificial initialization to an uninitialized
     561              :    automatic variable.  */
     562       298462 : DEF_INTERNAL_FN (DEFERRED_INIT, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     563              : 
     564              : /* A function to associate the access size and access mode information
     565              :    with the corresponding reference to an object.  It only reads from the
     566              :    2nd and the 4th arguments.  */
     567       298462 : DEF_INTERNAL_FN (ACCESS_WITH_SIZE, ECF_PURE | ECF_LEAF | ECF_NOTHROW, NULL)
     568              : 
     569              : /* DIM_SIZE and DIM_POS return the size of a particular compute
     570              :    dimension and the executing thread's position within that
     571              :    dimension.  DIM_POS is pure (and not const) so that it isn't
     572              :    thought to clobber memory and can be gcse'd within a single
     573              :    parallel region, but not across FORK/JOIN boundaries.  They take a
     574              :    single INTEGER_CST argument.  This might be overly conservative.  */
     575       298462 : DEF_INTERNAL_FN (GOACC_DIM_SIZE, ECF_CONST | ECF_NOTHROW | ECF_LEAF, NULL)
     576       298462 : DEF_INTERNAL_FN (GOACC_DIM_POS, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL)
     577              : 
     578              : /* OpenACC looping abstraction.  See internal-fn.h for usage.  */
     579       298462 : DEF_INTERNAL_FN (GOACC_LOOP, ECF_PURE | ECF_NOTHROW, NULL)
     580              : 
     581              : /* OpenACC reduction abstraction.  See internal-fn.h  for usage.  */
     582       298462 : DEF_INTERNAL_FN (GOACC_REDUCTION, ECF_NOTHROW | ECF_LEAF, NULL)
     583              : 
     584              : /* Openacc tile abstraction. Describes the spans of the element loop.
     585              :    GOACC_TILE (num-loops, loop-no, tile-arg, tile-mask, element-mask).  */
     586       298462 : DEF_INTERNAL_FN (GOACC_TILE, ECF_NOTHROW | ECF_LEAF, NULL)
     587              : 
     588              : /* Set errno to EDOM, if GCC knows how to do that directly for the
     589              :    current target.  */
     590       298462 : DEF_INTERNAL_FN (SET_EDOM, ECF_LEAF | ECF_NOTHROW, NULL)
     591              : 
     592              : /* Atomic functions.  These don't have ECF_NOTHROW because for
     593              :    -fnon-call-exceptions they can throw, otherwise we set
     594              :    gimple_call_nothrow_p on it.  */
     595       298462 : DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_SET, ECF_LEAF, NULL)
     596       298462 : DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_COMPLEMENT, ECF_LEAF, NULL)
     597       298462 : DEF_INTERNAL_FN (ATOMIC_BIT_TEST_AND_RESET, ECF_LEAF, NULL)
     598       298462 : DEF_INTERNAL_FN (ATOMIC_COMPARE_EXCHANGE, ECF_LEAF, NULL)
     599       298462 : DEF_INTERNAL_FN (ATOMIC_ADD_FETCH_CMP_0, ECF_LEAF, NULL)
     600       298462 : DEF_INTERNAL_FN (ATOMIC_SUB_FETCH_CMP_0, ECF_LEAF, NULL)
     601       298462 : DEF_INTERNAL_FN (ATOMIC_AND_FETCH_CMP_0, ECF_LEAF, NULL)
     602       298462 : DEF_INTERNAL_FN (ATOMIC_OR_FETCH_CMP_0, ECF_LEAF, NULL)
     603       298462 : DEF_INTERNAL_FN (ATOMIC_XOR_FETCH_CMP_0, ECF_LEAF, NULL)
     604              : 
     605              : /* To implement [[fallthrough]].  If the TREE_NOTHROW or GF_CALL_NOTHROW flag
     606              :    is set on the call (normally redundant with ECF_NOTHROW), it marks
     607              :    [[fallthrough]] at the end of C++ loop body.  */
     608       298462 : DEF_INTERNAL_FN (FALLTHROUGH, ECF_LEAF | ECF_NOTHROW, NULL)
     609              : 
     610              : /* To implement __builtin_launder.  */
     611       298462 : DEF_INTERNAL_FN (LAUNDER, ECF_LEAF | ECF_NOTHROW | ECF_NOVOPS, NULL)
     612              : 
     613              : /* Divmod function.  */
     614       298462 : DEF_INTERNAL_FN (DIVMOD, ECF_CONST | ECF_LEAF, NULL)
     615              : 
     616              : /* For coroutines.  */
     617       298462 : DEF_INTERNAL_FN (CO_ACTOR, ECF_NOTHROW | ECF_LEAF, NULL)
     618       298462 : DEF_INTERNAL_FN (CO_YIELD, ECF_NOTHROW | ECF_LEAF, NULL)
     619       298462 : DEF_INTERNAL_FN (CO_SUSPN, ECF_NOTHROW, NULL)
     620       298462 : DEF_INTERNAL_FN (CO_FRAME, ECF_PURE | ECF_NOTHROW | ECF_LEAF, NULL)
     621              : 
     622              : /* A NOP function with arbitrary arguments and return value.  */
     623       298462 : DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     624              : 
     625              : /* A GIMPLE value with no definition and not Virtual Opeands for temporary
     626              :    assignment cases within a pass.  */
     627       298462 : DEF_INTERNAL_FN (VARYING , ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
     628              : 
     629              : /* Temporary vehicle for __builtin_shufflevector.  */
     630       298462 : DEF_INTERNAL_FN (SHUFFLEVECTOR, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     631              : 
     632              : /* <=> optimization.  */
     633       298462 : DEF_INTERNAL_FN (SPACESHIP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
     634              : 
     635              : /* [[assume (cond)]].  */
     636       298462 : DEF_INTERNAL_FN (ASSUME, ECF_CONST | ECF_LEAF | ECF_NOTHROW
     637              :                          | ECF_LOOPING_CONST_OR_PURE, NULL)
     638              : 
     639              : /* For if-conversion of inbranch SIMD clones.  */
     640       298462 : DEF_INTERNAL_FN (MASK_CALL, ECF_NOVOPS, NULL)
     641              : 
     642              : /* _BitInt support.  */
     643       298462 : DEF_INTERNAL_FN (MULBITINT, ECF_LEAF | ECF_NOTHROW, ". O . R . R . ")
     644       298462 : DEF_INTERNAL_FN (DIVMODBITINT, ECF_LEAF, ". O . O . R . R . ")
     645       298462 : DEF_INTERNAL_FN (FLOATTOBITINT, ECF_LEAF | ECF_NOTHROW, ". O . . ")
     646       298462 : DEF_INTERNAL_FN (BITINTTOFLOAT, ECF_PURE | ECF_LEAF, ". R . ")
     647              : 
     648              : /* Bitwise functions.  */
     649          563 : DEF_INTERNAL_OPTAB_FN (BIT_ANDN, ECF_CONST, andn, binary)
     650           29 : DEF_INTERNAL_OPTAB_FN (BIT_IORN, ECF_CONST, iorn, binary)
     651              : 
     652              : #undef DEF_INTERNAL_WIDENING_OPTAB_FN
     653              : #undef DEF_INTERNAL_SIGNED_COND_FN
     654              : #undef DEF_INTERNAL_COND_FN
     655              : #undef DEF_INTERNAL_INT_EXT_FN
     656              : #undef DEF_INTERNAL_INT_FN
     657              : #undef DEF_INTERNAL_INTSZ_EXT_FN
     658              : #undef DEF_INTERNAL_INTSZ_FN
     659              : #undef DEF_INTERNAL_FLT_FN
     660              : #undef DEF_INTERNAL_FLT_FLOATN_FN
     661              : #undef DEF_INTERNAL_SIGNED_OPTAB_FN
     662              : #undef DEF_INTERNAL_OPTAB_FN
     663              : #undef DEF_INTERNAL_FN
        

Generated by: LCOV version 2.4-beta

LCOV profile is generated on x86_64 machine using following configure options: configure --disable-bootstrap --enable-coverage=opt --enable-languages=c,c++,fortran,go,jit,lto,rust,m2 --enable-host-shared. GCC test suite is run with the built compiler.