Home | History | Annotate | Line # | Download | only in rs6000
      1 ; Built-in functions for PowerPC.
      2 ; Copyright (C) 2020-2022 Free Software Foundation, Inc.
      3 ; Contributed by Bill Schmidt, IBM <wschmidt (a] linux.ibm.com>
      4 ;
      5 ; This file is part of GCC.
      6 ;
      7 ; GCC is free software; you can redistribute it and/or modify it under
      8 ; the terms of the GNU General Public License as published by the Free
      9 ; Software Foundation; either version 3, or (at your option) any later
     10 ; version.
     11 ;
     12 ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
     13 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
     14 ; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     15 ; for more details.
     16 ;
     17 ; You should have received a copy of the GNU General Public License
     18 ; along with GCC; see the file COPYING3.  If not see
     19 ; <http://www.gnu.org/licenses/>.
     20 
     21 
     22 ; Built-in functions in this file are organized into "stanzas", where
     23 ; all built-ins in a given stanza are enabled together.  Each stanza
     24 ; starts with a line identifying the circumstances in which the group of
     25 ; functions is permitted, with the gating predicate in square brackets.
     26 ; For example, this could be
     27 ;
     28 ;     [altivec]
     29 ;
     30 ;   or it could be
     31 ;
     32 ;     [power9]
     33 ;
     34 ; The bracketed gating predicate is the only information allowed on
     35 ; the stanza header line, other than whitespace.
     36 ;
     37 ; Following the stanza header are two lines for each function: the
     38 ; prototype line and the attributes line.  The prototype line has
     39 ; this format, where the square brackets indicate optional
     40 ; information and angle brackets indicate required information:
     41 ;
     42 ;   [kind] <return-type> <bif-name> (<argument-list>);
     43 ;
     44 ; Here [kind] can be one of "const", "pure", or "fpmath";
     45 ; <return-type> is a legal type for a built-in function result;
     46 ; <bif-name> is the name by which the function can be called;
     47 ; and <argument-list> is a comma-separated list of legal types
     48 ; for built-in function arguments.  The argument list may be
     49 ; empty, but the parentheses and semicolon are required.
     50 ;
     51 ; A legal type is of the form:
     52 ;
     53 ;   [const] [[signed|unsigned] <basetype> | <vectype>] [*]
     54 ;
     55 ; where "const" applies only to a <basetype> of "int".  Legal values
     56 ; of <basetype> are (for now):
     57 ;
     58 ;   char
     59 ;   short
     60 ;   int
     61 ;   long
     62 ;   long double
     63 ;   long long
     64 ;   float
     65 ;   double
     66 ;   __int128
     67 ;   _Float128
     68 ;   bool
     69 ;   string
     70 ;   _Decimal32
     71 ;   _Decimal64
     72 ;   _Decimal128
     73 ;   __ibm128
     74 ;
     75 ; Legal values of <vectype> are as follows, and are shorthand for
     76 ; the associated meaning:
     77 ;
     78 ;   vsc		vector signed char
     79 ;   vuc		vector unsigned char
     80 ;   vbc		vector bool char
     81 ;   vss		vector signed short
     82 ;   vus		vector unsigned short
     83 ;   vbs		vector bool short
     84 ;   vsi		vector signed int
     85 ;   vui		vector unsigned int
     86 ;   vbi		vector bool int
     87 ;   vsll	vector signed long long
     88 ;   vull	vector unsigned long long
     89 ;   vbll	vector bool long long
     90 ;   vsq		vector signed __int128
     91 ;   vuq		vector unsigned __int128
     92 ;   vbq		vector bool __int128
     93 ;   vp		vector pixel
     94 ;   vf		vector float
     95 ;   vd		vector double
     96 ;   v256	__vector_pair
     97 ;   v512	__vector_quad
     98 ;
     99 ; For simplicity, We don't support "short int" and "long long int".
    100 ; We don't currently support a <basetype> of "_Float16".  "signed"
    101 ; and "unsigned" only apply to integral base types.  The optional *
    102 ; indicates a pointer type.
    103 ;
    104 ; The attributes line looks like this:
    105 ;
    106 ;   <bif-id> <bif-pattern> {<attribute-list>}
    107 ;
    108 ; Here <bif-id> is a unique internal identifier for the built-in
    109 ; function that will be used as part of an enumeration of all
    110 ; built-in functions; <bif-pattern> is the define_expand or
    111 ; define_insn that will be invoked when the call is expanded;
    112 ; and <attribute-list> is a comma-separated list of special
    113 ; conditions that apply to the built-in function.  The attribute
    114 ; list may be empty, but the braces are required.
    115 ;
    116 ; Attributes are strings, and the allowed ones are listed below.
    117 ;
    118 ;   init     Process as a vec_init function
    119 ;   set      Process as a vec_set function
    120 ;   extract  Process as a vec_extract function
    121 ;   nosoft   Not valid with -msoft-float
    122 ;   ldvec    Needs special handling for vec_ld semantics
    123 ;   stvec    Needs special handling for vec_st semantics
    124 ;   reve     Needs special handling for element reversal
    125 ;   pred     Needs special handling for comparison predicates
    126 ;   htm      Needs special handling for transactional memory
    127 ;   htmspr   HTM function using an SPR
    128 ;   htmcr    HTM function using a CR
    129 ;   mma      Needs special handling for MMA
    130 ;   quad     MMA instruction using a register quad as an input operand
    131 ;   pair     MMA instruction using a register pair as an input operand
    132 ;   mmaint   MMA instruction expanding to internal call at GIMPLE time
    133 ;   no32bit  Not valid for TARGET_32BIT
    134 ;   32bit    Requires different handling for TARGET_32BIT
    135 ;   cpu      This is a "cpu_is" or "cpu_supports" builtin
    136 ;   ldstmask Altivec mask for load or store
    137 ;   lxvrse   Needs special handling for load-rightmost, sign-extended
    138 ;   lxvrze   Needs special handling for load-rightmost, zero-extended
    139 ;   endian   Needs special handling for endianness
    140 ;   ibmld    Restrict usage to the case when TFmode is IBM-128
    141 ;   ibm128   Restrict usage to the case where __ibm128 is supported or if ibmld
    142 ;
    143 ; Each attribute corresponds to extra processing required when
    144 ; the built-in is expanded.  All such special processing should
    145 ; be controlled by an attribute from now on.
    146 ;
    147 ; It is important to note that each entry's <bif-name> must be
    148 ; unique.  The code generated from this file will call def_builtin
    149 ; for each entry, and this can only happen once per name.
    150 ;
    151 ; The type signature for the builtin must match the modes of the RTL
    152 ; pattern <bif-pattern>.  When a builtin is used only as a basis for
    153 ; overloading, you can use an arbitrary type for each mode (for example,
    154 ; for V8HImode, you could use vp, vss, vus, or vbs).  The overloading
    155 ; machinery takes care of adding appropriate casts between vectors to
    156 ; satisfy impedance matching.  The overloaded prototypes are the ones
    157 ; that must match what users expect.  Thus you will often have a small
    158 ; number of entries in this file that correspond to a much greater
    159 ; number of entries in rs6000-overload.def.
    160 ;
    161 ; However, builtins in this file that are expected to be directly called
    162 ; by users must have one version for each expected type combination.
    163 ;
    164 ; Eventually we want to automatically generate built-in documentation
    165 ; from the entries in this file.  Documenting of built-ins with more
    166 ; than one acceptable prototype can be done by cross-referencing
    167 ; against rs6000-overload.def and picking up the allowable prototypes
    168 ; from there.
    169 ;
    170 ; Blank lines may be used as desired in this file between the lines as
    171 ; defined above; that is, you can introduce as many extra newlines as you
    172 ; like after a required newline, but nowhere else.  Lines beginning with
    173 ; a semicolon are also treated as blank lines.
    174 ;
    175 ; A const int argument may be restricted to certain values.  This is
    176 ; indicated by one of the following occurring after the "int" token:
    177 ;
    178 ;    <x>   restricts the constant to x bits, interpreted as unsigned
    179 ;    <x,y> restricts the constant to the inclusive range [x,y]
    180 ;    [x,y] restricts the constant to the inclusive range [x,y],
    181 ;	   but only applies if the argument is constant.
    182 ;    {x,y} restricts the constant to one of two values, x or y.
    183 ;
    184 ; Here x and y are integer tokens.  Note that the "const" token is a
    185 ; lie when the restriction is [x,y], but this simplifies the parsing
    186 ; significantly and is hopefully forgivable.
    187 
    188 
    189 
    190 ; Builtins that have been around since time immemorial or are just
    191 ; considered available everywhere.
    192 [always]
    193 ; __builtin_cfstring is for Darwin, which will replace the decl we
    194 ; create here with another one during subtarget processing.  We just
    195 ; need to ensure it has a slot in the builtin enumeration.
    196   void __builtin_cfstring ();
    197     CFSTRING nothing {}
    198 
    199   void __builtin_cpu_init ();
    200     CPU_INIT nothing {cpu}
    201 
    202   bool __builtin_cpu_is (string);
    203     CPU_IS nothing {cpu}
    204 
    205   bool __builtin_cpu_supports (string);
    206     CPU_SUPPORTS nothing {cpu}
    207 
    208   unsigned long long __builtin_ppc_get_timebase ();
    209     GET_TB rs6000_get_timebase {}
    210 
    211   double __builtin_mffs ();
    212     MFFS rs6000_mffs {}
    213 
    214 ; Although the mffsl instruction is only available on POWER9 and later
    215 ; processors, this builtin automatically falls back to mffs on older
    216 ; platforms.  Thus it appears here in the [always] stanza.
    217   double __builtin_mffsl ();
    218     MFFSL rs6000_mffsl {nosoft}
    219 
    220 ; This is redundant with __builtin_pack_ibm128, as it requires long
    221 ; double to be __ibm128.  Should probably be deprecated.
    222   const long double __builtin_pack_longdouble (double, double);
    223     PACK_TF packtf {ibmld}
    224 
    225   unsigned long __builtin_ppc_mftb ();
    226     MFTB rs6000_mftb_di {32bit}
    227 
    228   void __builtin_mtfsb0 (const int<5>);
    229     MTFSB0 rs6000_mtfsb0 {nosoft}
    230 
    231   void __builtin_mtfsb1 (const int<5>);
    232     MTFSB1 rs6000_mtfsb1 {nosoft}
    233 
    234   void __builtin_mtfsf (const int<8>, double);
    235     MTFSF rs6000_mtfsf {}
    236 
    237   const __ibm128 __builtin_pack_ibm128 (double, double);
    238     PACK_IF packif {ibm128}
    239 
    240   void __builtin_set_fpscr_rn (const int[0,3]);
    241     SET_FPSCR_RN rs6000_set_fpscr_rn {nosoft}
    242 
    243   const double __builtin_unpack_ibm128 (__ibm128, const int<1>);
    244     UNPACK_IF unpackif {ibm128}
    245 
    246 ; This is redundant with __builtin_unpack_ibm128, as it requires long
    247 ; double to be __ibm128.  Should probably be deprecated.
    248   const double __builtin_unpack_longdouble (long double, const int<1>);
    249     UNPACK_TF unpacktf {ibmld}
    250 
    251 
    252 ; Builtins that have been around just about forever, but not quite.
    253 [power5]
    254   fpmath double __builtin_recipdiv (double, double);
    255     RECIP recipdf3 {}
    256 
    257   fpmath float __builtin_recipdivf (float, float);
    258     RECIPF recipsf3 {}
    259 
    260   fpmath double __builtin_rsqrt (double);
    261     RSQRT rsqrtdf2 {}
    262 
    263   fpmath float __builtin_rsqrtf (float);
    264     RSQRTF rsqrtsf2 {}
    265 
    266 
    267 ; Power6 builtins (ISA 2.05).
    268 [power6]
    269   const signed int __builtin_p6_cmpb_32 (signed int, signed int);
    270     CMPB_32 cmpbsi3 {}
    271 
    272 
    273 ; Power6 builtins requiring 64-bit GPRs (even with 32-bit addressing).
    274 [power6-64]
    275   const signed long __builtin_p6_cmpb (signed long, signed long);
    276     CMPB cmpbdi3 {no32bit}
    277 
    278 
    279 ; AltiVec builtins.
    280 [altivec]
    281   const vsc __builtin_altivec_abs_v16qi (vsc);
    282     ABS_V16QI absv16qi2 {}
    283 
    284   const vf __builtin_altivec_abs_v4sf (vf);
    285     ABS_V4SF absv4sf2 {}
    286 
    287   const vsi __builtin_altivec_abs_v4si (vsi);
    288     ABS_V4SI absv4si2 {}
    289 
    290   const vss __builtin_altivec_abs_v8hi (vss);
    291     ABS_V8HI absv8hi2 {}
    292 
    293   const vsc __builtin_altivec_abss_v16qi (vsc);
    294     ABSS_V16QI altivec_abss_v16qi {}
    295 
    296   const vsi __builtin_altivec_abss_v4si (vsi);
    297     ABSS_V4SI altivec_abss_v4si {}
    298 
    299   const vss __builtin_altivec_abss_v8hi (vss);
    300     ABSS_V8HI altivec_abss_v8hi {}
    301 
    302   const vf __builtin_altivec_copysignfp (vf, vf);
    303     COPYSIGN_V4SF vector_copysignv4sf3 {}
    304 
    305   void __builtin_altivec_dss (const int<2>);
    306     DSS altivec_dss {}
    307 
    308   void __builtin_altivec_dssall ();
    309     DSSALL altivec_dssall {}
    310 
    311   void __builtin_altivec_dst (void *, const int, const int<2>);
    312     DST altivec_dst {}
    313 
    314   void __builtin_altivec_dstst (void *, const int, const int<2>);
    315     DSTST altivec_dstst {}
    316 
    317   void __builtin_altivec_dststt (void *, const int, const int<2>);
    318     DSTSTT altivec_dststt {}
    319 
    320   void __builtin_altivec_dstt (void *, const int, const int<2>);
    321     DSTT altivec_dstt {}
    322 
    323   fpmath vsi __builtin_altivec_fix_sfsi (vf);
    324     FIX_V4SF_V4SI fix_truncv4sfv4si2 {}
    325 
    326   fpmath vui __builtin_altivec_fixuns_sfsi (vf);
    327     FIXUNS_V4SF_V4SI fixuns_truncv4sfv4si2 {}
    328 
    329   fpmath vf __builtin_altivec_float_sisf (vsi);
    330     FLOAT_V4SI_V4SF floatv4siv4sf2 {}
    331 
    332   pure vsc __builtin_altivec_lvebx (signed long, const void *);
    333     LVEBX altivec_lvebx {ldvec}
    334 
    335   pure vss __builtin_altivec_lvehx (signed long, const void *);
    336     LVEHX altivec_lvehx {ldvec}
    337 
    338   pure vsi __builtin_altivec_lvewx (signed long, const void *);
    339     LVEWX altivec_lvewx {ldvec}
    340 
    341   pure vuc __builtin_altivec_lvsl (signed long, const void *);
    342     LVSL altivec_lvsl {ldvec}
    343 
    344   pure vuc __builtin_altivec_lvsr (signed long, const void *);
    345     LVSR altivec_lvsr {ldvec}
    346 
    347   pure vsi __builtin_altivec_lvx (signed long, const void *);
    348     LVX altivec_lvx_v4si {ldvec}
    349 
    350   pure vsq __builtin_altivec_lvx_v1ti (signed long, const void *);
    351     LVX_V1TI altivec_lvx_v1ti {ldvec}
    352 
    353   pure vsc __builtin_altivec_lvx_v16qi (signed long, const void *);
    354     LVX_V16QI altivec_lvx_v16qi {ldvec}
    355 
    356   pure vf __builtin_altivec_lvx_v4sf (signed long, const void *);
    357     LVX_V4SF altivec_lvx_v4sf {ldvec}
    358 
    359   pure vsi __builtin_altivec_lvx_v4si (signed long, const void *);
    360     LVX_V4SI altivec_lvx_v4si {ldvec}
    361 
    362   pure vss __builtin_altivec_lvx_v8hi (signed long, const void *);
    363     LVX_V8HI altivec_lvx_v8hi {ldvec}
    364 
    365   pure vsi __builtin_altivec_lvxl (signed long, const void *);
    366     LVXL altivec_lvxl_v4si {ldvec}
    367 
    368   pure vsc __builtin_altivec_lvxl_v16qi (signed long, const void *);
    369     LVXL_V16QI altivec_lvxl_v16qi {ldvec}
    370 
    371   pure vf __builtin_altivec_lvxl_v4sf (signed long, const void *);
    372     LVXL_V4SF altivec_lvxl_v4sf {ldvec}
    373 
    374   pure vsi __builtin_altivec_lvxl_v4si (signed long, const void *);
    375     LVXL_V4SI altivec_lvxl_v4si {ldvec}
    376 
    377   pure vss __builtin_altivec_lvxl_v8hi (signed long, const void *);
    378     LVXL_V8HI altivec_lvxl_v8hi {ldvec}
    379 
    380   const vsc __builtin_altivec_mask_for_load (const void *);
    381     MASK_FOR_LOAD altivec_lvsr_direct {ldstmask}
    382 
    383   vss __builtin_altivec_mfvscr ();
    384     MFVSCR altivec_mfvscr {}
    385 
    386   void __builtin_altivec_mtvscr (vsi);
    387     MTVSCR altivec_mtvscr {}
    388 
    389   const vsll __builtin_altivec_vmulesw (vsi, vsi);
    390     VMULESW vec_widen_smult_even_v4si {}
    391 
    392   const vull __builtin_altivec_vmuleuw (vui, vui);
    393     VMULEUW vec_widen_umult_even_v4si {}
    394 
    395   const vsll __builtin_altivec_vmulosw (vsi, vsi);
    396     VMULOSW vec_widen_smult_odd_v4si {}
    397 
    398   const vull __builtin_altivec_vmulouw (vui, vui);
    399     VMULOUW vec_widen_umult_odd_v4si {}
    400 
    401   const vsc __builtin_altivec_nabs_v16qi (vsc);
    402     NABS_V16QI nabsv16qi2 {}
    403 
    404   const vf __builtin_altivec_nabs_v4sf (vf);
    405     NABS_V4SF vsx_nabsv4sf2 {}
    406 
    407   const vsi __builtin_altivec_nabs_v4si (vsi);
    408     NABS_V4SI nabsv4si2 {}
    409 
    410   const vss __builtin_altivec_nabs_v8hi (vss);
    411     NABS_V8HI nabsv8hi2 {}
    412 
    413   const vsc __builtin_altivec_neg_v16qi (vsc);
    414     NEG_V16QI negv16qi2 {}
    415 
    416   const vf __builtin_altivec_neg_v4sf (vf);
    417     NEG_V4SF negv4sf2 {}
    418 
    419   const vsi __builtin_altivec_neg_v4si (vsi);
    420     NEG_V4SI negv4si2 {}
    421 
    422   const vss __builtin_altivec_neg_v8hi (vss);
    423     NEG_V8HI negv8hi2 {}
    424 
    425   void __builtin_altivec_stvebx (vsc, signed long, void *);
    426     STVEBX altivec_stvebx {stvec}
    427 
    428   void __builtin_altivec_stvehx (vss, signed long, void *);
    429     STVEHX altivec_stvehx {stvec}
    430 
    431   void __builtin_altivec_stvewx (vsi, signed long, void *);
    432     STVEWX altivec_stvewx {stvec}
    433 
    434   void __builtin_altivec_stvx (vsi, signed long, void *);
    435     STVX altivec_stvx_v4si {stvec}
    436 
    437   void __builtin_altivec_stvx_v16qi (vsc, signed long, void *);
    438     STVX_V16QI altivec_stvx_v16qi {stvec}
    439 
    440   void __builtin_altivec_stvx_v4sf (vf, signed long, void *);
    441     STVX_V4SF altivec_stvx_v4sf {stvec}
    442 
    443   void __builtin_altivec_stvx_v4si (vsi, signed long, void *);
    444     STVX_V4SI altivec_stvx_v4si {stvec}
    445 
    446   void __builtin_altivec_stvx_v8hi (vss, signed long, void *);
    447     STVX_V8HI altivec_stvx_v8hi {stvec}
    448 
    449   void __builtin_altivec_stvxl (vsi, signed long, void *);
    450     STVXL altivec_stvxl_v4si {stvec}
    451 
    452   void __builtin_altivec_stvxl_v16qi (vsc, signed long, void *);
    453     STVXL_V16QI altivec_stvxl_v16qi {stvec}
    454 
    455   void __builtin_altivec_stvxl_v4sf (vf, signed long, void *);
    456     STVXL_V4SF altivec_stvxl_v4sf {stvec}
    457 
    458   void __builtin_altivec_stvxl_v4si (vsi, signed long, void *);
    459     STVXL_V4SI altivec_stvxl_v4si {stvec}
    460 
    461   void __builtin_altivec_stvxl_v8hi (vss, signed long, void *);
    462     STVXL_V8HI altivec_stvxl_v8hi {stvec}
    463 
    464   fpmath vf __builtin_altivec_uns_float_sisf (vui);
    465     UNSFLOAT_V4SI_V4SF floatunsv4siv4sf2 {}
    466 
    467   const vui __builtin_altivec_vaddcuw (vui, vui);
    468     VADDCUW altivec_vaddcuw {}
    469 
    470   const vf __builtin_altivec_vaddfp (vf, vf);
    471     VADDFP addv4sf3 {}
    472 
    473   const vsc __builtin_altivec_vaddsbs (vsc, vsc);
    474     VADDSBS altivec_vaddsbs {}
    475 
    476   const vss __builtin_altivec_vaddshs (vss, vss);
    477     VADDSHS altivec_vaddshs {}
    478 
    479   const vsi __builtin_altivec_vaddsws (vsi, vsi);
    480     VADDSWS altivec_vaddsws {}
    481 
    482   const vuc __builtin_altivec_vaddubm (vuc, vuc);
    483     VADDUBM addv16qi3 {}
    484 
    485   const vuc __builtin_altivec_vaddubs (vuc, vuc);
    486     VADDUBS altivec_vaddubs {}
    487 
    488   const vus __builtin_altivec_vadduhm (vus, vus);
    489     VADDUHM addv8hi3 {}
    490 
    491   const vus __builtin_altivec_vadduhs (vus, vus);
    492     VADDUHS altivec_vadduhs {}
    493 
    494   const vsi __builtin_altivec_vadduwm (vsi, vsi);
    495     VADDUWM addv4si3 {}
    496 
    497   const vui __builtin_altivec_vadduws (vui, vui);
    498     VADDUWS altivec_vadduws {}
    499 
    500   const vsc __builtin_altivec_vand_v16qi (vsc, vsc);
    501     VAND_V16QI andv16qi3 {}
    502 
    503   const vuc __builtin_altivec_vand_v16qi_uns (vuc, vuc);
    504     VAND_V16QI_UNS andv16qi3 {}
    505 
    506   const vf __builtin_altivec_vand_v4sf (vf, vf);
    507     VAND_V4SF andv4sf3 {}
    508 
    509   const vsi __builtin_altivec_vand_v4si (vsi, vsi);
    510     VAND_V4SI andv4si3 {}
    511 
    512   const vui __builtin_altivec_vand_v4si_uns (vui, vui);
    513     VAND_V4SI_UNS andv4si3 {}
    514 
    515   const vss __builtin_altivec_vand_v8hi (vss, vss);
    516     VAND_V8HI andv8hi3 {}
    517 
    518   const vus __builtin_altivec_vand_v8hi_uns (vus, vus);
    519     VAND_V8HI_UNS andv8hi3 {}
    520 
    521   const vsc __builtin_altivec_vandc_v16qi (vsc, vsc);
    522     VANDC_V16QI andcv16qi3 {}
    523 
    524   const vuc __builtin_altivec_vandc_v16qi_uns (vuc, vuc);
    525     VANDC_V16QI_UNS andcv16qi3 {}
    526 
    527   const vf __builtin_altivec_vandc_v4sf (vf, vf);
    528     VANDC_V4SF andcv4sf3 {}
    529 
    530   const vsi __builtin_altivec_vandc_v4si (vsi, vsi);
    531     VANDC_V4SI andcv4si3 {}
    532 
    533   const vui __builtin_altivec_vandc_v4si_uns (vui, vui);
    534     VANDC_V4SI_UNS andcv4si3 {}
    535 
    536   const vss __builtin_altivec_vandc_v8hi (vss, vss);
    537     VANDC_V8HI andcv8hi3 {}
    538 
    539   const vus __builtin_altivec_vandc_v8hi_uns (vus, vus);
    540     VANDC_V8HI_UNS andcv8hi3 {}
    541 
    542   const vsc __builtin_altivec_vavgsb (vsc, vsc);
    543     VAVGSB avgv16qi3_ceil {}
    544 
    545   const vss __builtin_altivec_vavgsh (vss, vss);
    546     VAVGSH avgv8hi3_ceil {}
    547 
    548   const vsi __builtin_altivec_vavgsw (vsi, vsi);
    549     VAVGSW avgv4si3_ceil {}
    550 
    551   const vuc __builtin_altivec_vavgub (vuc, vuc);
    552     VAVGUB uavgv16qi3_ceil {}
    553 
    554   const vus __builtin_altivec_vavguh (vus, vus);
    555     VAVGUH uavgv8hi3_ceil {}
    556 
    557   const vui __builtin_altivec_vavguw (vui, vui);
    558     VAVGUW uavgv4si3_ceil {}
    559 
    560   const vf __builtin_altivec_vcfsx (vsi, const int<5>);
    561     VCFSX altivec_vcfsx {}
    562 
    563   const vf __builtin_altivec_vcfux (vui, const int<5>);
    564     VCFUX altivec_vcfux {}
    565 
    566   const vsi __builtin_altivec_vcmpbfp (vf, vf);
    567     VCMPBFP altivec_vcmpbfp {}
    568 
    569   const int __builtin_altivec_vcmpbfp_p (int, vf, vf);
    570     VCMPBFP_P altivec_vcmpbfp_p {pred}
    571 
    572   const vf __builtin_altivec_vcmpeqfp (vf, vf);
    573     VCMPEQFP vector_eqv4sf {}
    574 
    575   const int __builtin_altivec_vcmpeqfp_p (int, vf, vf);
    576     VCMPEQFP_P vector_eq_v4sf_p {pred}
    577 
    578   const vsc __builtin_altivec_vcmpequb (vuc, vuc);
    579     VCMPEQUB vector_eqv16qi {}
    580 
    581   const int __builtin_altivec_vcmpequb_p (int, vsc, vsc);
    582     VCMPEQUB_P vector_eq_v16qi_p {pred}
    583 
    584   const vss __builtin_altivec_vcmpequh (vus, vus);
    585     VCMPEQUH vector_eqv8hi {}
    586 
    587   const int __builtin_altivec_vcmpequh_p (int, vss, vss);
    588     VCMPEQUH_P vector_eq_v8hi_p {pred}
    589 
    590   const vsi __builtin_altivec_vcmpequw (vui, vui);
    591     VCMPEQUW vector_eqv4si {}
    592 
    593   const int __builtin_altivec_vcmpequw_p (int, vsi, vsi);
    594     VCMPEQUW_P vector_eq_v4si_p {pred}
    595 
    596   const vf __builtin_altivec_vcmpgefp (vf, vf);
    597     VCMPGEFP vector_gev4sf {}
    598 
    599   const int __builtin_altivec_vcmpgefp_p (int, vf, vf);
    600     VCMPGEFP_P vector_ge_v4sf_p {pred}
    601 
    602   const vf __builtin_altivec_vcmpgtfp (vf, vf);
    603     VCMPGTFP vector_gtv4sf {}
    604 
    605   const int __builtin_altivec_vcmpgtfp_p (int, vf, vf);
    606     VCMPGTFP_P vector_gt_v4sf_p {pred}
    607 
    608   const vsc __builtin_altivec_vcmpgtsb (vsc, vsc);
    609     VCMPGTSB vector_gtv16qi {}
    610 
    611   const int __builtin_altivec_vcmpgtsb_p (int, vsc, vsc);
    612     VCMPGTSB_P vector_gt_v16qi_p {pred}
    613 
    614   const vss __builtin_altivec_vcmpgtsh (vss, vss);
    615     VCMPGTSH vector_gtv8hi {}
    616 
    617   const int __builtin_altivec_vcmpgtsh_p (int, vss, vss);
    618     VCMPGTSH_P vector_gt_v8hi_p {pred}
    619 
    620   const vsi __builtin_altivec_vcmpgtsw (vsi, vsi);
    621     VCMPGTSW vector_gtv4si {}
    622 
    623   const int __builtin_altivec_vcmpgtsw_p (int, vsi, vsi);
    624     VCMPGTSW_P vector_gt_v4si_p {pred}
    625 
    626   const vsc __builtin_altivec_vcmpgtub (vuc, vuc);
    627     VCMPGTUB vector_gtuv16qi {}
    628 
    629   const int __builtin_altivec_vcmpgtub_p (int, vsc, vsc);
    630     VCMPGTUB_P vector_gtu_v16qi_p {pred}
    631 
    632   const vss __builtin_altivec_vcmpgtuh (vus, vus);
    633     VCMPGTUH vector_gtuv8hi {}
    634 
    635   const int __builtin_altivec_vcmpgtuh_p (int, vss, vss);
    636     VCMPGTUH_P vector_gtu_v8hi_p {pred}
    637 
    638   const vsi __builtin_altivec_vcmpgtuw (vui, vui);
    639     VCMPGTUW vector_gtuv4si {}
    640 
    641   const int __builtin_altivec_vcmpgtuw_p (int, vsi, vsi);
    642     VCMPGTUW_P vector_gtu_v4si_p {pred}
    643 
    644   const vsi __builtin_altivec_vctsxs (vf, const int<5>);
    645     VCTSXS altivec_vctsxs {}
    646 
    647   const vui __builtin_altivec_vctuxs (vf, const int<5>);
    648     VCTUXS altivec_vctuxs {}
    649 
    650   fpmath vf __builtin_altivec_vexptefp (vf);
    651     VEXPTEFP altivec_vexptefp {}
    652 
    653   fpmath vf __builtin_altivec_vlogefp (vf);
    654     VLOGEFP altivec_vlogefp {}
    655 
    656   fpmath vf __builtin_altivec_vmaddfp (vf, vf, vf);
    657     VMADDFP fmav4sf4 {}
    658 
    659   const vf __builtin_altivec_vmaxfp (vf, vf);
    660     VMAXFP smaxv4sf3 {}
    661 
    662   const vsc __builtin_altivec_vmaxsb (vsc, vsc);
    663     VMAXSB smaxv16qi3 {}
    664 
    665   const vuc __builtin_altivec_vmaxub (vuc, vuc);
    666     VMAXUB umaxv16qi3 {}
    667 
    668   const vss __builtin_altivec_vmaxsh (vss, vss);
    669     VMAXSH smaxv8hi3 {}
    670 
    671   const vsi __builtin_altivec_vmaxsw (vsi, vsi);
    672     VMAXSW smaxv4si3 {}
    673 
    674   const vus __builtin_altivec_vmaxuh (vus, vus);
    675     VMAXUH umaxv8hi3 {}
    676 
    677   const vui __builtin_altivec_vmaxuw (vui, vui);
    678     VMAXUW umaxv4si3 {}
    679 
    680   vss __builtin_altivec_vmhaddshs (vss, vss, vss);
    681     VMHADDSHS altivec_vmhaddshs {}
    682 
    683   vss __builtin_altivec_vmhraddshs (vss, vss, vss);
    684     VMHRADDSHS altivec_vmhraddshs {}
    685 
    686   const vf __builtin_altivec_vminfp (vf, vf);
    687     VMINFP sminv4sf3 {}
    688 
    689   const vsc __builtin_altivec_vminsb (vsc, vsc);
    690     VMINSB sminv16qi3 {}
    691 
    692   const vss __builtin_altivec_vminsh (vss, vss);
    693     VMINSH sminv8hi3 {}
    694 
    695   const vsi __builtin_altivec_vminsw (vsi, vsi);
    696     VMINSW sminv4si3 {}
    697 
    698   const vuc __builtin_altivec_vminub (vuc, vuc);
    699     VMINUB uminv16qi3 {}
    700 
    701   const vus __builtin_altivec_vminuh (vus, vus);
    702     VMINUH uminv8hi3 {}
    703 
    704   const vui __builtin_altivec_vminuw (vui, vui);
    705     VMINUW uminv4si3 {}
    706 
    707   const vss __builtin_altivec_vmladduhm (vss, vss, vss);
    708     VMLADDUHM fmav8hi4 {}
    709 
    710   const vsc __builtin_altivec_vmrghb (vsc, vsc);
    711     VMRGHB altivec_vmrghb {}
    712 
    713   const vss __builtin_altivec_vmrghh (vss, vss);
    714     VMRGHH altivec_vmrghh {}
    715 
    716   const vsi __builtin_altivec_vmrghw (vsi, vsi);
    717     VMRGHW altivec_vmrghw {}
    718 
    719   const vsc __builtin_altivec_vmrglb (vsc, vsc);
    720     VMRGLB altivec_vmrglb {}
    721 
    722   const vss __builtin_altivec_vmrglh (vss, vss);
    723     VMRGLH altivec_vmrglh {}
    724 
    725   const vsi __builtin_altivec_vmrglw (vsi, vsi);
    726     VMRGLW altivec_vmrglw {}
    727 
    728   const vsi __builtin_altivec_vmsummbm (vsc, vuc, vsi);
    729     VMSUMMBM altivec_vmsummbm {}
    730 
    731   const vsi __builtin_altivec_vmsumshm (vss, vss, vsi);
    732     VMSUMSHM altivec_vmsumshm {}
    733 
    734   vsi __builtin_altivec_vmsumshs (vss, vss, vsi);
    735     VMSUMSHS altivec_vmsumshs {}
    736 
    737   const vui __builtin_altivec_vmsumubm (vuc, vuc, vui);
    738     VMSUMUBM altivec_vmsumubm {}
    739 
    740   const vui __builtin_altivec_vmsumuhm (vus, vus, vui);
    741     VMSUMUHM altivec_vmsumuhm {}
    742 
    743   vui __builtin_altivec_vmsumuhs (vus, vus, vui);
    744     VMSUMUHS altivec_vmsumuhs {}
    745 
    746   const vss __builtin_altivec_vmulesb (vsc, vsc);
    747     VMULESB vec_widen_smult_even_v16qi {}
    748 
    749   const vsi __builtin_altivec_vmulesh (vss, vss);
    750     VMULESH vec_widen_smult_even_v8hi {}
    751 
    752   const vus __builtin_altivec_vmuleub (vuc, vuc);
    753     VMULEUB vec_widen_umult_even_v16qi {}
    754 
    755   const vui __builtin_altivec_vmuleuh (vus, vus);
    756     VMULEUH vec_widen_umult_even_v8hi {}
    757 
    758   const vss __builtin_altivec_vmulosb (vsc, vsc);
    759     VMULOSB vec_widen_smult_odd_v16qi {}
    760 
    761   const vus __builtin_altivec_vmuloub (vuc, vuc);
    762     VMULOUB vec_widen_umult_odd_v16qi {}
    763 
    764   const vsi __builtin_altivec_vmulosh (vss, vss);
    765     VMULOSH vec_widen_smult_odd_v8hi {}
    766 
    767   const vui __builtin_altivec_vmulouh (vus, vus);
    768     VMULOUH vec_widen_umult_odd_v8hi {}
    769 
    770   fpmath vf __builtin_altivec_vnmsubfp (vf, vf, vf);
    771     VNMSUBFP nfmsv4sf4 {}
    772 
    773   const vsc __builtin_altivec_vnor_v16qi (vsc, vsc);
    774     VNOR_V16QI norv16qi3 {}
    775 
    776   const vuc __builtin_altivec_vnor_v16qi_uns (vuc, vuc);
    777     VNOR_V16QI_UNS norv16qi3 {}
    778 
    779   const vf __builtin_altivec_vnor_v4sf (vf, vf);
    780     VNOR_V4SF norv4sf3 {}
    781 
    782   const vsi __builtin_altivec_vnor_v4si (vsi, vsi);
    783     VNOR_V4SI norv4si3 {}
    784 
    785   const vui __builtin_altivec_vnor_v4si_uns (vui, vui);
    786     VNOR_V4SI_UNS norv4si3 {}
    787 
    788   const vss __builtin_altivec_vnor_v8hi (vss, vss);
    789     VNOR_V8HI norv8hi3 {}
    790 
    791   const vus __builtin_altivec_vnor_v8hi_uns (vus, vus);
    792     VNOR_V8HI_UNS norv8hi3 {}
    793 
    794   const vsc __builtin_altivec_vor_v16qi (vsc, vsc);
    795     VOR_V16QI iorv16qi3 {}
    796 
    797   const vuc __builtin_altivec_vor_v16qi_uns (vuc, vuc);
    798     VOR_V16QI_UNS iorv16qi3 {}
    799 
    800   const vf __builtin_altivec_vor_v4sf (vf, vf);
    801     VOR_V4SF iorv4sf3 {}
    802 
    803   const vsi __builtin_altivec_vor_v4si (vsi, vsi);
    804     VOR_V4SI iorv4si3 {}
    805 
    806   const vui __builtin_altivec_vor_v4si_uns (vui, vui);
    807     VOR_V4SI_UNS iorv4si3 {}
    808 
    809   const vss __builtin_altivec_vor_v8hi (vss, vss);
    810     VOR_V8HI iorv8hi3 {}
    811 
    812   const vus __builtin_altivec_vor_v8hi_uns (vus, vus);
    813     VOR_V8HI_UNS iorv8hi3 {}
    814 
    815   const vsc __builtin_altivec_vperm_16qi (vsc, vsc, vuc);
    816     VPERM_16QI altivec_vperm_v16qi {}
    817 
    818   const vuc __builtin_altivec_vperm_16qi_uns (vuc, vuc, vuc);
    819     VPERM_16QI_UNS altivec_vperm_v16qi_uns {}
    820 
    821   const vsq __builtin_altivec_vperm_1ti (vsq, vsq, vuc);
    822     VPERM_1TI altivec_vperm_v1ti {}
    823 
    824   const vuq __builtin_altivec_vperm_1ti_uns (vuq, vuq, vuc);
    825     VPERM_1TI_UNS altivec_vperm_v1ti_uns {}
    826 
    827   const vf __builtin_altivec_vperm_4sf (vf, vf, vuc);
    828     VPERM_4SF altivec_vperm_v4sf {}
    829 
    830   const vsi __builtin_altivec_vperm_4si (vsi, vsi, vuc);
    831     VPERM_4SI altivec_vperm_v4si {}
    832 
    833   const vui __builtin_altivec_vperm_4si_uns (vui, vui, vuc);
    834     VPERM_4SI_UNS altivec_vperm_v4si_uns {}
    835 
    836   const vss __builtin_altivec_vperm_8hi (vss, vss, vuc);
    837     VPERM_8HI altivec_vperm_v8hi {}
    838 
    839   const vus __builtin_altivec_vperm_8hi_uns (vus, vus, vuc);
    840     VPERM_8HI_UNS altivec_vperm_v8hi_uns {}
    841 
    842   const vp __builtin_altivec_vpkpx (vui, vui);
    843     VPKPX altivec_vpkpx {}
    844 
    845   const vsc __builtin_altivec_vpkshss (vss, vss);
    846     VPKSHSS altivec_vpkshss {}
    847 
    848   const vuc __builtin_altivec_vpkshus (vss, vss);
    849     VPKSHUS altivec_vpkshus {}
    850 
    851   const vss __builtin_altivec_vpkswss (vsi, vsi);
    852     VPKSWSS altivec_vpkswss {}
    853 
    854   const vus __builtin_altivec_vpkswus (vsi, vsi);
    855     VPKSWUS altivec_vpkswus {}
    856 
    857   const vsc __builtin_altivec_vpkuhum (vss, vss);
    858     VPKUHUM altivec_vpkuhum {}
    859 
    860   const vuc __builtin_altivec_vpkuhus (vus, vus);
    861     VPKUHUS altivec_vpkuhus {}
    862 
    863   const vss __builtin_altivec_vpkuwum (vsi, vsi);
    864     VPKUWUM altivec_vpkuwum {}
    865 
    866   const vus __builtin_altivec_vpkuwus (vui, vui);
    867     VPKUWUS altivec_vpkuwus {}
    868 
    869   const vf __builtin_altivec_vrecipdivfp (vf, vf);
    870     VRECIPFP recipv4sf3 {}
    871 
    872   fpmath vf __builtin_altivec_vrefp (vf);
    873     VREFP rev4sf2 {}
    874 
    875   const vsc __builtin_altivec_vreve_v16qi (vsc);
    876     VREVE_V16QI altivec_vrevev16qi2 {}
    877 
    878   const vf __builtin_altivec_vreve_v4sf (vf);
    879     VREVE_V4SF altivec_vrevev4sf2 {}
    880 
    881   const vsi __builtin_altivec_vreve_v4si (vsi);
    882     VREVE_V4SI altivec_vrevev4si2 {}
    883 
    884   const vss __builtin_altivec_vreve_v8hi (vss);
    885     VREVE_V8HI altivec_vrevev8hi2 {}
    886 
    887   fpmath vf __builtin_altivec_vrfim (vf);
    888     VRFIM vector_floorv4sf2 {}
    889 
    890   fpmath vf __builtin_altivec_vrfin (vf);
    891     VRFIN altivec_vrfin {}
    892 
    893   fpmath vf __builtin_altivec_vrfip (vf);
    894     VRFIP vector_ceilv4sf2 {}
    895 
    896   fpmath vf __builtin_altivec_vrfiz (vf);
    897     VRFIZ vector_btruncv4sf2 {}
    898 
    899   const vsc __builtin_altivec_vrlb (vsc, vsc);
    900     VRLB vrotlv16qi3 {}
    901 
    902   const vss __builtin_altivec_vrlh (vss, vss);
    903     VRLH vrotlv8hi3 {}
    904 
    905   const vsi __builtin_altivec_vrlw (vsi, vsi);
    906     VRLW vrotlv4si3 {}
    907 
    908   fpmath vf __builtin_altivec_vrsqrtefp (vf);
    909     VRSQRTEFP rsqrtev4sf2 {}
    910 
    911   fpmath vf __builtin_altivec_vrsqrtfp (vf);
    912     VRSQRTFP rsqrtv4sf2 {}
    913 
    914   const vsc __builtin_altivec_vsel_16qi (vsc, vsc, vuc);
    915     VSEL_16QI vector_select_v16qi {}
    916 
    917   const vuc __builtin_altivec_vsel_16qi_uns (vuc, vuc, vuc);
    918     VSEL_16QI_UNS vector_select_v16qi_uns {}
    919 
    920   const vsq __builtin_altivec_vsel_1ti (vsq, vsq, vuq);
    921     VSEL_1TI vector_select_v1ti {}
    922 
    923   const vuq __builtin_altivec_vsel_1ti_uns (vuq, vuq, vuq);
    924     VSEL_1TI_UNS vector_select_v1ti_uns {}
    925 
    926   const vf __builtin_altivec_vsel_4sf (vf, vf, vf);
    927     VSEL_4SF vector_select_v4sf {}
    928 
    929   const vsi __builtin_altivec_vsel_4si (vsi, vsi, vui);
    930     VSEL_4SI vector_select_v4si {}
    931 
    932   const vui __builtin_altivec_vsel_4si_uns (vui, vui, vui);
    933     VSEL_4SI_UNS vector_select_v4si_uns {}
    934 
    935   const vss __builtin_altivec_vsel_8hi (vss, vss, vus);
    936     VSEL_8HI vector_select_v8hi {}
    937 
    938   const vus __builtin_altivec_vsel_8hi_uns (vus, vus, vus);
    939     VSEL_8HI_UNS vector_select_v8hi_uns {}
    940 
    941   const vsi __builtin_altivec_vsl (vsi, vsi);
    942     VSL altivec_vsl {}
    943 
    944   const vsc __builtin_altivec_vslb (vsc, vuc);
    945     VSLB vashlv16qi3 {}
    946 
    947   const vsc __builtin_altivec_vsldoi_16qi (vsc, vsc, const int<4>);
    948     VSLDOI_16QI altivec_vsldoi_v16qi {}
    949 
    950   const vf __builtin_altivec_vsldoi_4sf (vf, vf, const int<4>);
    951     VSLDOI_4SF altivec_vsldoi_v4sf {}
    952 
    953   const vsi __builtin_altivec_vsldoi_4si (vsi, vsi, const int<4>);
    954     VSLDOI_4SI altivec_vsldoi_v4si {}
    955 
    956   const vss __builtin_altivec_vsldoi_8hi (vss, vss, const int<4>);
    957     VSLDOI_8HI altivec_vsldoi_v8hi {}
    958 
    959   const vss __builtin_altivec_vslh (vss, vus);
    960     VSLH vashlv8hi3 {}
    961 
    962   const vsi __builtin_altivec_vslo (vsi, vsi);
    963     VSLO altivec_vslo {}
    964 
    965   const vsi __builtin_altivec_vslw (vsi, vui);
    966     VSLW vashlv4si3 {}
    967 
    968   const vsc __builtin_altivec_vspltb (vsc, const int<4>);
    969     VSPLTB altivec_vspltb {}
    970 
    971   const vss __builtin_altivec_vsplth (vss, const int<3>);
    972     VSPLTH altivec_vsplth {}
    973 
    974   const vsc __builtin_altivec_vspltisb (const int<-16,15>);
    975     VSPLTISB altivec_vspltisb {}
    976 
    977   const vss __builtin_altivec_vspltish (const int<-16,15>);
    978     VSPLTISH altivec_vspltish {}
    979 
    980   const vsi __builtin_altivec_vspltisw (const int<-16,15>);
    981     VSPLTISW altivec_vspltisw {}
    982 
    983   const vsi __builtin_altivec_vspltw (vsi, const int<2>);
    984     VSPLTW altivec_vspltw {}
    985 
    986   const vsi __builtin_altivec_vsr (vsi, vsi);
    987     VSR altivec_vsr {}
    988 
    989   const vsc __builtin_altivec_vsrab (vsc, vuc);
    990     VSRAB vashrv16qi3 {}
    991 
    992   const vss __builtin_altivec_vsrah (vss, vus);
    993     VSRAH vashrv8hi3 {}
    994 
    995   const vsi __builtin_altivec_vsraw (vsi, vui);
    996     VSRAW vashrv4si3 {}
    997 
    998   const vsc __builtin_altivec_vsrb (vsc, vuc);
    999     VSRB vlshrv16qi3 {}
   1000 
   1001   const vss __builtin_altivec_vsrh (vss, vus);
   1002     VSRH vlshrv8hi3 {}
   1003 
   1004   const vsi __builtin_altivec_vsro (vsi, vsi);
   1005     VSRO altivec_vsro {}
   1006 
   1007   const vsi __builtin_altivec_vsrw (vsi, vui);
   1008     VSRW vlshrv4si3 {}
   1009 
   1010   const vsi __builtin_altivec_vsubcuw (vsi, vsi);
   1011     VSUBCUW altivec_vsubcuw {}
   1012 
   1013   const vf __builtin_altivec_vsubfp (vf, vf);
   1014     VSUBFP subv4sf3 {}
   1015 
   1016   const vsc __builtin_altivec_vsubsbs (vsc, vsc);
   1017     VSUBSBS altivec_vsubsbs {}
   1018 
   1019   const vss __builtin_altivec_vsubshs (vss, vss);
   1020     VSUBSHS altivec_vsubshs {}
   1021 
   1022   const vsi __builtin_altivec_vsubsws (vsi, vsi);
   1023     VSUBSWS altivec_vsubsws {}
   1024 
   1025   const vuc __builtin_altivec_vsububm (vuc, vuc);
   1026     VSUBUBM subv16qi3 {}
   1027 
   1028   const vuc __builtin_altivec_vsububs (vuc, vuc);
   1029     VSUBUBS altivec_vsububs {}
   1030 
   1031   const vus __builtin_altivec_vsubuhm (vus, vus);
   1032     VSUBUHM subv8hi3 {}
   1033 
   1034   const vus __builtin_altivec_vsubuhs (vus, vus);
   1035     VSUBUHS altivec_vsubuhs {}
   1036 
   1037   const vui __builtin_altivec_vsubuwm (vui, vui);
   1038     VSUBUWM subv4si3 {}
   1039 
   1040   const vui __builtin_altivec_vsubuws (vui, vui);
   1041     VSUBUWS altivec_vsubuws {}
   1042 
   1043   const vsi __builtin_altivec_vsum2sws (vsi, vsi);
   1044     VSUM2SWS altivec_vsum2sws {}
   1045 
   1046   const vsi __builtin_altivec_vsum4sbs (vsc, vsi);
   1047     VSUM4SBS altivec_vsum4sbs {}
   1048 
   1049   const vsi __builtin_altivec_vsum4shs (vss, vsi);
   1050     VSUM4SHS altivec_vsum4shs {}
   1051 
   1052   const vui __builtin_altivec_vsum4ubs (vuc, vui);
   1053     VSUM4UBS altivec_vsum4ubs {}
   1054 
   1055   const vsi __builtin_altivec_vsumsws (vsi, vsi);
   1056     VSUMSWS altivec_vsumsws {}
   1057 
   1058   const vsi __builtin_altivec_vsumsws_be (vsi, vsi);
   1059     VSUMSWS_BE altivec_vsumsws_direct {}
   1060 
   1061   const vui __builtin_altivec_vupkhpx (vp);
   1062     VUPKHPX altivec_vupkhpx {}
   1063 
   1064   const vss __builtin_altivec_vupkhsb (vsc);
   1065     VUPKHSB altivec_vupkhsb {}
   1066 
   1067   const vsi __builtin_altivec_vupkhsh (vss);
   1068     VUPKHSH altivec_vupkhsh {}
   1069 
   1070   const vui __builtin_altivec_vupklpx (vp);
   1071     VUPKLPX altivec_vupklpx {}
   1072 
   1073   const vss __builtin_altivec_vupklsb (vsc);
   1074     VUPKLSB altivec_vupklsb {}
   1075 
   1076   const vsi __builtin_altivec_vupklsh (vss);
   1077     VUPKLSH altivec_vupklsh {}
   1078 
   1079   const vsc __builtin_altivec_vxor_v16qi (vsc, vsc);
   1080     VXOR_V16QI xorv16qi3 {}
   1081 
   1082   const vuc __builtin_altivec_vxor_v16qi_uns (vuc, vuc);
   1083     VXOR_V16QI_UNS xorv16qi3 {}
   1084 
   1085   const vf __builtin_altivec_vxor_v4sf (vf, vf);
   1086     VXOR_V4SF xorv4sf3 {}
   1087 
   1088   const vsi __builtin_altivec_vxor_v4si (vsi, vsi);
   1089     VXOR_V4SI xorv4si3 {}
   1090 
   1091   const vui __builtin_altivec_vxor_v4si_uns (vui, vui);
   1092     VXOR_V4SI_UNS xorv4si3 {}
   1093 
   1094   const vss __builtin_altivec_vxor_v8hi (vss, vss);
   1095     VXOR_V8HI xorv8hi3 {}
   1096 
   1097   const vus __builtin_altivec_vxor_v8hi_uns (vus, vus);
   1098     VXOR_V8HI_UNS xorv8hi3 {}
   1099 
   1100   const signed char __builtin_vec_ext_v16qi (vsc, signed int);
   1101     VEC_EXT_V16QI nothing {extract}
   1102 
   1103   const float __builtin_vec_ext_v4sf (vf, signed int);
   1104     VEC_EXT_V4SF nothing {extract}
   1105 
   1106   const signed int __builtin_vec_ext_v4si (vsi, signed int);
   1107     VEC_EXT_V4SI nothing {extract}
   1108 
   1109   const signed short __builtin_vec_ext_v8hi (vss, signed int);
   1110     VEC_EXT_V8HI nothing {extract}
   1111 
   1112   const vsc __builtin_vec_init_v16qi (signed char, signed char, signed char, \
   1113             signed char, signed char, signed char, signed char, signed char, \
   1114             signed char, signed char, signed char, signed char, signed char, \
   1115             signed char, signed char, signed char);
   1116     VEC_INIT_V16QI nothing {init}
   1117 
   1118   const vf __builtin_vec_init_v4sf (float, float, float, float);
   1119     VEC_INIT_V4SF nothing {init}
   1120 
   1121   const vsi __builtin_vec_init_v4si (signed int, signed int, signed int, \
   1122                                      signed int);
   1123     VEC_INIT_V4SI nothing {init}
   1124 
   1125   const vss __builtin_vec_init_v8hi (signed short, signed short, signed short,\
   1126              signed short, signed short, signed short, signed short, \
   1127              signed short);
   1128     VEC_INIT_V8HI nothing {init}
   1129 
   1130   const vsc __builtin_vec_set_v16qi (vsc, signed char, const int<4>);
   1131     VEC_SET_V16QI nothing {set}
   1132 
   1133   const vf __builtin_vec_set_v4sf (vf, float, const int<2>);
   1134     VEC_SET_V4SF nothing {set}
   1135 
   1136   const vsi __builtin_vec_set_v4si (vsi, signed int, const int<2>);
   1137     VEC_SET_V4SI nothing {set}
   1138 
   1139   const vss __builtin_vec_set_v8hi (vss, signed short, const int<3>);
   1140     VEC_SET_V8HI nothing {set}
   1141 
   1142 
   1143 ; Cell builtins.
   1144 [cell]
   1145   pure vsc __builtin_altivec_lvlx (signed long, const void *);
   1146     LVLX altivec_lvlx {ldvec}
   1147 
   1148   pure vsc __builtin_altivec_lvlxl (signed long, const void *);
   1149     LVLXL altivec_lvlxl {ldvec}
   1150 
   1151   pure vsc __builtin_altivec_lvrx (signed long, const void *);
   1152     LVRX altivec_lvrx {ldvec}
   1153 
   1154   pure vsc __builtin_altivec_lvrxl (signed long, const void *);
   1155     LVRXL altivec_lvrxl {ldvec}
   1156 
   1157   void __builtin_altivec_stvlx (vsc, signed long, void *);
   1158     STVLX altivec_stvlx {stvec}
   1159 
   1160   void __builtin_altivec_stvlxl (vsc, signed long, void *);
   1161     STVLXL altivec_stvlxl {stvec}
   1162 
   1163   void __builtin_altivec_stvrx (vsc, signed long, void *);
   1164     STVRX altivec_stvrx {stvec}
   1165 
   1166   void __builtin_altivec_stvrxl (vsc, signed long, void *);
   1167     STVRXL altivec_stvrxl {stvec}
   1168 
   1169 
   1170 ; VSX builtins.
   1171 [vsx]
   1172   pure vd __builtin_altivec_lvx_v2df (signed long, const void *);
   1173     LVX_V2DF altivec_lvx_v2df {ldvec}
   1174 
   1175   pure vsll __builtin_altivec_lvx_v2di (signed long, const void *);
   1176     LVX_V2DI altivec_lvx_v2di {ldvec}
   1177 
   1178   pure vd __builtin_altivec_lvxl_v2df (signed long, const void *);
   1179     LVXL_V2DF altivec_lvxl_v2df {ldvec}
   1180 
   1181   pure vsll __builtin_altivec_lvxl_v2di (signed long, const void *);
   1182     LVXL_V2DI altivec_lvxl_v2di {ldvec}
   1183 
   1184   const vd __builtin_altivec_nabs_v2df (vd);
   1185     NABS_V2DF vsx_nabsv2df2 {}
   1186 
   1187   const vsll __builtin_altivec_nabs_v2di (vsll);
   1188     NABS_V2DI nabsv2di2 {}
   1189 
   1190   const vd __builtin_altivec_neg_v2df (vd);
   1191     NEG_V2DF negv2df2 {}
   1192 
   1193   void __builtin_altivec_stvx_v2df (vd, signed long, void *);
   1194     STVX_V2DF altivec_stvx_v2df {stvec}
   1195 
   1196   void __builtin_altivec_stvx_v2di (vsll, signed long, void *);
   1197     STVX_V2DI altivec_stvx_v2di {stvec}
   1198 
   1199   void __builtin_altivec_stvxl_v2df (vd, signed long, void *);
   1200     STVXL_V2DF altivec_stvxl_v2df {stvec}
   1201 
   1202   void __builtin_altivec_stvxl_v2di (vsll, signed long, void *);
   1203     STVXL_V2DI altivec_stvxl_v2di {stvec}
   1204 
   1205   const vd __builtin_altivec_vand_v2df (vd, vd);
   1206     VAND_V2DF andv2df3 {}
   1207 
   1208   const vsll __builtin_altivec_vand_v2di (vsll, vsll);
   1209     VAND_V2DI andv2di3 {}
   1210 
   1211   const vull __builtin_altivec_vand_v2di_uns (vull, vull);
   1212     VAND_V2DI_UNS andv2di3 {}
   1213 
   1214   const vd __builtin_altivec_vandc_v2df (vd, vd);
   1215     VANDC_V2DF andcv2df3 {}
   1216 
   1217   const vsll __builtin_altivec_vandc_v2di (vsll, vsll);
   1218     VANDC_V2DI andcv2di3 {}
   1219 
   1220   const vull __builtin_altivec_vandc_v2di_uns (vull, vull);
   1221     VANDC_V2DI_UNS andcv2di3 {}
   1222 
   1223   const vd __builtin_altivec_vnor_v2df (vd, vd);
   1224     VNOR_V2DF norv2df3 {}
   1225 
   1226   const vsll __builtin_altivec_vnor_v2di (vsll, vsll);
   1227     VNOR_V2DI norv2di3 {}
   1228 
   1229   const vull __builtin_altivec_vnor_v2di_uns (vull, vull);
   1230     VNOR_V2DI_UNS norv2di3 {}
   1231 
   1232   const vd __builtin_altivec_vor_v2df (vd, vd);
   1233     VOR_V2DF iorv2df3 {}
   1234 
   1235   const vsll __builtin_altivec_vor_v2di (vsll, vsll);
   1236     VOR_V2DI iorv2di3 {}
   1237 
   1238   const vull __builtin_altivec_vor_v2di_uns (vull, vull);
   1239     VOR_V2DI_UNS iorv2di3 {}
   1240 
   1241   const vd __builtin_altivec_vperm_2df (vd, vd, vuc);
   1242     VPERM_2DF altivec_vperm_v2df {}
   1243 
   1244   const vsll __builtin_altivec_vperm_2di (vsll, vsll, vuc);
   1245     VPERM_2DI altivec_vperm_v2di {}
   1246 
   1247   const vull __builtin_altivec_vperm_2di_uns (vull, vull, vuc);
   1248     VPERM_2DI_UNS altivec_vperm_v2di_uns {}
   1249 
   1250   const vd __builtin_altivec_vreve_v2df (vd);
   1251     VREVE_V2DF altivec_vrevev2df2 {}
   1252 
   1253   const vsll __builtin_altivec_vreve_v2di (vsll);
   1254     VREVE_V2DI altivec_vrevev2di2 {}
   1255 
   1256   const vd __builtin_altivec_vsel_2df (vd, vd, vd);
   1257     VSEL_2DF vector_select_v2df {}
   1258 
   1259   const vsll __builtin_altivec_vsel_2di (vsll, vsll, vsll);
   1260     VSEL_2DI_B vector_select_v2di {}
   1261 
   1262   const vull __builtin_altivec_vsel_2di_uns (vull, vull, vull);
   1263     VSEL_2DI_UNS vector_select_v2di_uns {}
   1264 
   1265   const vd __builtin_altivec_vsldoi_2df (vd, vd, const int<4>);
   1266     VSLDOI_2DF altivec_vsldoi_v2df {}
   1267 
   1268   const vsll __builtin_altivec_vsldoi_2di (vsll, vsll, const int<4>);
   1269     VSLDOI_2DI altivec_vsldoi_v2di {}
   1270 
   1271   const vd __builtin_altivec_vxor_v2df (vd, vd);
   1272     VXOR_V2DF xorv2df3 {}
   1273 
   1274   const vsll __builtin_altivec_vxor_v2di (vsll, vsll);
   1275     VXOR_V2DI xorv2di3 {}
   1276 
   1277   const vull __builtin_altivec_vxor_v2di_uns (vull, vull);
   1278     VXOR_V2DI_UNS xorv2di3 {}
   1279 
   1280   const signed __int128 __builtin_vec_ext_v1ti (vsq, signed int);
   1281     VEC_EXT_V1TI nothing {extract}
   1282 
   1283   const double __builtin_vec_ext_v2df (vd, signed int);
   1284     VEC_EXT_V2DF nothing {extract}
   1285 
   1286   const signed long long __builtin_vec_ext_v2di (vsll, signed int);
   1287     VEC_EXT_V2DI nothing {extract}
   1288 
   1289   const vsq __builtin_vec_init_v1ti (signed __int128);
   1290     VEC_INIT_V1TI nothing {init}
   1291 
   1292   const vd __builtin_vec_init_v2df (double, double);
   1293     VEC_INIT_V2DF nothing {init}
   1294 
   1295   const vsll __builtin_vec_init_v2di (signed long long, signed long long);
   1296     VEC_INIT_V2DI nothing {init}
   1297 
   1298   const vsq __builtin_vec_set_v1ti (vsq, signed __int128, const int<0,0>);
   1299     VEC_SET_V1TI nothing {set}
   1300 
   1301   const vd __builtin_vec_set_v2df (vd, double, const int<1>);
   1302     VEC_SET_V2DF nothing {set}
   1303 
   1304   const vsll __builtin_vec_set_v2di (vsll, signed long long, const int<1>);
   1305     VEC_SET_V2DI nothing {set}
   1306 
   1307   const vsc __builtin_vsx_cmpge_16qi (vsc, vsc);
   1308     CMPGE_16QI vector_nltv16qi {}
   1309 
   1310   const vsll __builtin_vsx_cmpge_2di (vsll, vsll);
   1311     CMPGE_2DI vector_nltv2di {}
   1312 
   1313   const vsi __builtin_vsx_cmpge_4si (vsi, vsi);
   1314     CMPGE_4SI vector_nltv4si {}
   1315 
   1316   const vss __builtin_vsx_cmpge_8hi (vss, vss);
   1317     CMPGE_8HI vector_nltv8hi {}
   1318 
   1319   const vsc __builtin_vsx_cmpge_u16qi (vuc, vuc);
   1320     CMPGE_U16QI vector_nltuv16qi {}
   1321 
   1322   const vsll __builtin_vsx_cmpge_u2di (vull, vull);
   1323     CMPGE_U2DI vector_nltuv2di {}
   1324 
   1325   const vsi __builtin_vsx_cmpge_u4si (vui, vui);
   1326     CMPGE_U4SI vector_nltuv4si {}
   1327 
   1328   const vss __builtin_vsx_cmpge_u8hi (vus, vus);
   1329     CMPGE_U8HI vector_nltuv8hi {}
   1330 
   1331   const vsc __builtin_vsx_cmple_16qi (vsc, vsc);
   1332     CMPLE_16QI vector_ngtv16qi {}
   1333 
   1334   const vsll __builtin_vsx_cmple_2di (vsll, vsll);
   1335     CMPLE_2DI vector_ngtv2di {}
   1336 
   1337   const vsi __builtin_vsx_cmple_4si (vsi, vsi);
   1338     CMPLE_4SI vector_ngtv4si {}
   1339 
   1340   const vss __builtin_vsx_cmple_8hi (vss, vss);
   1341     CMPLE_8HI vector_ngtv8hi {}
   1342 
   1343   const vsc __builtin_vsx_cmple_u16qi (vsc, vsc);
   1344     CMPLE_U16QI vector_ngtuv16qi {}
   1345 
   1346   const vsll __builtin_vsx_cmple_u2di (vsll, vsll);
   1347     CMPLE_U2DI vector_ngtuv2di {}
   1348 
   1349   const vsi __builtin_vsx_cmple_u4si (vsi, vsi);
   1350     CMPLE_U4SI vector_ngtuv4si {}
   1351 
   1352   const vss __builtin_vsx_cmple_u8hi (vss, vss);
   1353     CMPLE_U8HI vector_ngtuv8hi {}
   1354 
   1355   const vd __builtin_vsx_concat_2df (double, double);
   1356     CONCAT_2DF vsx_concat_v2df {}
   1357 
   1358   const vsll __builtin_vsx_concat_2di (signed long long, signed long long);
   1359     CONCAT_2DI vsx_concat_v2di {}
   1360 
   1361   const vd __builtin_vsx_cpsgndp (vd, vd);
   1362     CPSGNDP vector_copysignv2df3 {}
   1363 
   1364   const vf __builtin_vsx_cpsgnsp (vf, vf);
   1365     CPSGNSP vector_copysignv4sf3 {}
   1366 
   1367   const vsll __builtin_vsx_div_2di (vsll, vsll);
   1368     DIV_V2DI vsx_div_v2di {}
   1369 
   1370   const vd __builtin_vsx_doublee_v4sf (vf);
   1371     DOUBLEE_V4SF doubleev4sf2 {}
   1372 
   1373   const vd __builtin_vsx_doublee_v4si (vsi);
   1374     DOUBLEE_V4SI doubleev4si2 {}
   1375 
   1376   const vd __builtin_vsx_doubleh_v4sf (vf);
   1377     DOUBLEH_V4SF doublehv4sf2 {}
   1378 
   1379   const vd __builtin_vsx_doubleh_v4si (vsi);
   1380     DOUBLEH_V4SI doublehv4si2 {}
   1381 
   1382   const vd __builtin_vsx_doublel_v4sf (vf);
   1383     DOUBLEL_V4SF doublelv4sf2 {}
   1384 
   1385   const vd __builtin_vsx_doublel_v4si (vsi);
   1386     DOUBLEL_V4SI doublelv4si2 {}
   1387 
   1388   const vd __builtin_vsx_doubleo_v4sf (vf);
   1389     DOUBLEO_V4SF doubleov4sf2 {}
   1390 
   1391   const vd __builtin_vsx_doubleo_v4si (vsi);
   1392     DOUBLEO_V4SI doubleov4si2 {}
   1393 
   1394   const vf __builtin_vsx_floate_v2df (vd);
   1395     FLOATE_V2DF floatev2df {}
   1396 
   1397   const vf __builtin_vsx_floate_v2di (vsll);
   1398     FLOATE_V2DI floatev2di {}
   1399 
   1400   const vf __builtin_vsx_floato_v2df (vd);
   1401     FLOATO_V2DF floatov2df {}
   1402 
   1403   const vf __builtin_vsx_floato_v2di (vsll);
   1404     FLOATO_V2DI floatov2di {}
   1405 
   1406   pure vsq __builtin_vsx_ld_elemrev_v1ti (signed long, const void *);
   1407     LD_ELEMREV_V1TI vsx_ld_elemrev_v1ti {ldvec,endian}
   1408 
   1409   pure vd __builtin_vsx_ld_elemrev_v2df (signed long, const void *);
   1410     LD_ELEMREV_V2DF vsx_ld_elemrev_v2df {ldvec,endian}
   1411 
   1412   pure vsll __builtin_vsx_ld_elemrev_v2di (signed long, const void *);
   1413     LD_ELEMREV_V2DI vsx_ld_elemrev_v2di {ldvec,endian}
   1414 
   1415   pure vf __builtin_vsx_ld_elemrev_v4sf (signed long, const void *);
   1416     LD_ELEMREV_V4SF vsx_ld_elemrev_v4sf {ldvec,endian}
   1417 
   1418   pure vsi __builtin_vsx_ld_elemrev_v4si (signed long, const void *);
   1419     LD_ELEMREV_V4SI vsx_ld_elemrev_v4si {ldvec,endian}
   1420 
   1421   pure vss __builtin_vsx_ld_elemrev_v8hi (signed long, const void *);
   1422     LD_ELEMREV_V8HI vsx_ld_elemrev_v8hi {ldvec,endian}
   1423 
   1424   pure vsc __builtin_vsx_ld_elemrev_v16qi (signed long, const void *);
   1425     LD_ELEMREV_V16QI vsx_ld_elemrev_v16qi {ldvec,endian}
   1426 
   1427 ; TODO: There is apparent intent in rs6000-builtin.def to have
   1428 ; RS6000_BTC_SPECIAL processing for LXSDX, LXVDSX, and STXSDX, but there are
   1429 ; no def_builtin calls for any of them.  At some point, we may want to add a
   1430 ; set of built-ins for whichever vector types make sense for these.
   1431 
   1432   pure vsq __builtin_vsx_lxvd2x_v1ti (signed long, const void *);
   1433     LXVD2X_V1TI vsx_load_v1ti {ldvec}
   1434 
   1435   pure vd __builtin_vsx_lxvd2x_v2df (signed long, const void *);
   1436     LXVD2X_V2DF vsx_load_v2df {ldvec}
   1437 
   1438   pure vsll __builtin_vsx_lxvd2x_v2di (signed long, const void *);
   1439     LXVD2X_V2DI vsx_load_v2di {ldvec}
   1440 
   1441   pure vsc __builtin_vsx_lxvw4x_v16qi (signed long, const void *);
   1442     LXVW4X_V16QI vsx_load_v16qi {ldvec}
   1443 
   1444   pure vf __builtin_vsx_lxvw4x_v4sf (signed long, const void *);
   1445     LXVW4X_V4SF vsx_load_v4sf {ldvec}
   1446 
   1447   pure vsi __builtin_vsx_lxvw4x_v4si (signed long, const void *);
   1448     LXVW4X_V4SI vsx_load_v4si {ldvec}
   1449 
   1450   pure vss __builtin_vsx_lxvw4x_v8hi (signed long, const void *);
   1451     LXVW4X_V8HI vsx_load_v8hi {ldvec}
   1452 
   1453   const vd __builtin_vsx_mergeh_2df (vd, vd);
   1454     VEC_MERGEH_V2DF vsx_mergeh_v2df {}
   1455 
   1456   const vsll __builtin_vsx_mergeh_2di (vsll, vsll);
   1457     VEC_MERGEH_V2DI vsx_mergeh_v2di {}
   1458 
   1459   const vd __builtin_vsx_mergel_2df (vd, vd);
   1460     VEC_MERGEL_V2DF vsx_mergel_v2df {}
   1461 
   1462   const vsll __builtin_vsx_mergel_2di (vsll, vsll);
   1463     VEC_MERGEL_V2DI vsx_mergel_v2di {}
   1464 
   1465   const vsll __builtin_vsx_mul_2di (vsll, vsll);
   1466     MUL_V2DI vsx_mul_v2di {}
   1467 
   1468   const vsq __builtin_vsx_set_1ti (vsq, signed __int128, const int<0,0>);
   1469     SET_1TI vsx_set_v1ti {set}
   1470 
   1471   const vd __builtin_vsx_set_2df (vd, double, const int<0,1>);
   1472     SET_2DF vsx_set_v2df {set}
   1473 
   1474   const vsll __builtin_vsx_set_2di (vsll, signed long long, const int<0,1>);
   1475     SET_2DI vsx_set_v2di {set}
   1476 
   1477   const vd __builtin_vsx_splat_2df (double);
   1478     SPLAT_2DF vsx_splat_v2df {}
   1479 
   1480   const vsll __builtin_vsx_splat_2di (signed long long);
   1481     SPLAT_2DI vsx_splat_v2di {}
   1482 
   1483   void __builtin_vsx_st_elemrev_v1ti (vsq, signed long, void *);
   1484     ST_ELEMREV_V1TI vsx_st_elemrev_v1ti {stvec,endian}
   1485 
   1486   void __builtin_vsx_st_elemrev_v2df (vd, signed long, void *);
   1487     ST_ELEMREV_V2DF vsx_st_elemrev_v2df {stvec,endian}
   1488 
   1489   void __builtin_vsx_st_elemrev_v2di (vsll, signed long, void *);
   1490     ST_ELEMREV_V2DI vsx_st_elemrev_v2di {stvec,endian}
   1491 
   1492   void __builtin_vsx_st_elemrev_v4sf (vf, signed long, void *);
   1493     ST_ELEMREV_V4SF vsx_st_elemrev_v4sf {stvec,endian}
   1494 
   1495   void __builtin_vsx_st_elemrev_v4si (vsi, signed long, void *);
   1496     ST_ELEMREV_V4SI vsx_st_elemrev_v4si {stvec,endian}
   1497 
   1498   void __builtin_vsx_st_elemrev_v8hi (vss, signed long, void *);
   1499     ST_ELEMREV_V8HI vsx_st_elemrev_v8hi {stvec,endian}
   1500 
   1501   void __builtin_vsx_st_elemrev_v16qi (vsc, signed long, void *);
   1502     ST_ELEMREV_V16QI vsx_st_elemrev_v16qi {stvec,endian}
   1503 
   1504   void __builtin_vsx_stxvd2x_v1ti (vsq, signed long, void *);
   1505     STXVD2X_V1TI vsx_store_v1ti {stvec}
   1506 
   1507   void __builtin_vsx_stxvd2x_v2df (vd, signed long, void *);
   1508     STXVD2X_V2DF vsx_store_v2df {stvec}
   1509 
   1510   void __builtin_vsx_stxvd2x_v2di (vsll, signed long, void *);
   1511     STXVD2X_V2DI vsx_store_v2di {stvec}
   1512 
   1513   void __builtin_vsx_stxvw4x_v4sf (vf, signed long, void *);
   1514     STXVW4X_V4SF vsx_store_v4sf {stvec}
   1515 
   1516   void __builtin_vsx_stxvw4x_v4si (vsi, signed long, void *);
   1517     STXVW4X_V4SI vsx_store_v4si {stvec}
   1518 
   1519   void __builtin_vsx_stxvw4x_v8hi (vss, signed long, void *);
   1520     STXVW4X_V8HI vsx_store_v8hi {stvec}
   1521 
   1522   void __builtin_vsx_stxvw4x_v16qi (vsc, signed long, void *);
   1523     STXVW4X_V16QI vsx_store_v16qi {stvec}
   1524 
   1525   const vull __builtin_vsx_udiv_2di (vull, vull);
   1526     UDIV_V2DI vsx_udiv_v2di {}
   1527 
   1528   const vd __builtin_vsx_uns_doublee_v4si (vsi);
   1529     UNS_DOUBLEE_V4SI unsdoubleev4si2 {}
   1530 
   1531   const vd __builtin_vsx_uns_doubleh_v4si (vsi);
   1532     UNS_DOUBLEH_V4SI unsdoublehv4si2 {}
   1533 
   1534   const vd __builtin_vsx_uns_doublel_v4si (vsi);
   1535     UNS_DOUBLEL_V4SI unsdoublelv4si2 {}
   1536 
   1537   const vd __builtin_vsx_uns_doubleo_v4si (vsi);
   1538     UNS_DOUBLEO_V4SI unsdoubleov4si2 {}
   1539 
   1540   const vf __builtin_vsx_uns_floate_v2di (vsll);
   1541     UNS_FLOATE_V2DI unsfloatev2di {}
   1542 
   1543   const vf __builtin_vsx_uns_floato_v2di (vsll);
   1544     UNS_FLOATO_V2DI unsfloatov2di {}
   1545 
   1546 ; These are duplicates of __builtin_altivec_* counterparts, and are being
   1547 ; kept for backwards compatibility.  The reason for their existence is
   1548 ; unclear.  TODO: Consider deprecation/removal at some point.
   1549   const vsc __builtin_vsx_vperm_16qi (vsc, vsc, vuc);
   1550     VPERM_16QI_X altivec_vperm_v16qi {}
   1551 
   1552   const vuc __builtin_vsx_vperm_16qi_uns (vuc, vuc, vuc);
   1553     VPERM_16QI_UNS_X altivec_vperm_v16qi_uns {}
   1554 
   1555   const vsq __builtin_vsx_vperm_1ti (vsq, vsq, vsc);
   1556     VPERM_1TI_X altivec_vperm_v1ti {}
   1557 
   1558   const vsq __builtin_vsx_vperm_1ti_uns (vsq, vsq, vsc);
   1559     VPERM_1TI_UNS_X altivec_vperm_v1ti_uns {}
   1560 
   1561   const vd __builtin_vsx_vperm_2df (vd, vd, vuc);
   1562     VPERM_2DF_X altivec_vperm_v2df {}
   1563 
   1564   const vsll __builtin_vsx_vperm_2di (vsll, vsll, vuc);
   1565     VPERM_2DI_X altivec_vperm_v2di {}
   1566 
   1567   const vull __builtin_vsx_vperm_2di_uns (vull, vull, vuc);
   1568     VPERM_2DI_UNS_X altivec_vperm_v2di_uns {}
   1569 
   1570   const vf __builtin_vsx_vperm_4sf (vf, vf, vuc);
   1571     VPERM_4SF_X altivec_vperm_v4sf {}
   1572 
   1573   const vsi __builtin_vsx_vperm_4si (vsi, vsi, vuc);
   1574     VPERM_4SI_X altivec_vperm_v4si {}
   1575 
   1576   const vui __builtin_vsx_vperm_4si_uns (vui, vui, vuc);
   1577     VPERM_4SI_UNS_X altivec_vperm_v4si_uns {}
   1578 
   1579   const vss __builtin_vsx_vperm_8hi (vss, vss, vuc);
   1580     VPERM_8HI_X altivec_vperm_v8hi {}
   1581 
   1582   const vus __builtin_vsx_vperm_8hi_uns (vus, vus, vuc);
   1583     VPERM_8HI_UNS_X altivec_vperm_v8hi_uns {}
   1584 
   1585   const vsll __builtin_vsx_vsigned_v2df (vd);
   1586     VEC_VSIGNED_V2DF vsx_xvcvdpsxds {}
   1587 
   1588   const vsi __builtin_vsx_vsigned_v4sf (vf);
   1589     VEC_VSIGNED_V4SF vsx_xvcvspsxws {}
   1590 
   1591   const vsi __builtin_vsx_vsignede_v2df (vd);
   1592     VEC_VSIGNEDE_V2DF vsignede_v2df {}
   1593 
   1594   const vsi __builtin_vsx_vsignedo_v2df (vd);
   1595     VEC_VSIGNEDO_V2DF vsignedo_v2df {}
   1596 
   1597   const vsll __builtin_vsx_vunsigned_v2df (vd);
   1598     VEC_VUNSIGNED_V2DF vsx_xvcvdpsxds {}
   1599 
   1600   const vsi __builtin_vsx_vunsigned_v4sf (vf);
   1601     VEC_VUNSIGNED_V4SF vsx_xvcvspsxws {}
   1602 
   1603   const vsi __builtin_vsx_vunsignede_v2df (vd);
   1604     VEC_VUNSIGNEDE_V2DF vunsignede_v2df {}
   1605 
   1606   const vsi __builtin_vsx_vunsignedo_v2df (vd);
   1607     VEC_VUNSIGNEDO_V2DF vunsignedo_v2df {}
   1608 
   1609   const vf __builtin_vsx_xscvdpsp (double);
   1610     XSCVDPSP vsx_xscvdpsp {}
   1611 
   1612   const double __builtin_vsx_xscvspdp (vf);
   1613     XSCVSPDP vsx_xscvspdp {}
   1614 
   1615   const double __builtin_vsx_xsmaxdp (double, double);
   1616     XSMAXDP smaxdf3 {}
   1617 
   1618   const double __builtin_vsx_xsmindp (double, double);
   1619     XSMINDP smindf3 {}
   1620 
   1621   const double __builtin_vsx_xsrdpi (double);
   1622     XSRDPI vsx_xsrdpi {}
   1623 
   1624   const double __builtin_vsx_xsrdpic (double);
   1625     XSRDPIC vsx_xsrdpic {}
   1626 
   1627   const double __builtin_vsx_xsrdpim (double);
   1628     XSRDPIM floordf2 {}
   1629 
   1630   const double __builtin_vsx_xsrdpip (double);
   1631     XSRDPIP ceildf2 {}
   1632 
   1633   const double __builtin_vsx_xsrdpiz (double);
   1634     XSRDPIZ btruncdf2 {}
   1635 
   1636   const signed int __builtin_vsx_xstdivdp_fe (double, double);
   1637     XSTDIVDP_FE vsx_tdivdf3_fe {}
   1638 
   1639   const signed int __builtin_vsx_xstdivdp_fg (double, double);
   1640     XSTDIVDP_FG vsx_tdivdf3_fg {}
   1641 
   1642   const signed int __builtin_vsx_xstsqrtdp_fe (double);
   1643     XSTSQRTDP_FE vsx_tsqrtdf2_fe {}
   1644 
   1645   const signed int __builtin_vsx_xstsqrtdp_fg (double);
   1646     XSTSQRTDP_FG vsx_tsqrtdf2_fg {}
   1647 
   1648   const vd __builtin_vsx_xvabsdp (vd);
   1649     XVABSDP absv2df2 {}
   1650 
   1651   const vf __builtin_vsx_xvabssp (vf);
   1652     XVABSSP absv4sf2 {}
   1653 
   1654   fpmath vd __builtin_vsx_xvadddp (vd, vd);
   1655     XVADDDP addv2df3 {}
   1656 
   1657   fpmath vf __builtin_vsx_xvaddsp (vf, vf);
   1658     XVADDSP addv4sf3 {}
   1659 
   1660   const vd __builtin_vsx_xvcmpeqdp (vd, vd);
   1661     XVCMPEQDP vector_eqv2df {}
   1662 
   1663   const signed int __builtin_vsx_xvcmpeqdp_p (signed int, vd, vd);
   1664     XVCMPEQDP_P vector_eq_v2df_p {pred}
   1665 
   1666   const vf __builtin_vsx_xvcmpeqsp (vf, vf);
   1667     XVCMPEQSP vector_eqv4sf {}
   1668 
   1669   const signed int __builtin_vsx_xvcmpeqsp_p (signed int, vf, vf);
   1670     XVCMPEQSP_P vector_eq_v4sf_p {pred}
   1671 
   1672   const vd __builtin_vsx_xvcmpgedp (vd, vd);
   1673     XVCMPGEDP vector_gev2df {}
   1674 
   1675   const signed int __builtin_vsx_xvcmpgedp_p (signed int, vd, vd);
   1676     XVCMPGEDP_P vector_ge_v2df_p {pred}
   1677 
   1678   const vf __builtin_vsx_xvcmpgesp (vf, vf);
   1679     XVCMPGESP vector_gev4sf {}
   1680 
   1681   const signed int __builtin_vsx_xvcmpgesp_p (signed int, vf, vf);
   1682     XVCMPGESP_P vector_ge_v4sf_p {pred}
   1683 
   1684   const vd __builtin_vsx_xvcmpgtdp (vd, vd);
   1685     XVCMPGTDP vector_gtv2df {}
   1686 
   1687   const signed int __builtin_vsx_xvcmpgtdp_p (signed int, vd, vd);
   1688     XVCMPGTDP_P vector_gt_v2df_p {pred}
   1689 
   1690   const vf __builtin_vsx_xvcmpgtsp (vf, vf);
   1691     XVCMPGTSP vector_gtv4sf {}
   1692 
   1693   const signed int __builtin_vsx_xvcmpgtsp_p (signed int, vf, vf);
   1694     XVCMPGTSP_P vector_gt_v4sf_p {pred}
   1695 
   1696   const vf __builtin_vsx_xvcvdpsp (vd);
   1697     XVCVDPSP vsx_xvcvdpsp {}
   1698 
   1699   const vsll __builtin_vsx_xvcvdpsxds (vd);
   1700     XVCVDPSXDS vsx_fix_truncv2dfv2di2 {}
   1701 
   1702   const vsll __builtin_vsx_xvcvdpsxds_scale (vd, const int);
   1703     XVCVDPSXDS_SCALE vsx_xvcvdpsxds_scale {}
   1704 
   1705   const vsi __builtin_vsx_xvcvdpsxws (vd);
   1706     XVCVDPSXWS vsx_xvcvdpsxws {}
   1707 
   1708   const vsll __builtin_vsx_xvcvdpuxds (vd);
   1709     XVCVDPUXDS vsx_fixuns_truncv2dfv2di2 {}
   1710 
   1711   const vsll __builtin_vsx_xvcvdpuxds_scale (vd, const int);
   1712     XVCVDPUXDS_SCALE vsx_xvcvdpuxds_scale {}
   1713 
   1714   const vull __builtin_vsx_xvcvdpuxds_uns (vd);
   1715     XVCVDPUXDS_UNS vsx_fixuns_truncv2dfv2di2 {}
   1716 
   1717   const vsi __builtin_vsx_xvcvdpuxws (vd);
   1718     XVCVDPUXWS vsx_xvcvdpuxws {}
   1719 
   1720   const vd __builtin_vsx_xvcvspdp (vf);
   1721     XVCVSPDP vsx_xvcvspdp {}
   1722 
   1723   const vsll __builtin_vsx_xvcvspsxds (vf);
   1724     XVCVSPSXDS vsx_xvcvspsxds {}
   1725 
   1726   const vsi __builtin_vsx_xvcvspsxws (vf);
   1727     XVCVSPSXWS vsx_fix_truncv4sfv4si2 {}
   1728 
   1729   const vsll __builtin_vsx_xvcvspuxds (vf);
   1730     XVCVSPUXDS vsx_xvcvspuxds {}
   1731 
   1732   const vsi __builtin_vsx_xvcvspuxws (vf);
   1733     XVCVSPUXWS vsx_fixuns_truncv4sfv4si2 {}
   1734 
   1735   const vd __builtin_vsx_xvcvsxddp (vsll);
   1736     XVCVSXDDP vsx_floatv2div2df2 {}
   1737 
   1738   const vd __builtin_vsx_xvcvsxddp_scale (vsll, const int<5>);
   1739     XVCVSXDDP_SCALE vsx_xvcvsxddp_scale {}
   1740 
   1741   const vf __builtin_vsx_xvcvsxdsp (vsll);
   1742     XVCVSXDSP vsx_xvcvsxdsp {}
   1743 
   1744   const vd __builtin_vsx_xvcvsxwdp (vsi);
   1745     XVCVSXWDP vsx_xvcvsxwdp {}
   1746 
   1747   const vf __builtin_vsx_xvcvsxwsp (vsi);
   1748     XVCVSXWSP vsx_floatv4siv4sf2 {}
   1749 
   1750   const vd __builtin_vsx_xvcvuxddp (vsll);
   1751     XVCVUXDDP vsx_floatunsv2div2df2 {}
   1752 
   1753   const vd __builtin_vsx_xvcvuxddp_scale (vsll, const int<5>);
   1754     XVCVUXDDP_SCALE vsx_xvcvuxddp_scale {}
   1755 
   1756   const vd __builtin_vsx_xvcvuxddp_uns (vull);
   1757     XVCVUXDDP_UNS vsx_floatunsv2div2df2 {}
   1758 
   1759   const vf __builtin_vsx_xvcvuxdsp (vull);
   1760     XVCVUXDSP vsx_xvcvuxdsp {}
   1761 
   1762   const vd __builtin_vsx_xvcvuxwdp (vsi);
   1763     XVCVUXWDP vsx_xvcvuxwdp {}
   1764 
   1765   const vf __builtin_vsx_xvcvuxwsp (vsi);
   1766     XVCVUXWSP vsx_floatunsv4siv4sf2 {}
   1767 
   1768   fpmath vd __builtin_vsx_xvdivdp (vd, vd);
   1769     XVDIVDP divv2df3 {}
   1770 
   1771   fpmath vf __builtin_vsx_xvdivsp (vf, vf);
   1772     XVDIVSP divv4sf3 {}
   1773 
   1774   const vd __builtin_vsx_xvmadddp (vd, vd, vd);
   1775     XVMADDDP fmav2df4 {}
   1776 
   1777   const vf __builtin_vsx_xvmaddsp (vf, vf, vf);
   1778     XVMADDSP fmav4sf4 {}
   1779 
   1780   const vd __builtin_vsx_xvmaxdp (vd, vd);
   1781     XVMAXDP smaxv2df3 {}
   1782 
   1783   const vf __builtin_vsx_xvmaxsp (vf, vf);
   1784     XVMAXSP smaxv4sf3 {}
   1785 
   1786   const vd __builtin_vsx_xvmindp (vd, vd);
   1787     XVMINDP sminv2df3 {}
   1788 
   1789   const vf __builtin_vsx_xvminsp (vf, vf);
   1790     XVMINSP sminv4sf3 {}
   1791 
   1792   const vd __builtin_vsx_xvmsubdp (vd, vd, vd);
   1793     XVMSUBDP fmsv2df4 {}
   1794 
   1795   const vf __builtin_vsx_xvmsubsp (vf, vf, vf);
   1796     XVMSUBSP fmsv4sf4 {}
   1797 
   1798   fpmath vd __builtin_vsx_xvmuldp (vd, vd);
   1799     XVMULDP mulv2df3 {}
   1800 
   1801   fpmath vf __builtin_vsx_xvmulsp (vf, vf);
   1802     XVMULSP mulv4sf3 {}
   1803 
   1804   const vd __builtin_vsx_xvnabsdp (vd);
   1805     XVNABSDP vsx_nabsv2df2 {}
   1806 
   1807   const vf __builtin_vsx_xvnabssp (vf);
   1808     XVNABSSP vsx_nabsv4sf2 {}
   1809 
   1810   const vd __builtin_vsx_xvnegdp (vd);
   1811     XVNEGDP negv2df2 {}
   1812 
   1813   const vf __builtin_vsx_xvnegsp (vf);
   1814     XVNEGSP negv4sf2 {}
   1815 
   1816   const vd __builtin_vsx_xvnmadddp (vd, vd, vd);
   1817     XVNMADDDP nfmav2df4 {}
   1818 
   1819   const vf __builtin_vsx_xvnmaddsp (vf, vf, vf);
   1820     XVNMADDSP nfmav4sf4 {}
   1821 
   1822   const vd __builtin_vsx_xvnmsubdp (vd, vd, vd);
   1823     XVNMSUBDP nfmsv2df4 {}
   1824 
   1825   const vf __builtin_vsx_xvnmsubsp (vf, vf, vf);
   1826     XVNMSUBSP nfmsv4sf4 {}
   1827 
   1828   const vd __builtin_vsx_xvrdpi (vd);
   1829     XVRDPI vsx_xvrdpi {}
   1830 
   1831   const vd __builtin_vsx_xvrdpic (vd);
   1832     XVRDPIC vsx_xvrdpic {}
   1833 
   1834   const vd __builtin_vsx_xvrdpim (vd);
   1835     XVRDPIM vsx_floorv2df2 {}
   1836 
   1837   const vd __builtin_vsx_xvrdpip (vd);
   1838     XVRDPIP vsx_ceilv2df2 {}
   1839 
   1840   const vd __builtin_vsx_xvrdpiz (vd);
   1841     XVRDPIZ vsx_btruncv2df2 {}
   1842 
   1843   fpmath vd __builtin_vsx_xvrecipdivdp (vd, vd);
   1844     RECIP_V2DF recipv2df3 {}
   1845 
   1846   fpmath vf __builtin_vsx_xvrecipdivsp (vf, vf);
   1847     RECIP_V4SF recipv4sf3 {}
   1848 
   1849   const vd __builtin_vsx_xvredp (vd);
   1850     XVREDP vsx_frev2df2 {}
   1851 
   1852   const vf __builtin_vsx_xvresp (vf);
   1853     XVRESP vsx_frev4sf2 {}
   1854 
   1855   const vf __builtin_vsx_xvrspi (vf);
   1856     XVRSPI vsx_xvrspi {}
   1857 
   1858   const vf __builtin_vsx_xvrspic (vf);
   1859     XVRSPIC vsx_xvrspic {}
   1860 
   1861   const vf __builtin_vsx_xvrspim (vf);
   1862     XVRSPIM vsx_floorv4sf2 {}
   1863 
   1864   const vf __builtin_vsx_xvrspip (vf);
   1865     XVRSPIP vsx_ceilv4sf2 {}
   1866 
   1867   const vf __builtin_vsx_xvrspiz (vf);
   1868     XVRSPIZ vsx_btruncv4sf2 {}
   1869 
   1870   const vd __builtin_vsx_xvrsqrtdp (vd);
   1871     RSQRT_2DF rsqrtv2df2 {}
   1872 
   1873   const vf __builtin_vsx_xvrsqrtsp (vf);
   1874     RSQRT_4SF rsqrtv4sf2 {}
   1875 
   1876   const vd __builtin_vsx_xvrsqrtedp (vd);
   1877     XVRSQRTEDP rsqrtev2df2 {}
   1878 
   1879   const vf __builtin_vsx_xvrsqrtesp (vf);
   1880     XVRSQRTESP rsqrtev4sf2 {}
   1881 
   1882   const vd __builtin_vsx_xvsqrtdp (vd);
   1883     XVSQRTDP sqrtv2df2 {}
   1884 
   1885   const vf __builtin_vsx_xvsqrtsp (vf);
   1886     XVSQRTSP sqrtv4sf2 {}
   1887 
   1888   fpmath vd __builtin_vsx_xvsubdp (vd, vd);
   1889     XVSUBDP subv2df3 {}
   1890 
   1891   fpmath vf __builtin_vsx_xvsubsp (vf, vf);
   1892     XVSUBSP subv4sf3 {}
   1893 
   1894   const signed int __builtin_vsx_xvtdivdp_fe (vd, vd);
   1895     XVTDIVDP_FE vsx_tdivv2df3_fe {}
   1896 
   1897   const signed int __builtin_vsx_xvtdivdp_fg (vd, vd);
   1898     XVTDIVDP_FG vsx_tdivv2df3_fg {}
   1899 
   1900   const signed int __builtin_vsx_xvtdivsp_fe (vf, vf);
   1901     XVTDIVSP_FE vsx_tdivv4sf3_fe {}
   1902 
   1903   const signed int __builtin_vsx_xvtdivsp_fg (vf, vf);
   1904     XVTDIVSP_FG vsx_tdivv4sf3_fg {}
   1905 
   1906   const signed int __builtin_vsx_xvtsqrtdp_fe (vd);
   1907     XVTSQRTDP_FE vsx_tsqrtv2df2_fe {}
   1908 
   1909   const signed int __builtin_vsx_xvtsqrtdp_fg (vd);
   1910     XVTSQRTDP_FG vsx_tsqrtv2df2_fg {}
   1911 
   1912   const signed int __builtin_vsx_xvtsqrtsp_fe (vf);
   1913     XVTSQRTSP_FE vsx_tsqrtv4sf2_fe {}
   1914 
   1915   const signed int __builtin_vsx_xvtsqrtsp_fg (vf);
   1916     XVTSQRTSP_FG vsx_tsqrtv4sf2_fg {}
   1917 
   1918   const vf __builtin_vsx_xxmrghw (vf, vf);
   1919     XXMRGHW_4SF vsx_xxmrghw_v4sf {}
   1920 
   1921   const vsi __builtin_vsx_xxmrghw_4si (vsi, vsi);
   1922     XXMRGHW_4SI vsx_xxmrghw_v4si {}
   1923 
   1924   const vf __builtin_vsx_xxmrglw (vf, vf);
   1925     XXMRGLW_4SF vsx_xxmrglw_v4sf {}
   1926 
   1927   const vsi __builtin_vsx_xxmrglw_4si (vsi, vsi);
   1928     XXMRGLW_4SI vsx_xxmrglw_v4si {}
   1929 
   1930   const vsc __builtin_vsx_xxpermdi_16qi (vsc, vsc, const int<2>);
   1931     XXPERMDI_16QI vsx_xxpermdi_v16qi {}
   1932 
   1933   const vsq __builtin_vsx_xxpermdi_1ti (vsq, vsq, const int<2>);
   1934     XXPERMDI_1TI vsx_xxpermdi_v1ti {}
   1935 
   1936   const vd __builtin_vsx_xxpermdi_2df (vd, vd, const int<2>);
   1937     XXPERMDI_2DF vsx_xxpermdi_v2df {}
   1938 
   1939   const vsll __builtin_vsx_xxpermdi_2di (vsll, vsll, const int<2>);
   1940     XXPERMDI_2DI vsx_xxpermdi_v2di {}
   1941 
   1942   const vf __builtin_vsx_xxpermdi_4sf (vf, vf, const int<2>);
   1943     XXPERMDI_4SF vsx_xxpermdi_v4sf {}
   1944 
   1945   const vsi __builtin_vsx_xxpermdi_4si (vsi, vsi, const int<2>);
   1946     XXPERMDI_4SI vsx_xxpermdi_v4si {}
   1947 
   1948   const vss __builtin_vsx_xxpermdi_8hi (vss, vss, const int<2>);
   1949     XXPERMDI_8HI vsx_xxpermdi_v8hi {}
   1950 
   1951   const vsc __builtin_vsx_xxsel_16qi (vsc, vsc, vsc);
   1952     XXSEL_16QI vector_select_v16qi {}
   1953 
   1954   const vuc __builtin_vsx_xxsel_16qi_uns (vuc, vuc, vuc);
   1955     XXSEL_16QI_UNS vector_select_v16qi_uns {}
   1956 
   1957   const vsq __builtin_vsx_xxsel_1ti (vsq, vsq, vsq);
   1958     XXSEL_1TI vector_select_v1ti {}
   1959 
   1960   const vsq __builtin_vsx_xxsel_1ti_uns (vsq, vsq, vsq);
   1961     XXSEL_1TI_UNS vector_select_v1ti_uns {}
   1962 
   1963   const vd __builtin_vsx_xxsel_2df (vd, vd, vd);
   1964     XXSEL_2DF vector_select_v2df {}
   1965 
   1966   const vsll __builtin_vsx_xxsel_2di (vsll, vsll, vsll);
   1967     XXSEL_2DI vector_select_v2di {}
   1968 
   1969   const vull __builtin_vsx_xxsel_2di_uns (vull, vull, vull);
   1970     XXSEL_2DI_UNS vector_select_v2di_uns {}
   1971 
   1972   const vf __builtin_vsx_xxsel_4sf (vf, vf, vf);
   1973     XXSEL_4SF vector_select_v4sf {}
   1974 
   1975   const vsi __builtin_vsx_xxsel_4si (vsi, vsi, vsi);
   1976     XXSEL_4SI vector_select_v4si {}
   1977 
   1978   const vui __builtin_vsx_xxsel_4si_uns (vui, vui, vui);
   1979     XXSEL_4SI_UNS vector_select_v4si_uns {}
   1980 
   1981   const vss __builtin_vsx_xxsel_8hi (vss, vss, vss);
   1982     XXSEL_8HI vector_select_v8hi {}
   1983 
   1984   const vus __builtin_vsx_xxsel_8hi_uns (vus, vus, vus);
   1985     XXSEL_8HI_UNS vector_select_v8hi_uns {}
   1986 
   1987   const vsc __builtin_vsx_xxsldwi_16qi (vsc, vsc, const int<2>);
   1988     XXSLDWI_16QI vsx_xxsldwi_v16qi {}
   1989 
   1990   const vd __builtin_vsx_xxsldwi_2df (vd, vd, const int<2>);
   1991     XXSLDWI_2DF vsx_xxsldwi_v2df {}
   1992 
   1993   const vsll __builtin_vsx_xxsldwi_2di (vsll, vsll, const int<2>);
   1994     XXSLDWI_2DI vsx_xxsldwi_v2di {}
   1995 
   1996   const vf __builtin_vsx_xxsldwi_4sf (vf, vf, const int<2>);
   1997     XXSLDWI_4SF vsx_xxsldwi_v4sf {}
   1998 
   1999   const vsi __builtin_vsx_xxsldwi_4si (vsi, vsi, const int<2>);
   2000     XXSLDWI_4SI vsx_xxsldwi_v4si {}
   2001 
   2002   const vss __builtin_vsx_xxsldwi_8hi (vss, vss, const int<2>);
   2003     XXSLDWI_8HI vsx_xxsldwi_v8hi {}
   2004 
   2005   const vd __builtin_vsx_xxspltd_2df (vd, const int<1>);
   2006     XXSPLTD_V2DF vsx_xxspltd_v2df {}
   2007 
   2008   const vsll __builtin_vsx_xxspltd_2di (vsll, const int<1>);
   2009     XXSPLTD_V2DI vsx_xxspltd_v2di {}
   2010 
   2011   const vsq __builtin_pack_vector_int128 (unsigned long long, \
   2012                                           unsigned long long);
   2013     PACK_V1TI packv1ti {}
   2014 
   2015   const unsigned long __builtin_unpack_vector_int128 (vsq, const int<1>);
   2016     UNPACK_V1TI unpackv1ti {}
   2017 
   2018 
   2019 ; Power7 builtins (ISA 2.06).
   2020 [power7]
   2021   const unsigned int __builtin_addg6s (unsigned int, unsigned int);
   2022     ADDG6S addg6s {}
   2023 
   2024   const signed long __builtin_bpermd (signed long, signed long);
   2025     BPERMD bpermd_di {32bit}
   2026 
   2027   const unsigned int __builtin_cbcdtd (unsigned int);
   2028     CBCDTD cbcdtd {}
   2029 
   2030   const unsigned int __builtin_cdtbcd (unsigned int);
   2031     CDTBCD cdtbcd {}
   2032 
   2033   const signed int __builtin_divwe (signed int, signed int);
   2034     DIVWE dive_si {}
   2035 
   2036   const unsigned int __builtin_divweu (unsigned int, unsigned int);
   2037     DIVWEU diveu_si {}
   2038 
   2039   void __builtin_ppc_speculation_barrier ();
   2040     SPECBARR speculation_barrier {}
   2041 
   2042 
   2043 ; Power7 builtins requiring 64-bit GPRs (even with 32-bit addressing).
   2044 [power7-64]
   2045   const signed long long __builtin_divde (signed long long, signed long long);
   2046     DIVDE dive_di {}
   2047 
   2048   const unsigned long long __builtin_divdeu (unsigned long long, \
   2049                                              unsigned long long);
   2050     DIVDEU diveu_di {}
   2051 
   2052 
   2053 ; Power8 vector built-ins.
   2054 [power8-vector]
   2055   const vsll __builtin_altivec_abs_v2di (vsll);
   2056     ABS_V2DI absv2di2 {}
   2057 
   2058   const vsc __builtin_altivec_bcddiv10_v16qi (vsc);
   2059     BCDDIV10_V16QI bcddiv10_v16qi {}
   2060 
   2061   const vsc __builtin_altivec_bcdmul10_v16qi (vsc);
   2062     BCDMUL10_V16QI bcdmul10_v16qi {}
   2063 
   2064   const vsc __builtin_altivec_eqv_v16qi (vsc, vsc);
   2065     EQV_V16QI eqvv16qi3 {}
   2066 
   2067   const vuc __builtin_altivec_eqv_v16qi_uns (vuc, vuc);
   2068     EQV_V16QI_UNS eqvv16qi3 {}
   2069 
   2070   const vsq __builtin_altivec_eqv_v1ti (vsq, vsq);
   2071     EQV_V1TI eqvv1ti3 {}
   2072 
   2073   const vuq __builtin_altivec_eqv_v1ti_uns (vuq, vuq);
   2074     EQV_V1TI_UNS eqvv1ti3 {}
   2075 
   2076   const vd __builtin_altivec_eqv_v2df (vd, vd);
   2077     EQV_V2DF eqvv2df3 {}
   2078 
   2079   const vsll __builtin_altivec_eqv_v2di (vsll, vsll);
   2080     EQV_V2DI eqvv2di3 {}
   2081 
   2082   const vull __builtin_altivec_eqv_v2di_uns (vull, vull);
   2083     EQV_V2DI_UNS eqvv2di3 {}
   2084 
   2085   const vf __builtin_altivec_eqv_v4sf (vf, vf);
   2086     EQV_V4SF eqvv4sf3 {}
   2087 
   2088   const vsi __builtin_altivec_eqv_v4si (vsi, vsi);
   2089     EQV_V4SI eqvv4si3 {}
   2090 
   2091   const vui __builtin_altivec_eqv_v4si_uns (vui, vui);
   2092     EQV_V4SI_UNS eqvv4si3 {}
   2093 
   2094   const vss __builtin_altivec_eqv_v8hi (vss, vss);
   2095     EQV_V8HI eqvv8hi3 {}
   2096 
   2097   const vus __builtin_altivec_eqv_v8hi_uns (vus, vus);
   2098     EQV_V8HI_UNS eqvv8hi3 {}
   2099 
   2100   const vsc __builtin_altivec_nand_v16qi (vsc, vsc);
   2101     NAND_V16QI nandv16qi3 {}
   2102 
   2103   const vuc __builtin_altivec_nand_v16qi_uns (vuc, vuc);
   2104     NAND_V16QI_UNS nandv16qi3 {}
   2105 
   2106   const vsq __builtin_altivec_nand_v1ti (vsq, vsq);
   2107     NAND_V1TI nandv1ti3 {}
   2108 
   2109   const vuq __builtin_altivec_nand_v1ti_uns (vuq, vuq);
   2110     NAND_V1TI_UNS nandv1ti3 {}
   2111 
   2112   const vd __builtin_altivec_nand_v2df (vd, vd);
   2113     NAND_V2DF nandv2df3 {}
   2114 
   2115   const vsll __builtin_altivec_nand_v2di (vsll, vsll);
   2116     NAND_V2DI nandv2di3 {}
   2117 
   2118   const vull __builtin_altivec_nand_v2di_uns (vull, vull);
   2119     NAND_V2DI_UNS nandv2di3 {}
   2120 
   2121   const vf __builtin_altivec_nand_v4sf (vf, vf);
   2122     NAND_V4SF nandv4sf3 {}
   2123 
   2124   const vsi __builtin_altivec_nand_v4si (vsi, vsi);
   2125     NAND_V4SI nandv4si3 {}
   2126 
   2127   const vui __builtin_altivec_nand_v4si_uns (vui, vui);
   2128     NAND_V4SI_UNS nandv4si3 {}
   2129 
   2130   const vss __builtin_altivec_nand_v8hi (vss, vss);
   2131     NAND_V8HI nandv8hi3 {}
   2132 
   2133   const vus __builtin_altivec_nand_v8hi_uns (vus, vus);
   2134     NAND_V8HI_UNS nandv8hi3 {}
   2135 
   2136   const vsll __builtin_altivec_neg_v2di (vsll);
   2137     NEG_V2DI negv2di2 {}
   2138 
   2139   const vsc __builtin_altivec_orc_v16qi (vsc, vsc);
   2140     ORC_V16QI orcv16qi3 {}
   2141 
   2142   const vuc __builtin_altivec_orc_v16qi_uns (vuc, vuc);
   2143     ORC_V16QI_UNS orcv16qi3 {}
   2144 
   2145   const vsq __builtin_altivec_orc_v1ti (vsq, vsq);
   2146     ORC_V1TI orcv1ti3 {}
   2147 
   2148   const vuq __builtin_altivec_orc_v1ti_uns (vuq, vuq);
   2149     ORC_V1TI_UNS orcv1ti3 {}
   2150 
   2151   const vd __builtin_altivec_orc_v2df (vd, vd);
   2152     ORC_V2DF orcv2df3 {}
   2153 
   2154   const vsll __builtin_altivec_orc_v2di (vsll, vsll);
   2155     ORC_V2DI orcv2di3 {}
   2156 
   2157   const vull __builtin_altivec_orc_v2di_uns (vull, vull);
   2158     ORC_V2DI_UNS orcv2di3 {}
   2159 
   2160   const vf __builtin_altivec_orc_v4sf (vf, vf);
   2161     ORC_V4SF orcv4sf3 {}
   2162 
   2163   const vsi __builtin_altivec_orc_v4si (vsi, vsi);
   2164     ORC_V4SI orcv4si3 {}
   2165 
   2166   const vui __builtin_altivec_orc_v4si_uns (vui, vui);
   2167     ORC_V4SI_UNS orcv4si3 {}
   2168 
   2169   const vss __builtin_altivec_orc_v8hi (vss, vss);
   2170     ORC_V8HI orcv8hi3 {}
   2171 
   2172   const vus __builtin_altivec_orc_v8hi_uns (vus, vus);
   2173     ORC_V8HI_UNS orcv8hi3 {}
   2174 
   2175   const vsc __builtin_altivec_vclzb (vsc);
   2176     VCLZB clzv16qi2 {}
   2177 
   2178   const vsll __builtin_altivec_vclzd (vsll);
   2179     VCLZD clzv2di2 {}
   2180 
   2181   const vss __builtin_altivec_vclzh (vss);
   2182     VCLZH clzv8hi2 {}
   2183 
   2184   const vsi __builtin_altivec_vclzw (vsi);
   2185     VCLZW clzv4si2 {}
   2186 
   2187   const vuc __builtin_altivec_vgbbd (vuc);
   2188     VGBBD p8v_vgbbd {}
   2189 
   2190   const vsq __builtin_altivec_vaddcuq (vsq, vsq);
   2191     VADDCUQ altivec_vaddcuq {}
   2192 
   2193   const vsq __builtin_altivec_vaddecuq (vsq, vsq, vsq);
   2194     VADDECUQ altivec_vaddecuq {}
   2195 
   2196   const vsq __builtin_altivec_vaddeuqm (vsq, vsq, vsq);
   2197     VADDEUQM altivec_vaddeuqm {}
   2198 
   2199   const vsll __builtin_altivec_vaddudm (vsll, vsll);
   2200     VADDUDM addv2di3 {}
   2201 
   2202   const vsq __builtin_altivec_vadduqm (vsq, vsq);
   2203     VADDUQM altivec_vadduqm {}
   2204 
   2205   const vsll __builtin_altivec_vbpermq (vsc, vsc);
   2206     VBPERMQ altivec_vbpermq {}
   2207 
   2208   const vsc __builtin_altivec_vbpermq2 (vsc, vsc);
   2209     VBPERMQ2 altivec_vbpermq2 {}
   2210 
   2211   const vsll __builtin_altivec_vcmpequd (vull, vull);
   2212     VCMPEQUD vector_eqv2di {}
   2213 
   2214   const int __builtin_altivec_vcmpequd_p (int, vsll, vsll);
   2215     VCMPEQUD_P vector_eq_v2di_p {pred}
   2216 
   2217   const vsll __builtin_altivec_vcmpgtsd (vsll, vsll);
   2218     VCMPGTSD vector_gtv2di {}
   2219 
   2220   const int __builtin_altivec_vcmpgtsd_p (int, vsll, vsll);
   2221     VCMPGTSD_P vector_gt_v2di_p {pred}
   2222 
   2223   const vsll __builtin_altivec_vcmpgtud (vull, vull);
   2224     VCMPGTUD vector_gtuv2di {}
   2225 
   2226   const int __builtin_altivec_vcmpgtud_p (int, vsll, vsll);
   2227     VCMPGTUD_P vector_gtu_v2di_p {pred}
   2228 
   2229   const vsll __builtin_altivec_vmaxsd (vsll, vsll);
   2230     VMAXSD smaxv2di3 {}
   2231 
   2232   const vull __builtin_altivec_vmaxud (vull, vull);
   2233     VMAXUD umaxv2di3 {}
   2234 
   2235   const vsll __builtin_altivec_vminsd (vsll, vsll);
   2236     VMINSD sminv2di3 {}
   2237 
   2238   const vull __builtin_altivec_vminud (vull, vull);
   2239     VMINUD uminv2di3 {}
   2240 
   2241   const vd __builtin_altivec_vmrgew_v2df (vd, vd);
   2242     VMRGEW_V2DF p8_vmrgew_v2df {}
   2243 
   2244   const vsll __builtin_altivec_vmrgew_v2di (vsll, vsll);
   2245     VMRGEW_V2DI p8_vmrgew_v2di {}
   2246 
   2247   const vf __builtin_altivec_vmrgew_v4sf (vf, vf);
   2248     VMRGEW_V4SF p8_vmrgew_v4sf {}
   2249 
   2250   const vsi __builtin_altivec_vmrgew_v4si (vsi, vsi);
   2251     VMRGEW_V4SI p8_vmrgew_v4si {}
   2252 
   2253   const vd __builtin_altivec_vmrgow_v2df (vd, vd);
   2254     VMRGOW_V2DF p8_vmrgow_v2df {}
   2255 
   2256   const vsll __builtin_altivec_vmrgow_v2di (vsll, vsll);
   2257     VMRGOW_V2DI p8_vmrgow_v2di {}
   2258 
   2259   const vf __builtin_altivec_vmrgow_v4sf (vf, vf);
   2260     VMRGOW_V4SF p8_vmrgow_v4sf {}
   2261 
   2262   const vsi __builtin_altivec_vmrgow_v4si (vsi, vsi);
   2263     VMRGOW_V4SI p8_vmrgow_v4si {}
   2264 
   2265   const vsc __builtin_altivec_vpermxor (vsc, vsc, vsc);
   2266     VPERMXOR altivec_vpermxor {}
   2267 
   2268   const vsi __builtin_altivec_vpksdss (vsll, vsll);
   2269     VPKSDSS altivec_vpksdss {}
   2270 
   2271   const vsi __builtin_altivec_vpksdus (vsll, vsll);
   2272     VPKSDUS altivec_vpksdus {}
   2273 
   2274   const vsi __builtin_altivec_vpkudum (vsll, vsll);
   2275     VPKUDUM altivec_vpkudum {}
   2276 
   2277   const vsi __builtin_altivec_vpkudus (vsll, vsll);
   2278     VPKUDUS altivec_vpkudus {}
   2279 
   2280   const vsc __builtin_altivec_vpmsumb (vsc, vsc);
   2281     VPMSUMB_A crypto_vpmsumb {}
   2282 
   2283   const vsll __builtin_altivec_vpmsumd (vsll, vsll);
   2284     VPMSUMD_A crypto_vpmsumd {}
   2285 
   2286   const vss __builtin_altivec_vpmsumh (vss, vss);
   2287     VPMSUMH_A crypto_vpmsumh {}
   2288 
   2289   const vsi __builtin_altivec_vpmsumw (vsi, vsi);
   2290     VPMSUMW_A crypto_vpmsumw {}
   2291 
   2292   const vsc __builtin_altivec_vpopcntb (vsc);
   2293     VPOPCNTB popcountv16qi2 {}
   2294 
   2295   const vsll __builtin_altivec_vpopcntd (vsll);
   2296     VPOPCNTD popcountv2di2 {}
   2297 
   2298   const vss __builtin_altivec_vpopcnth (vss);
   2299     VPOPCNTH popcountv8hi2 {}
   2300 
   2301   const vsc __builtin_altivec_vpopcntub (vsc);
   2302     VPOPCNTUB popcountv16qi2 {}
   2303 
   2304   const vsll __builtin_altivec_vpopcntud (vsll);
   2305     VPOPCNTUD popcountv2di2 {}
   2306 
   2307   const vss __builtin_altivec_vpopcntuh (vss);
   2308     VPOPCNTUH popcountv8hi2 {}
   2309 
   2310   const vsi __builtin_altivec_vpopcntuw (vsi);
   2311     VPOPCNTUW popcountv4si2 {}
   2312 
   2313   const vsi __builtin_altivec_vpopcntw (vsi);
   2314     VPOPCNTW popcountv4si2 {}
   2315 
   2316   const vsll __builtin_altivec_vrld (vsll, vsll);
   2317     VRLD vrotlv2di3 {}
   2318 
   2319   const vsll __builtin_altivec_vsld (vsll, vsll);
   2320     VSLD vashlv2di3 {}
   2321 
   2322   const vsll __builtin_altivec_vsrad (vsll, vsll);
   2323     VSRAD vashrv2di3 {}
   2324 
   2325   const vsll __builtin_altivec_vsrd (vsll, vull);
   2326     VSRD vlshrv2di3 {}
   2327 
   2328   const vsq __builtin_altivec_vsubcuq (vsq, vsq);
   2329     VSUBCUQ altivec_vsubcuq {}
   2330 
   2331   const vsq __builtin_altivec_vsubecuq (vsq, vsq, vsq);
   2332     VSUBECUQ altivec_vsubecuq {}
   2333 
   2334   const vsq __builtin_altivec_vsubeuqm (vsq, vsq, vsq);
   2335     VSUBEUQM altivec_vsubeuqm {}
   2336 
   2337   const vsll __builtin_altivec_vsubudm (vsll, vsll);
   2338     VSUBUDM subv2di3 {}
   2339 
   2340   const vsq __builtin_altivec_vsubuqm (vsq, vsq);
   2341     VSUBUQM altivec_vsubuqm {}
   2342 
   2343   const vsll __builtin_altivec_vupkhsw (vsi);
   2344     VUPKHSW altivec_vupkhsw {}
   2345 
   2346   const vsll __builtin_altivec_vupklsw (vsi);
   2347     VUPKLSW altivec_vupklsw {}
   2348 
   2349   const vsq __builtin_bcdadd_v1ti (vsq, vsq, const int<1>);
   2350     BCDADD_V1TI bcdadd_v1ti {}
   2351 
   2352   const vsc __builtin_bcdadd_v16qi (vsc, vsc, const int<1>);
   2353     BCDADD_V16QI bcdadd_v16qi {}
   2354 
   2355   const signed int __builtin_bcdadd_eq_v1ti (vsq, vsq, const int<1>);
   2356     BCDADD_EQ_V1TI bcdadd_eq_v1ti {}
   2357 
   2358   const signed int __builtin_bcdadd_eq_v16qi (vsc, vsc, const int<1>);
   2359     BCDADD_EQ_V16QI bcdadd_eq_v16qi {}
   2360 
   2361   const signed int __builtin_bcdadd_gt_v1ti (vsq, vsq, const int<1>);
   2362     BCDADD_GT_V1TI bcdadd_gt_v1ti {}
   2363 
   2364   const signed int __builtin_bcdadd_gt_v16qi (vsc, vsc, const int<1>);
   2365     BCDADD_GT_V16QI bcdadd_gt_v16qi {}
   2366 
   2367   const signed int __builtin_bcdadd_lt_v1ti (vsq, vsq, const int<1>);
   2368     BCDADD_LT_V1TI bcdadd_lt_v1ti {}
   2369 
   2370   const signed int __builtin_bcdadd_lt_v16qi (vsc, vsc, const int<1>);
   2371     BCDADD_LT_V16QI bcdadd_lt_v16qi {}
   2372 
   2373   const signed int __builtin_bcdadd_ov_v1ti (vsq, vsq, const int<1>);
   2374     BCDADD_OV_V1TI bcdadd_unordered_v1ti {}
   2375 
   2376   const signed int __builtin_bcdadd_ov_v16qi (vsc, vsc, const int<1>);
   2377     BCDADD_OV_V16QI bcdadd_unordered_v16qi {}
   2378 
   2379   const signed int __builtin_bcdinvalid_v1ti (vsq);
   2380     BCDINVALID_V1TI bcdinvalid_v1ti {}
   2381 
   2382   const signed int __builtin_bcdinvalid_v16qi (vsc);
   2383     BCDINVALID_V16QI bcdinvalid_v16qi {}
   2384 
   2385   const vsq __builtin_bcdsub_v1ti (vsq, vsq, const int<1>);
   2386     BCDSUB_V1TI bcdsub_v1ti {}
   2387 
   2388   const vsc __builtin_bcdsub_v16qi (vsc, vsc, const int<1>);
   2389     BCDSUB_V16QI bcdsub_v16qi {}
   2390 
   2391   const signed int __builtin_bcdsub_eq_v1ti (vsq, vsq, const int<1>);
   2392     BCDSUB_EQ_V1TI bcdsub_eq_v1ti {}
   2393 
   2394   const signed int __builtin_bcdsub_eq_v16qi (vsc, vsc, const int<1>);
   2395     BCDSUB_EQ_V16QI bcdsub_eq_v16qi {}
   2396 
   2397   const signed int __builtin_bcdsub_ge_v1ti (vsq, vsq, const int<1>);
   2398     BCDSUB_GE_V1TI bcdsub_ge_v1ti {}
   2399 
   2400   const signed int __builtin_bcdsub_ge_v16qi (vsc, vsc, const int<1>);
   2401     BCDSUB_GE_V16QI bcdsub_ge_v16qi {}
   2402 
   2403   const signed int __builtin_bcdsub_gt_v1ti (vsq, vsq, const int<1>);
   2404     BCDSUB_GT_V1TI bcdsub_gt_v1ti {}
   2405 
   2406   const signed int __builtin_bcdsub_gt_v16qi (vsc, vsc, const int<1>);
   2407     BCDSUB_GT_V16QI bcdsub_gt_v16qi {}
   2408 
   2409   const signed int __builtin_bcdsub_le_v1ti (vsq, vsq, const int<1>);
   2410     BCDSUB_LE_V1TI bcdsub_le_v1ti {}
   2411 
   2412   const signed int __builtin_bcdsub_le_v16qi (vsc, vsc, const int<1>);
   2413     BCDSUB_LE_V16QI bcdsub_le_v16qi {}
   2414 
   2415   const signed int __builtin_bcdsub_lt_v1ti (vsq, vsq, const int<1>);
   2416     BCDSUB_LT_V1TI bcdsub_lt_v1ti {}
   2417 
   2418   const signed int __builtin_bcdsub_lt_v16qi (vsc, vsc, const int<1>);
   2419     BCDSUB_LT_V16QI bcdsub_lt_v16qi {}
   2420 
   2421   const signed int __builtin_bcdsub_ov_v1ti (vsq, vsq, const int<1>);
   2422     BCDSUB_OV_V1TI bcdsub_unordered_v1ti {}
   2423 
   2424   const signed int __builtin_bcdsub_ov_v16qi (vsc, vsc, const int<1>);
   2425     BCDSUB_OV_V16QI bcdsub_unordered_v16qi {}
   2426 
   2427   const vuc __builtin_crypto_vpermxor_v16qi (vuc, vuc, vuc);
   2428     VPERMXOR_V16QI crypto_vpermxor_v16qi {}
   2429 
   2430   const vull __builtin_crypto_vpermxor_v2di (vull, vull, vull);
   2431     VPERMXOR_V2DI crypto_vpermxor_v2di {}
   2432 
   2433   const vui __builtin_crypto_vpermxor_v4si (vui, vui, vui);
   2434     VPERMXOR_V4SI crypto_vpermxor_v4si {}
   2435 
   2436   const vus __builtin_crypto_vpermxor_v8hi (vus, vus, vus);
   2437     VPERMXOR_V8HI crypto_vpermxor_v8hi {}
   2438 
   2439   const vuc __builtin_crypto_vpmsumb (vuc, vuc);
   2440     VPMSUMB crypto_vpmsumb {}
   2441 
   2442   const vull __builtin_crypto_vpmsumd (vull, vull);
   2443     VPMSUMD crypto_vpmsumd {}
   2444 
   2445   const vus __builtin_crypto_vpmsumh (vus, vus);
   2446     VPMSUMH crypto_vpmsumh {}
   2447 
   2448   const vui __builtin_crypto_vpmsumw (vui, vui);
   2449     VPMSUMW crypto_vpmsumw {}
   2450 
   2451   const vf __builtin_vsx_float2_v2df (vd, vd);
   2452     FLOAT2_V2DF float2_v2df {}
   2453 
   2454   const vf __builtin_vsx_float2_v2di (vsll, vsll);
   2455     FLOAT2_V2DI float2_v2di {}
   2456 
   2457   const vsc __builtin_vsx_revb_v16qi (vsc);
   2458     REVB_V16QI revb_v16qi {}
   2459 
   2460   const vsq __builtin_vsx_revb_v1ti (vsq);
   2461     REVB_V1TI revb_v1ti {}
   2462 
   2463   const vd __builtin_vsx_revb_v2df (vd);
   2464     REVB_V2DF revb_v2df {}
   2465 
   2466   const vsll __builtin_vsx_revb_v2di (vsll);
   2467     REVB_V2DI revb_v2di {}
   2468 
   2469   const vf __builtin_vsx_revb_v4sf (vf);
   2470     REVB_V4SF revb_v4sf {}
   2471 
   2472   const vsi __builtin_vsx_revb_v4si (vsi);
   2473     REVB_V4SI revb_v4si {}
   2474 
   2475   const vss __builtin_vsx_revb_v8hi (vss);
   2476     REVB_V8HI revb_v8hi {}
   2477 
   2478   const vf __builtin_vsx_uns_float2_v2di (vsll, vsll);
   2479     UNS_FLOAT2_V2DI uns_float2_v2di {}
   2480 
   2481   const vsi __builtin_vsx_vsigned2_v2df (vd, vd);
   2482     VEC_VSIGNED2_V2DF vsigned2_v2df {}
   2483 
   2484   const vsi __builtin_vsx_vunsigned2_v2df (vd, vd);
   2485     VEC_VUNSIGNED2_V2DF vunsigned2_v2df {}
   2486 
   2487   const vf __builtin_vsx_xscvdpspn (double);
   2488     XSCVDPSPN vsx_xscvdpspn {}
   2489 
   2490   const double __builtin_vsx_xscvspdpn (vf);
   2491     XSCVSPDPN vsx_xscvspdpn {}
   2492 
   2493 
   2494 ; Power9 vector builtins.
   2495 [power9-vector]
   2496   const vss __builtin_altivec_convert_4f32_8f16 (vf, vf);
   2497     CONVERT_4F32_8F16 convert_4f32_8f16 {}
   2498 
   2499   const vss __builtin_altivec_convert_4f32_8i16 (vf, vf);
   2500     CONVERT_4F32_8I16 convert_4f32_8i16 {}
   2501 
   2502   const signed int __builtin_altivec_first_match_index_v16qi (vsc, vsc);
   2503     VFIRSTMATCHINDEX_V16QI first_match_index_v16qi {}
   2504 
   2505   const signed int __builtin_altivec_first_match_index_v8hi (vss, vss);
   2506     VFIRSTMATCHINDEX_V8HI first_match_index_v8hi {}
   2507 
   2508   const signed int __builtin_altivec_first_match_index_v4si (vsi, vsi);
   2509     VFIRSTMATCHINDEX_V4SI first_match_index_v4si {}
   2510 
   2511   const signed int __builtin_altivec_first_match_or_eos_index_v16qi (vsc, vsc);
   2512     VFIRSTMATCHOREOSINDEX_V16QI first_match_or_eos_index_v16qi {}
   2513 
   2514   const signed int __builtin_altivec_first_match_or_eos_index_v8hi (vss, vss);
   2515     VFIRSTMATCHOREOSINDEX_V8HI first_match_or_eos_index_v8hi {}
   2516 
   2517   const signed int __builtin_altivec_first_match_or_eos_index_v4si (vsi, vsi);
   2518     VFIRSTMATCHOREOSINDEX_V4SI first_match_or_eos_index_v4si {}
   2519 
   2520   const signed int __builtin_altivec_first_mismatch_index_v16qi (vsc, vsc);
   2521     VFIRSTMISMATCHINDEX_V16QI first_mismatch_index_v16qi {}
   2522 
   2523   const signed int __builtin_altivec_first_mismatch_index_v8hi (vss, vss);
   2524     VFIRSTMISMATCHINDEX_V8HI first_mismatch_index_v8hi {}
   2525 
   2526   const signed int __builtin_altivec_first_mismatch_index_v4si (vsi, vsi);
   2527     VFIRSTMISMATCHINDEX_V4SI first_mismatch_index_v4si {}
   2528 
   2529   const signed int \
   2530       __builtin_altivec_first_mismatch_or_eos_index_v16qi (vsc, vsc);
   2531     VFIRSTMISMATCHOREOSINDEX_V16QI first_mismatch_or_eos_index_v16qi {}
   2532 
   2533   const signed int \
   2534       __builtin_altivec_first_mismatch_or_eos_index_v8hi (vss, vss);
   2535     VFIRSTMISMATCHOREOSINDEX_V8HI first_mismatch_or_eos_index_v8hi {}
   2536 
   2537   const signed int \
   2538       __builtin_altivec_first_mismatch_or_eos_index_v4si (vsi, vsi);
   2539     VFIRSTMISMATCHOREOSINDEX_V4SI first_mismatch_or_eos_index_v4si {}
   2540 
   2541   const vsc __builtin_altivec_vadub (vsc, vsc);
   2542     VADUB vaduv16qi3 {}
   2543 
   2544   const vss __builtin_altivec_vaduh (vss, vss);
   2545     VADUH vaduv8hi3 {}
   2546 
   2547   const vsi __builtin_altivec_vaduw (vsi, vsi);
   2548     VADUW vaduv4si3 {}
   2549 
   2550   const vsll __builtin_altivec_vbpermd (vsll, vsc);
   2551     VBPERMD altivec_vbpermd {}
   2552 
   2553   const signed int __builtin_altivec_vclzlsbb_v16qi (vsc);
   2554     VCLZLSBB_V16QI vctzlsbb_v16qi {endian}
   2555 
   2556   const signed int __builtin_altivec_vclzlsbb_v4si (vsi);
   2557     VCLZLSBB_V4SI vctzlsbb_v4si {endian}
   2558 
   2559   const signed int __builtin_altivec_vclzlsbb_v8hi (vss);
   2560     VCLZLSBB_V8HI vctzlsbb_v8hi {endian}
   2561 
   2562   const vsc __builtin_altivec_vctzb (vsc);
   2563     VCTZB ctzv16qi2 {}
   2564 
   2565   const vsll __builtin_altivec_vctzd (vsll);
   2566     VCTZD ctzv2di2 {}
   2567 
   2568   const vss __builtin_altivec_vctzh (vss);
   2569     VCTZH ctzv8hi2 {}
   2570 
   2571   const vsi __builtin_altivec_vctzw (vsi);
   2572     VCTZW ctzv4si2 {}
   2573 
   2574   const signed int __builtin_altivec_vctzlsbb_v16qi (vsc);
   2575     VCTZLSBB_V16QI vclzlsbb_v16qi {endian}
   2576 
   2577   const signed int __builtin_altivec_vctzlsbb_v4si (vsi);
   2578     VCTZLSBB_V4SI vclzlsbb_v4si {endian}
   2579 
   2580   const signed int __builtin_altivec_vctzlsbb_v8hi (vss);
   2581     VCTZLSBB_V8HI vclzlsbb_v8hi {endian}
   2582 
   2583   const signed int __builtin_altivec_vcmpaeb_p (vsc, vsc);
   2584     VCMPAEB_P vector_ae_v16qi_p {}
   2585 
   2586   const signed int __builtin_altivec_vcmpaed_p (vsll, vsll);
   2587     VCMPAED_P vector_ae_v2di_p {}
   2588 
   2589   const signed int __builtin_altivec_vcmpaedp_p (vd, vd);
   2590     VCMPAEDP_P vector_ae_v2df_p {}
   2591 
   2592   const signed int __builtin_altivec_vcmpaefp_p (vf, vf);
   2593     VCMPAEFP_P vector_ae_v4sf_p {}
   2594 
   2595   const signed int __builtin_altivec_vcmpaeh_p (vss, vss);
   2596     VCMPAEH_P vector_ae_v8hi_p {}
   2597 
   2598   const signed int __builtin_altivec_vcmpaew_p (vsi, vsi);
   2599     VCMPAEW_P vector_ae_v4si_p {}
   2600 
   2601   const vsc __builtin_altivec_vcmpneb (vsc, vsc);
   2602     VCMPNEB vcmpneb {}
   2603 
   2604   const signed int __builtin_altivec_vcmpneb_p (vsc, vsc);
   2605     VCMPNEB_P vector_ne_v16qi_p {}
   2606 
   2607   const signed int __builtin_altivec_vcmpned_p (vsll, vsll);
   2608     VCMPNED_P vector_ne_v2di_p {}
   2609 
   2610   const signed int __builtin_altivec_vcmpnedp_p (vd, vd);
   2611     VCMPNEDP_P vector_ne_v2df_p {}
   2612 
   2613   const signed int __builtin_altivec_vcmpnefp_p (vf, vf);
   2614     VCMPNEFP_P vector_ne_v4sf_p {}
   2615 
   2616   const vss __builtin_altivec_vcmpneh (vss, vss);
   2617     VCMPNEH vcmpneh {}
   2618 
   2619   const signed int __builtin_altivec_vcmpneh_p (vss, vss);
   2620     VCMPNEH_P vector_ne_v8hi_p {}
   2621 
   2622   const vsi __builtin_altivec_vcmpnew (vsi, vsi);
   2623     VCMPNEW vcmpnew {}
   2624 
   2625   const signed int __builtin_altivec_vcmpnew_p (vsi, vsi);
   2626     VCMPNEW_P vector_ne_v4si_p {}
   2627 
   2628   const vsc __builtin_altivec_vcmpnezb (vsc, vsc);
   2629     CMPNEZB vcmpnezb {}
   2630 
   2631   const signed int __builtin_altivec_vcmpnezb_p (signed int, vsc, vsc);
   2632     VCMPNEZB_P vector_nez_v16qi_p {pred}
   2633 
   2634   const vss __builtin_altivec_vcmpnezh (vss, vss);
   2635     CMPNEZH vcmpnezh {}
   2636 
   2637   const signed int __builtin_altivec_vcmpnezh_p (signed int, vss, vss);
   2638     VCMPNEZH_P vector_nez_v8hi_p {pred}
   2639 
   2640   const vsi __builtin_altivec_vcmpnezw (vsi, vsi);
   2641     CMPNEZW vcmpnezw {}
   2642 
   2643   const signed int __builtin_altivec_vcmpnezw_p (signed int, vsi, vsi);
   2644     VCMPNEZW_P vector_nez_v4si_p {pred}
   2645 
   2646   const signed int __builtin_altivec_vextublx (signed int, vsc);
   2647     VEXTUBLX vextublx {}
   2648 
   2649   const signed int __builtin_altivec_vextubrx (signed int, vsc);
   2650     VEXTUBRX vextubrx {}
   2651 
   2652   const signed int __builtin_altivec_vextuhlx (signed int, vss);
   2653     VEXTUHLX vextuhlx {}
   2654 
   2655   const signed int __builtin_altivec_vextuhrx (signed int, vss);
   2656     VEXTUHRX vextuhrx {}
   2657 
   2658   const signed int __builtin_altivec_vextuwlx (signed int, vsi);
   2659     VEXTUWLX vextuwlx {}
   2660 
   2661   const signed int __builtin_altivec_vextuwrx (signed int, vsi);
   2662     VEXTUWRX vextuwrx {}
   2663 
   2664   const vsq __builtin_altivec_vmsumudm (vsll, vsll, vsq);
   2665     VMSUMUDM altivec_vmsumudm {}
   2666 
   2667   const vsll __builtin_altivec_vprtybd (vsll);
   2668     VPRTYBD rs6000_vprtybv2di2 {}
   2669 
   2670   const vsq __builtin_altivec_vprtybq (vsq);
   2671     VPRTYBQ rs6000_vprtybv1ti2 {}
   2672 
   2673   const vsi __builtin_altivec_vprtybw (vsi);
   2674     VPRTYBW rs6000_vprtybv4si2 {}
   2675 
   2676   const vsll __builtin_altivec_vrldmi (vsll, vsll, vsll);
   2677     VRLDMI altivec_vrldmi {}
   2678 
   2679   const vsll __builtin_altivec_vrldnm (vsll, vsll);
   2680     VRLDNM altivec_vrldnm {}
   2681 
   2682   const vsi __builtin_altivec_vrlwmi (vsi, vsi, vsi);
   2683     VRLWMI altivec_vrlwmi {}
   2684 
   2685   const vsi __builtin_altivec_vrlwnm (vsi, vsi);
   2686     VRLWNM altivec_vrlwnm {}
   2687 
   2688   const vsll __builtin_altivec_vsignextsb2d (vsc);
   2689     VSIGNEXTSB2D vsx_sign_extend_v16qi_v2di {}
   2690 
   2691   const vsi __builtin_altivec_vsignextsb2w (vsc);
   2692     VSIGNEXTSB2W vsx_sign_extend_v16qi_v4si {}
   2693 
   2694   const vsll __builtin_altivec_visgnextsh2d (vss);
   2695     VSIGNEXTSH2D vsx_sign_extend_v8hi_v2di {}
   2696 
   2697   const vsi __builtin_altivec_vsignextsh2w (vss);
   2698     VSIGNEXTSH2W vsx_sign_extend_v8hi_v4si {}
   2699 
   2700   const vsll __builtin_altivec_vsignextsw2d (vsi);
   2701     VSIGNEXTSW2D vsx_sign_extend_v4si_v2di {}
   2702 
   2703   const vsc __builtin_altivec_vslv (vsc, vsc);
   2704     VSLV vslv {}
   2705 
   2706   const vsc __builtin_altivec_vsrv (vsc, vsc);
   2707     VSRV vsrv {}
   2708 
   2709   const signed int __builtin_scalar_byte_in_range (signed int, signed int);
   2710     CMPRB cmprb {}
   2711 
   2712   const signed int \
   2713       __builtin_scalar_byte_in_either_range (signed int, signed int);
   2714     CMPRB2 cmprb2 {}
   2715 
   2716   const vsll __builtin_vsx_extract4b (vsc, const int[0,12]);
   2717     EXTRACT4B extract4b {}
   2718 
   2719   const vd __builtin_vsx_extract_exp_dp (vd);
   2720     VEEDP xvxexpdp {}
   2721 
   2722   const vf __builtin_vsx_extract_exp_sp (vf);
   2723     VEESP xvxexpsp {}
   2724 
   2725   const vd __builtin_vsx_extract_sig_dp (vd);
   2726     VESDP xvxsigdp {}
   2727 
   2728   const vf __builtin_vsx_extract_sig_sp (vf);
   2729     VESSP xvxsigsp {}
   2730 
   2731   const vsc __builtin_vsx_insert4b (vsi, vsc, const int[0,12]);
   2732     INSERT4B insert4b {}
   2733 
   2734   const vd __builtin_vsx_insert_exp_dp (vd, vd);
   2735     VIEDP xviexpdp {}
   2736 
   2737   const vf __builtin_vsx_insert_exp_sp (vf, vf);
   2738     VIESP xviexpsp {}
   2739 
   2740   const signed int __builtin_vsx_scalar_cmp_exp_dp_eq (double, double);
   2741     VSCEDPEQ xscmpexpdp_eq {}
   2742 
   2743   const signed int __builtin_vsx_scalar_cmp_exp_dp_gt (double, double);
   2744     VSCEDPGT xscmpexpdp_gt {}
   2745 
   2746   const signed int __builtin_vsx_scalar_cmp_exp_dp_lt (double, double);
   2747     VSCEDPLT xscmpexpdp_lt {}
   2748 
   2749   const signed int __builtin_vsx_scalar_cmp_exp_dp_unordered (double, double);
   2750     VSCEDPUO xscmpexpdp_unordered {}
   2751 
   2752   const signed int \
   2753       __builtin_vsx_scalar_test_data_class_dp (double, const int<7>);
   2754     VSTDCDP xststdcdp {}
   2755 
   2756   const signed int \
   2757       __builtin_vsx_scalar_test_data_class_sp (float, const int<7>);
   2758     VSTDCSP xststdcsp {}
   2759 
   2760   const signed int __builtin_vsx_scalar_test_neg_dp (double);
   2761     VSTDCNDP xststdcnegdp {}
   2762 
   2763   const signed int __builtin_vsx_scalar_test_neg_sp (float);
   2764     VSTDCNSP xststdcnegsp {}
   2765 
   2766   const vsll __builtin_vsx_test_data_class_dp (vd, const int<7>);
   2767     VTDCDP xvtstdcdp {}
   2768 
   2769   const vsi __builtin_vsx_test_data_class_sp (vf, const int<7>);
   2770     VTDCSP xvtstdcsp {}
   2771 
   2772   const vf __builtin_vsx_vextract_fp_from_shorth (vss);
   2773     VEXTRACT_FP_FROM_SHORTH vextract_fp_from_shorth {}
   2774 
   2775   const vf __builtin_vsx_vextract_fp_from_shortl (vss);
   2776     VEXTRACT_FP_FROM_SHORTL vextract_fp_from_shortl {}
   2777 
   2778   const vd __builtin_vsx_xxbrd_v2df (vd);
   2779     XXBRD_V2DF p9_xxbrd_v2df {}
   2780 
   2781   const vsll __builtin_vsx_xxbrd_v2di (vsll);
   2782     XXBRD_V2DI p9_xxbrd_v2di {}
   2783 
   2784   const vss __builtin_vsx_xxbrh_v8hi (vss);
   2785     XXBRH_V8HI p9_xxbrh_v8hi {}
   2786 
   2787   const vsc __builtin_vsx_xxbrq_v16qi (vsc);
   2788     XXBRQ_V16QI p9_xxbrq_v16qi {}
   2789 
   2790   const vsq __builtin_vsx_xxbrq_v1ti (vsq);
   2791     XXBRQ_V1TI p9_xxbrq_v1ti {}
   2792 
   2793   const vf __builtin_vsx_xxbrw_v4sf (vf);
   2794     XXBRW_V4SF p9_xxbrw_v4sf {}
   2795 
   2796   const vsi __builtin_vsx_xxbrw_v4si (vsi);
   2797     XXBRW_V4SI p9_xxbrw_v4si {}
   2798 
   2799   const signed int __builtin_vsx_scalar_cmp_exp_qp_eq (_Float128, _Float128);
   2800     VSCEQPEQ xscmpexpqp_eq_kf {}
   2801 
   2802   const signed int __builtin_vsx_scalar_cmp_exp_qp_gt (_Float128, _Float128);
   2803     VSCEQPGT xscmpexpqp_gt_kf {}
   2804 
   2805   const signed int __builtin_vsx_scalar_cmp_exp_qp_lt (_Float128, _Float128);
   2806     VSCEQPLT xscmpexpqp_lt_kf {}
   2807 
   2808   const signed int \
   2809       __builtin_vsx_scalar_cmp_exp_qp_unordered (_Float128, _Float128);
   2810     VSCEQPUO xscmpexpqp_unordered_kf {}
   2811 
   2812 
   2813 ; Miscellaneous P9 functions
   2814 [power9]
   2815   signed long __builtin_darn ();
   2816     DARN darn_64_di {32bit}
   2817 
   2818   signed long __builtin_darn_32 ();
   2819     DARN_32 darn_32_di {32bit}
   2820 
   2821   signed long __builtin_darn_raw ();
   2822     DARN_RAW darn_raw_di {32bit}
   2823 
   2824   const signed int __builtin_dtstsfi_eq_dd (const int<6>, _Decimal64);
   2825     TSTSFI_EQ_DD dfptstsfi_eq_dd {}
   2826 
   2827   const signed int __builtin_dtstsfi_eq_td (const int<6>, _Decimal128);
   2828     TSTSFI_EQ_TD dfptstsfi_eq_td {}
   2829 
   2830   const signed int __builtin_dtstsfi_gt_dd (const int<6>, _Decimal64);
   2831     TSTSFI_GT_DD dfptstsfi_gt_dd {}
   2832 
   2833   const signed int __builtin_dtstsfi_gt_td (const int<6>, _Decimal128);
   2834     TSTSFI_GT_TD dfptstsfi_gt_td {}
   2835 
   2836   const signed int __builtin_dtstsfi_lt_dd (const int<6>, _Decimal64);
   2837     TSTSFI_LT_DD dfptstsfi_lt_dd {}
   2838 
   2839   const signed int __builtin_dtstsfi_lt_td (const int<6>, _Decimal128);
   2840     TSTSFI_LT_TD dfptstsfi_lt_td {}
   2841 
   2842   const signed int __builtin_dtstsfi_ov_dd (const int<6>, _Decimal64);
   2843     TSTSFI_OV_DD dfptstsfi_unordered_dd {}
   2844 
   2845   const signed int __builtin_dtstsfi_ov_td (const int<6>, _Decimal128);
   2846     TSTSFI_OV_TD dfptstsfi_unordered_td {}
   2847 
   2848 
   2849 [power9-64]
   2850   void __builtin_altivec_xst_len_r (vsc, void *, long);
   2851     XST_LEN_R xst_len_r {}
   2852 
   2853   void __builtin_altivec_stxvl (vsc, void *, long);
   2854     STXVL stxvl {}
   2855 
   2856   const signed int __builtin_scalar_byte_in_set (signed int, signed long long);
   2857     CMPEQB cmpeqb {}
   2858 
   2859   pure vsc __builtin_vsx_lxvl (const void *, signed long);
   2860     LXVL lxvl {}
   2861 
   2862   const signed long __builtin_vsx_scalar_extract_exp (double);
   2863     VSEEDP xsxexpdp {}
   2864 
   2865   const signed long __builtin_vsx_scalar_extract_sig (double);
   2866     VSESDP xsxsigdp {}
   2867 
   2868   const double __builtin_vsx_scalar_insert_exp (unsigned long long, \
   2869                                                 unsigned long long);
   2870     VSIEDP xsiexpdp {}
   2871 
   2872   const double __builtin_vsx_scalar_insert_exp_dp (double, unsigned long long);
   2873     VSIEDPF xsiexpdpf {}
   2874 
   2875   pure vsc __builtin_vsx_xl_len_r (void *, signed long);
   2876     XL_LEN_R xl_len_r {}
   2877 
   2878 
   2879 ; Builtins requiring hardware support for IEEE-128 floating-point.
   2880 [ieee128-hw]
   2881   fpmath _Float128 __builtin_addf128_round_to_odd (_Float128, _Float128);
   2882     ADDF128_ODD addkf3_odd {}
   2883 
   2884   fpmath _Float128 __builtin_divf128_round_to_odd (_Float128, _Float128);
   2885     DIVF128_ODD divkf3_odd {}
   2886 
   2887   fpmath _Float128 __builtin_fmaf128_round_to_odd (_Float128, _Float128, \
   2888                                                    _Float128);
   2889     FMAF128_ODD fmakf4_odd {}
   2890 
   2891   fpmath _Float128 __builtin_mulf128_round_to_odd (_Float128, _Float128);
   2892     MULF128_ODD mulkf3_odd {}
   2893 
   2894   fpmath _Float128 __builtin_sqrtf128_round_to_odd (_Float128);
   2895     SQRTF128_ODD sqrtkf2_odd {}
   2896 
   2897   fpmath _Float128 __builtin_subf128_round_to_odd (_Float128, _Float128);
   2898     SUBF128_ODD subkf3_odd {}
   2899 
   2900   fpmath double __builtin_truncf128_round_to_odd (_Float128);
   2901     TRUNCF128_ODD trunckfdf2_odd {}
   2902 
   2903   const signed long long __builtin_vsx_scalar_extract_expq (_Float128);
   2904     VSEEQP xsxexpqp_kf {}
   2905 
   2906   const signed __int128 __builtin_vsx_scalar_extract_sigq (_Float128);
   2907     VSESQP xsxsigqp_kf {}
   2908 
   2909   const _Float128 __builtin_vsx_scalar_insert_exp_q (unsigned __int128, \
   2910                                                      unsigned long long);
   2911     VSIEQP xsiexpqp_kf {}
   2912 
   2913   const _Float128 __builtin_vsx_scalar_insert_exp_qp (_Float128, \
   2914                                                       unsigned long long);
   2915     VSIEQPF xsiexpqpf_kf {}
   2916 
   2917   const signed int __builtin_vsx_scalar_test_data_class_qp (_Float128, \
   2918                                                             const int<7>);
   2919     VSTDCQP xststdcqp_kf {}
   2920 
   2921   const signed int __builtin_vsx_scalar_test_neg_qp (_Float128);
   2922     VSTDCNQP xststdcnegqp_kf {}
   2923 
   2924 
   2925 
   2926 ; Decimal floating-point builtins.
   2927 [dfp]
   2928   const _Decimal64 __builtin_ddedpd (const int<2>, _Decimal64);
   2929     DDEDPD dfp_ddedpd_dd {}
   2930 
   2931   const _Decimal128 __builtin_ddedpdq (const int<2>, _Decimal128);
   2932     DDEDPDQ dfp_ddedpd_td {}
   2933 
   2934   const _Decimal64 __builtin_denbcd (const int<1>, _Decimal64);
   2935     DENBCD dfp_denbcd_dd {}
   2936 
   2937   const _Decimal128 __builtin_denbcdq (const int<1>, _Decimal128);
   2938     DENBCDQ dfp_denbcd_td {}
   2939 
   2940   const _Decimal128 __builtin_denb2dfp_v16qi (vsc);
   2941     DENB2DFP_V16QI dfp_denbcd_v16qi {}
   2942 
   2943   const _Decimal64 __builtin_diex (signed long long, _Decimal64);
   2944     DIEX dfp_diex_dd {}
   2945 
   2946   const _Decimal128 __builtin_diexq (signed long long, _Decimal128);
   2947     DIEXQ dfp_diex_td {}
   2948 
   2949   const _Decimal64 __builtin_dscli (_Decimal64, const int<6>);
   2950     DSCLI dfp_dscli_dd {}
   2951 
   2952   const _Decimal128 __builtin_dscliq (_Decimal128, const int<6>);
   2953     DSCLIQ dfp_dscli_td {}
   2954 
   2955   const _Decimal64 __builtin_dscri (_Decimal64, const int<6>);
   2956     DSCRI dfp_dscri_dd {}
   2957 
   2958   const _Decimal128 __builtin_dscriq (_Decimal128, const int<6>);
   2959     DSCRIQ dfp_dscri_td {}
   2960 
   2961   const signed long long __builtin_dxex (_Decimal64);
   2962     DXEX dfp_dxex_dd {}
   2963 
   2964   const signed long long __builtin_dxexq (_Decimal128);
   2965     DXEXQ dfp_dxex_td {}
   2966 
   2967   const _Decimal128 __builtin_pack_dec128 (unsigned long long, \
   2968                                            unsigned long long);
   2969     PACK_TD packtd {}
   2970 
   2971   void __builtin_set_fpscr_drn (const int[0,7]);
   2972     SET_FPSCR_DRN rs6000_set_fpscr_drn {nosoft,no32bit}
   2973 
   2974   const unsigned long long __builtin_unpack_dec128 (_Decimal128, const int<1>);
   2975     UNPACK_TD unpacktd {}
   2976 
   2977 
   2978 [crypto]
   2979   const vull __builtin_crypto_vcipher (vull, vull);
   2980     VCIPHER crypto_vcipher_v2di {}
   2981 
   2982   const vuc __builtin_crypto_vcipher_be (vuc, vuc);
   2983     VCIPHER_BE crypto_vcipher_v16qi {}
   2984 
   2985   const vull __builtin_crypto_vcipherlast (vull, vull);
   2986     VCIPHERLAST crypto_vcipherlast_v2di {}
   2987 
   2988   const vuc __builtin_crypto_vcipherlast_be (vuc, vuc);
   2989     VCIPHERLAST_BE crypto_vcipherlast_v16qi {}
   2990 
   2991   const vull __builtin_crypto_vncipher (vull, vull);
   2992     VNCIPHER crypto_vncipher_v2di {}
   2993 
   2994   const vuc __builtin_crypto_vncipher_be (vuc, vuc);
   2995     VNCIPHER_BE crypto_vncipher_v16qi {}
   2996 
   2997   const vull __builtin_crypto_vncipherlast (vull, vull);
   2998     VNCIPHERLAST crypto_vncipherlast_v2di {}
   2999 
   3000   const vuc __builtin_crypto_vncipherlast_be (vuc, vuc);
   3001     VNCIPHERLAST_BE crypto_vncipherlast_v16qi {}
   3002 
   3003   const vull __builtin_crypto_vsbox (vull);
   3004     VSBOX crypto_vsbox_v2di {}
   3005 
   3006   const vuc __builtin_crypto_vsbox_be (vuc);
   3007     VSBOX_BE crypto_vsbox_v16qi {}
   3008 
   3009   const vull __builtin_crypto_vshasigmad (vull, const int<1>, const int<4>);
   3010     VSHASIGMAD crypto_vshasigmad {}
   3011 
   3012   const vui __builtin_crypto_vshasigmaw (vui, const int<1>, const int<4>);
   3013     VSHASIGMAW crypto_vshasigmaw {}
   3014 
   3015 
   3016 [htm]
   3017   unsigned long __builtin_get_texasr ();
   3018     GET_TEXASR nothing {htm,htmspr}
   3019 
   3020   unsigned long __builtin_get_texasru ();
   3021     GET_TEXASRU nothing {htm,htmspr}
   3022 
   3023   unsigned long __builtin_get_tfhar ();
   3024     GET_TFHAR nothing {htm,htmspr}
   3025 
   3026   unsigned long __builtin_get_tfiar ();
   3027     GET_TFIAR nothing {htm,htmspr}
   3028 
   3029   void __builtin_set_texasr (unsigned long);
   3030     SET_TEXASR nothing {htm,htmspr}
   3031 
   3032   void __builtin_set_texasru (unsigned long);
   3033     SET_TEXASRU nothing {htm,htmspr}
   3034 
   3035   void __builtin_set_tfhar (unsigned long);
   3036     SET_TFHAR nothing {htm,htmspr}
   3037 
   3038   void __builtin_set_tfiar (unsigned long);
   3039     SET_TFIAR nothing {htm,htmspr}
   3040 
   3041   unsigned int __builtin_tabort (unsigned int);
   3042     TABORT tabort {htm,htmcr}
   3043 
   3044   unsigned int __builtin_tabortdc (unsigned long, unsigned long, \
   3045                                    unsigned long);
   3046     TABORTDC tabortdc {htm,htmcr}
   3047 
   3048   unsigned int __builtin_tabortdci (unsigned long, unsigned long, \
   3049                                     unsigned long);
   3050     TABORTDCI tabortdci {htm,htmcr}
   3051 
   3052   unsigned int __builtin_tabortwc (unsigned int, unsigned int, unsigned int);
   3053     TABORTWC tabortwc {htm,htmcr}
   3054 
   3055   unsigned int __builtin_tabortwci (unsigned int, unsigned int, unsigned int);
   3056     TABORTWCI tabortwci {htm,htmcr}
   3057 
   3058   unsigned int __builtin_tbegin (unsigned int);
   3059     TBEGIN tbegin {htm,htmcr}
   3060 
   3061   unsigned int __builtin_tcheck ();
   3062     TCHECK tcheck {htm,htmcr}
   3063 
   3064   unsigned int __builtin_tend (unsigned int);
   3065     TEND tend {htm,htmcr}
   3066 
   3067   unsigned int __builtin_tendall ();
   3068     TENDALL tend {htm,htmcr}
   3069 
   3070   unsigned int __builtin_trechkpt ();
   3071     TRECHKPT trechkpt {htm,htmcr}
   3072 
   3073   unsigned int __builtin_treclaim (unsigned int);
   3074     TRECLAIM treclaim {htm,htmcr}
   3075 
   3076   unsigned int __builtin_tresume ();
   3077     TRESUME tsr {htm,htmcr}
   3078 
   3079   unsigned int __builtin_tsr (unsigned int);
   3080     TSR tsr {htm,htmcr}
   3081 
   3082   unsigned int __builtin_tsuspend ();
   3083     TSUSPEND tsr {htm,htmcr}
   3084 
   3085   unsigned int __builtin_ttest ();
   3086     TTEST ttest {htm,htmcr}
   3087 
   3088 
   3089 [power10]
   3090   const vbq __builtin_altivec_cmpge_1ti (vsq, vsq);
   3091     CMPGE_1TI vector_nltv1ti {}
   3092 
   3093   const vbq __builtin_altivec_cmpge_u1ti (vuq, vuq);
   3094     CMPGE_U1TI vector_nltuv1ti {}
   3095 
   3096   const vbq __builtin_altivec_cmple_1ti (vsq, vsq);
   3097     CMPLE_1TI vector_ngtv1ti {}
   3098 
   3099   const vbq __builtin_altivec_cmple_u1ti (vuq, vuq);
   3100     CMPLE_U1TI vector_ngtuv1ti {}
   3101 
   3102   const unsigned long long __builtin_altivec_cntmbb (vuc, const int<1>);
   3103     VCNTMBB vec_cntmb_v16qi {}
   3104 
   3105   const unsigned long long __builtin_altivec_cntmbd (vull, const int<1>);
   3106     VCNTMBD vec_cntmb_v2di {}
   3107 
   3108   const unsigned long long __builtin_altivec_cntmbh (vus, const int<1>);
   3109     VCNTMBH vec_cntmb_v8hi {}
   3110 
   3111   const unsigned long long __builtin_altivec_cntmbw (vui, const int<1>);
   3112     VCNTMBW vec_cntmb_v4si {}
   3113 
   3114   const vsq __builtin_altivec_div_v1ti (vsq, vsq);
   3115     DIV_V1TI vsx_div_v1ti {}
   3116 
   3117   const vsq __builtin_altivec_dives (vsq, vsq);
   3118     DIVES_V1TI vsx_dives_v1ti {}
   3119 
   3120   const vuq __builtin_altivec_diveu (vuq, vuq);
   3121     DIVEU_V1TI vsx_diveu_v1ti {}
   3122 
   3123   const vsq __builtin_altivec_mods (vsq, vsq);
   3124     MODS_V1TI vsx_mods_v1ti {}
   3125 
   3126   const vuq __builtin_altivec_modu (vuq, vuq);
   3127     MODU_V1TI vsx_modu_v1ti {}
   3128 
   3129   const vuc __builtin_altivec_mtvsrbm (unsigned long long);
   3130     MTVSRBM vec_mtvsr_v16qi {}
   3131 
   3132   const vull __builtin_altivec_mtvsrdm (unsigned long long);
   3133     MTVSRDM vec_mtvsr_v2di {}
   3134 
   3135   const vus __builtin_altivec_mtvsrhm (unsigned long long);
   3136     MTVSRHM vec_mtvsr_v8hi {}
   3137 
   3138   const vuq __builtin_altivec_mtvsrqm (unsigned long long);
   3139     MTVSRQM vec_mtvsr_v1ti {}
   3140 
   3141   const vui __builtin_altivec_mtvsrwm (unsigned long long);
   3142     MTVSRWM vec_mtvsr_v4si {}
   3143 
   3144   pure signed __int128 __builtin_altivec_se_lxvrbx (signed long, \
   3145                                                     const signed char *);
   3146     SE_LXVRBX vsx_lxvrbx {lxvrse}
   3147 
   3148   pure signed __int128 __builtin_altivec_se_lxvrhx (signed long, \
   3149                                                     const signed short *);
   3150     SE_LXVRHX vsx_lxvrhx {lxvrse}
   3151 
   3152   pure signed __int128 __builtin_altivec_se_lxvrwx (signed long, \
   3153                                                     const signed int *);
   3154     SE_LXVRWX vsx_lxvrwx {lxvrse}
   3155 
   3156   pure signed __int128 __builtin_altivec_se_lxvrdx (signed long, \
   3157                                                     const signed long long *);
   3158     SE_LXVRDX vsx_lxvrdx {lxvrse}
   3159 
   3160   void __builtin_altivec_tr_stxvrbx (vsq, signed long, signed char *);
   3161     TR_STXVRBX vsx_stxvrbx {stvec}
   3162 
   3163   void __builtin_altivec_tr_stxvrhx (vsq, signed long, signed int *);
   3164     TR_STXVRHX vsx_stxvrhx {stvec}
   3165 
   3166   void __builtin_altivec_tr_stxvrwx (vsq, signed long, signed short *);
   3167     TR_STXVRWX vsx_stxvrwx {stvec}
   3168 
   3169   void __builtin_altivec_tr_stxvrdx (vsq, signed long, signed long long *);
   3170     TR_STXVRDX vsx_stxvrdx {stvec}
   3171 
   3172   const vuq __builtin_altivec_udiv_v1ti (vuq, vuq);
   3173     UDIV_V1TI vsx_udiv_v1ti {}
   3174 
   3175   const vull __builtin_altivec_vcfuged (vull, vull);
   3176     VCFUGED vcfuged {}
   3177 
   3178   const vsc __builtin_altivec_vclrlb (vsc, signed int);
   3179     VCLRLB vclrlb {}
   3180 
   3181   const vsc __builtin_altivec_vclrrb (vsc, signed int);
   3182     VCLRRB vclrrb {}
   3183 
   3184   const signed int __builtin_altivec_vcmpaet_p (vsq, vsq);
   3185     VCMPAET_P vector_ae_v1ti_p {}
   3186 
   3187   const vbq __builtin_altivec_vcmpequt (vsq, vsq);
   3188     VCMPEQUT vector_eqv1ti {}
   3189 
   3190   const signed int __builtin_altivec_vcmpequt_p (signed int, vsq, vsq);
   3191     VCMPEQUT_P vector_eq_v1ti_p {pred}
   3192 
   3193   const vbq __builtin_altivec_vcmpgtst (vsq, vsq);
   3194     VCMPGTST vector_gtv1ti {}
   3195 
   3196   const signed int __builtin_altivec_vcmpgtst_p (signed int, vsq, vsq);
   3197     VCMPGTST_P vector_gt_v1ti_p {pred}
   3198 
   3199   const vbq __builtin_altivec_vcmpgtut (vuq, vuq);
   3200     VCMPGTUT vector_gtuv1ti {}
   3201 
   3202   const signed int __builtin_altivec_vcmpgtut_p (signed int, vuq, vuq);
   3203     VCMPGTUT_P vector_gtu_v1ti_p {pred}
   3204 
   3205   const vbq __builtin_altivec_vcmpnet (vsq, vsq);
   3206     VCMPNET vcmpnet {}
   3207 
   3208   const signed int __builtin_altivec_vcmpnet_p (vsq, vsq);
   3209     VCMPNET_P vector_ne_v1ti_p {}
   3210 
   3211   const vull __builtin_altivec_vclzdm (vull, vull);
   3212     VCLZDM vclzdm {}
   3213 
   3214   const vull __builtin_altivec_vctzdm (vull, vull);
   3215     VCTZDM vctzdm {}
   3216 
   3217   const vsll __builtin_altivec_vdivesd (vsll, vsll);
   3218     VDIVESD dives_v2di {}
   3219 
   3220   const vsi __builtin_altivec_vdivesw (vsi, vsi);
   3221     VDIVESW dives_v4si {}
   3222 
   3223   const vull __builtin_altivec_vdiveud (vull, vull);
   3224     VDIVEUD diveu_v2di {}
   3225 
   3226   const vui __builtin_altivec_vdiveuw (vui, vui);
   3227     VDIVEUW diveu_v4si {}
   3228 
   3229   const vsll __builtin_altivec_vdivsd (vsll, vsll);
   3230     VDIVSD divv2di3 {}
   3231 
   3232   const vsi __builtin_altivec_vdivsw (vsi, vsi);
   3233     VDIVSW divv4si3 {}
   3234 
   3235   const vull __builtin_altivec_vdivud (vull, vull);
   3236     VDIVUD udivv2di3 {}
   3237 
   3238   const vui __builtin_altivec_vdivuw (vui, vui);
   3239     VDIVUW udivv4si3 {}
   3240 
   3241   const vuc __builtin_altivec_vexpandmb (vuc);
   3242     VEXPANDMB vec_expand_v16qi {}
   3243 
   3244   const vull __builtin_altivec_vexpandmd (vull);
   3245     VEXPANDMD vec_expand_v2di {}
   3246 
   3247   const vus __builtin_altivec_vexpandmh (vus);
   3248     VEXPANDMH vec_expand_v8hi {}
   3249 
   3250   const vuq __builtin_altivec_vexpandmq (vuq);
   3251     VEXPANDMQ vec_expand_v1ti {}
   3252 
   3253   const vui __builtin_altivec_vexpandmw (vui);
   3254     VEXPANDMW vec_expand_v4si {}
   3255 
   3256   const vull __builtin_altivec_vextddvhx (vull, vull, unsigned int);
   3257     VEXTRACTDR vextractrv2di {}
   3258 
   3259   const vull __builtin_altivec_vextddvlx (vull, vull, unsigned int);
   3260     VEXTRACTDL vextractlv2di {}
   3261 
   3262   const vull __builtin_altivec_vextdubvhx (vuc, vuc, unsigned int);
   3263     VEXTRACTBR vextractrv16qi {}
   3264 
   3265   const vull __builtin_altivec_vextdubvlx (vuc, vuc, unsigned int);
   3266     VEXTRACTBL vextractlv16qi {}
   3267 
   3268   const vull __builtin_altivec_vextduhvhx (vus, vus, unsigned int);
   3269     VEXTRACTHR vextractrv8hi {}
   3270 
   3271   const vull __builtin_altivec_vextduhvlx (vus, vus, unsigned int);
   3272     VEXTRACTHL vextractlv8hi {}
   3273 
   3274   const vull __builtin_altivec_vextduwvhx (vui, vui, unsigned int);
   3275     VEXTRACTWR vextractrv4si {}
   3276 
   3277   const vull __builtin_altivec_vextduwvlx (vui, vui, unsigned int);
   3278     VEXTRACTWL vextractlv4si {}
   3279 
   3280   const signed int __builtin_altivec_vextractmb (vsc);
   3281     VEXTRACTMB vec_extract_v16qi {}
   3282 
   3283   const signed int __builtin_altivec_vextractmd (vsll);
   3284     VEXTRACTMD vec_extract_v2di {}
   3285 
   3286   const signed int __builtin_altivec_vextractmh (vss);
   3287     VEXTRACTMH vec_extract_v8hi {}
   3288 
   3289   const signed int __builtin_altivec_vextractmq (vsq);
   3290     VEXTRACTMQ vec_extract_v1ti {}
   3291 
   3292   const signed int __builtin_altivec_vextractmw (vsi);
   3293     VEXTRACTMW vec_extract_v4si {}
   3294 
   3295   const unsigned long long __builtin_altivec_vgnb (vull, const int <2,7>);
   3296     VGNB vgnb {}
   3297 
   3298   const vuc __builtin_altivec_vinsgubvlx (unsigned int, vuc, unsigned int);
   3299     VINSERTGPRBL vinsertgl_v16qi {}
   3300 
   3301   const vsc __builtin_altivec_vinsgubvrx (signed int, vsc, signed int);
   3302     VINSERTGPRBR vinsertgr_v16qi {}
   3303 
   3304   const vull __builtin_altivec_vinsgudvlx (unsigned int, vull, unsigned int);
   3305     VINSERTGPRDL vinsertgl_v2di {}
   3306 
   3307   const vsll __builtin_altivec_vinsgudvrx (signed int, vsll, signed int);
   3308     VINSERTGPRDR vinsertgr_v2di {}
   3309 
   3310   const vus __builtin_altivec_vinsguhvlx (unsigned int, vus, unsigned int);
   3311     VINSERTGPRHL vinsertgl_v8hi {}
   3312 
   3313   const vss __builtin_altivec_vinsguhvrx (signed int, vss, signed int);
   3314     VINSERTGPRHR vinsertgr_v8hi {}
   3315 
   3316   const vui __builtin_altivec_vinsguwvlx (unsigned int, vui, unsigned int);
   3317     VINSERTGPRWL vinsertgl_v4si {}
   3318 
   3319   const vsi __builtin_altivec_vinsguwvrx (signed int, vsi, signed int);
   3320     VINSERTGPRWR vinsertgr_v4si {}
   3321 
   3322   const vuc __builtin_altivec_vinsvubvlx (vuc, vuc, unsigned int);
   3323     VINSERTVPRBL vinsertvl_v16qi {}
   3324 
   3325   const vsc __builtin_altivec_vinsvubvrx (vsc, vsc, signed int);
   3326     VINSERTVPRBR vinsertvr_v16qi {}
   3327 
   3328   const vus __builtin_altivec_vinsvuhvlx (vus, vus, unsigned int);
   3329     VINSERTVPRHL vinsertvl_v8hi {}
   3330 
   3331   const vss __builtin_altivec_vinsvuhvrx (vss, vss, signed int);
   3332     VINSERTVPRHR vinsertvr_v8hi {}
   3333 
   3334   const vui __builtin_altivec_vinsvuwvlx (vui, vui, unsigned int);
   3335     VINSERTVPRWL vinsertvl_v4si {}
   3336 
   3337   const vsi __builtin_altivec_vinsvuwvrx (vsi, vsi, signed int);
   3338     VINSERTVPRWR vinsertvr_v4si {}
   3339 
   3340   const vsll __builtin_altivec_vmodsd (vsll, vsll);
   3341     VMODSD modv2di3 {}
   3342 
   3343   const vsi __builtin_altivec_vmodsw (vsi, vsi);
   3344     VMODSW modv4si3 {}
   3345 
   3346   const vull __builtin_altivec_vmodud (vull, vull);
   3347     VMODUD umodv2di3 {}
   3348 
   3349   const vui __builtin_altivec_vmoduw (vui, vui);
   3350     VMODUW umodv4si3 {}
   3351 
   3352   const vsq __builtin_altivec_vmulesd (vsll, vsll);
   3353     VMULESD vec_widen_smult_even_v2di {}
   3354 
   3355   const vuq __builtin_altivec_vmuleud (vull, vull);
   3356     VMULEUD vec_widen_umult_even_v2di {}
   3357 
   3358   const vsll __builtin_altivec_vmulhsd (vsll, vsll);
   3359     VMULHSD smulv2di3_highpart {}
   3360 
   3361   const vsi __builtin_altivec_vmulhsw (vsi, vsi);
   3362     VMULHSW smulv4si3_highpart {}
   3363 
   3364   const vull __builtin_altivec_vmulhud (vull, vull);
   3365     VMULHUD umulv2di3_highpart {}
   3366 
   3367   const vui __builtin_altivec_vmulhuw (vui, vui);
   3368     VMULHUW umulv4si3_highpart {}
   3369 
   3370   const vsll __builtin_altivec_vmulld (vsll, vsll);
   3371     VMULLD mulv2di3 {}
   3372 
   3373   const vsq __builtin_altivec_vmulosd (vsll, vsll);
   3374     VMULOSD vec_widen_smult_odd_v2di {}
   3375 
   3376   const vuq __builtin_altivec_vmuloud (vull, vull);
   3377     VMULOUD vec_widen_umult_odd_v2di {}
   3378 
   3379   const vsq __builtin_altivec_vnor_v1ti (vsq, vsq);
   3380     VNOR_V1TI norv1ti3 {}
   3381 
   3382   const vuq __builtin_altivec_vnor_v1ti_uns (vuq, vuq);
   3383     VNOR_V1TI_UNS norv1ti3 {}
   3384 
   3385   const vull __builtin_altivec_vpdepd (vull, vull);
   3386     VPDEPD vpdepd {}
   3387 
   3388   const vull __builtin_altivec_vpextd (vull, vull);
   3389     VPEXTD vpextd {}
   3390 
   3391   const vuc __builtin_altivec_vreplace_un_uv2di (vull, unsigned long long, \
   3392                                                  const int<4>);
   3393     VREPLACE_UN_UV2DI vreplace_un_v2di {}
   3394 
   3395   const vuc __builtin_altivec_vreplace_un_uv4si (vui, unsigned int, \
   3396                                                  const int<4>);
   3397     VREPLACE_UN_UV4SI vreplace_un_v4si {}
   3398 
   3399   const vuc __builtin_altivec_vreplace_un_v2df (vd, double, const int<4>);
   3400     VREPLACE_UN_V2DF vreplace_un_v2df {}
   3401 
   3402   const vuc __builtin_altivec_vreplace_un_v2di (vsll, signed long long, \
   3403                                                 const int<4>);
   3404     VREPLACE_UN_V2DI vreplace_un_v2di {}
   3405 
   3406   const vuc __builtin_altivec_vreplace_un_v4sf (vf, float, const int<4>);
   3407     VREPLACE_UN_V4SF vreplace_un_v4sf {}
   3408 
   3409   const vuc __builtin_altivec_vreplace_un_v4si (vsi, signed int, const int<4>);
   3410     VREPLACE_UN_V4SI vreplace_un_v4si {}
   3411 
   3412   const vull __builtin_altivec_vreplace_uv2di (vull, unsigned long long, \
   3413                                                const int<1>);
   3414     VREPLACE_ELT_UV2DI vreplace_elt_v2di {}
   3415 
   3416   const vui __builtin_altivec_vreplace_uv4si (vui, unsigned int, const int<2>);
   3417     VREPLACE_ELT_UV4SI vreplace_elt_v4si {}
   3418 
   3419   const vd __builtin_altivec_vreplace_v2df (vd, double, const int<1>);
   3420     VREPLACE_ELT_V2DF vreplace_elt_v2df {}
   3421 
   3422   const vsll __builtin_altivec_vreplace_v2di (vsll, signed long long, \
   3423                                               const int<1>);
   3424     VREPLACE_ELT_V2DI vreplace_elt_v2di {}
   3425 
   3426   const vf __builtin_altivec_vreplace_v4sf (vf, float, const int<2>);
   3427     VREPLACE_ELT_V4SF vreplace_elt_v4sf {}
   3428 
   3429   const vsi __builtin_altivec_vreplace_v4si (vsi, signed int, const int<2>);
   3430     VREPLACE_ELT_V4SI vreplace_elt_v4si {}
   3431 
   3432   const vsq __builtin_altivec_vrlq (vsq, vuq);
   3433     VRLQ vrotlv1ti3 {}
   3434 
   3435   const vsq __builtin_altivec_vrlqmi (vsq, vsq, vuq);
   3436     VRLQMI altivec_vrlqmi {}
   3437 
   3438   const vsq __builtin_altivec_vrlqnm (vsq, vuq);
   3439     VRLQNM altivec_vrlqnm {}
   3440 
   3441   const vsq __builtin_altivec_vsignext (vsll);
   3442     VSIGNEXTSD2Q vsx_sign_extend_v2di_v1ti {}
   3443 
   3444   const vsc __builtin_altivec_vsldb_v16qi (vsc, vsc, const int<3>);
   3445     VSLDB_V16QI vsldb_v16qi {}
   3446 
   3447   const vsll __builtin_altivec_vsldb_v2di (vsll, vsll, const int<3>);
   3448     VSLDB_V2DI vsldb_v2di {}
   3449 
   3450   const vsi __builtin_altivec_vsldb_v4si (vsi, vsi, const int<3>);
   3451     VSLDB_V4SI vsldb_v4si {}
   3452 
   3453   const vss __builtin_altivec_vsldb_v8hi (vss, vss, const int<3>);
   3454     VSLDB_V8HI vsldb_v8hi {}
   3455 
   3456   const vsq __builtin_altivec_vslq (vsq, vuq);
   3457     VSLQ vashlv1ti3 {}
   3458 
   3459   const vsq __builtin_altivec_vsraq (vsq, vuq);
   3460     VSRAQ vashrv1ti3 {}
   3461 
   3462   const vsc __builtin_altivec_vsrdb_v16qi (vsc, vsc, const int<3>);
   3463     VSRDB_V16QI vsrdb_v16qi {}
   3464 
   3465   const vsll __builtin_altivec_vsrdb_v2di (vsll, vsll, const int<3>);
   3466     VSRDB_V2DI vsrdb_v2di {}
   3467 
   3468   const vsi __builtin_altivec_vsrdb_v4si (vsi, vsi, const int<3>);
   3469     VSRDB_V4SI vsrdb_v4si {}
   3470 
   3471   const vss __builtin_altivec_vsrdb_v8hi (vss, vss, const int<3>);
   3472     VSRDB_V8HI vsrdb_v8hi {}
   3473 
   3474   const vsq __builtin_altivec_vsrq (vsq, vuq);
   3475     VSRQ vlshrv1ti3 {}
   3476 
   3477   const vsc __builtin_altivec_vstribl (vsc);
   3478     VSTRIBL vstril_v16qi {}
   3479 
   3480   const signed int __builtin_altivec_vstribl_p (vsc);
   3481     VSTRIBL_P vstril_p_v16qi {}
   3482 
   3483   const vsc __builtin_altivec_vstribr (vsc);
   3484     VSTRIBR vstrir_v16qi {}
   3485 
   3486   const signed int __builtin_altivec_vstribr_p (vsc);
   3487     VSTRIBR_P vstrir_p_v16qi {}
   3488 
   3489   const vss __builtin_altivec_vstrihl (vss);
   3490     VSTRIHL vstril_v8hi {}
   3491 
   3492   const signed int __builtin_altivec_vstrihl_p (vss);
   3493     VSTRIHL_P vstril_p_v8hi {}
   3494 
   3495   const vss __builtin_altivec_vstrihr (vss);
   3496     VSTRIHR vstrir_v8hi {}
   3497 
   3498   const signed int __builtin_altivec_vstrihr_p (vss);
   3499     VSTRIHR_P vstrir_p_v8hi {}
   3500 
   3501   const vuq __builtin_vsx_vmsumcud (vull, vull, vuq);
   3502     VMSUMCUD vmsumcud {}
   3503 
   3504   const signed int __builtin_vsx_xvtlsbb_all_ones (vsc);
   3505     XVTLSBB_ONES xvtlsbbo {}
   3506 
   3507   const signed int __builtin_vsx_xvtlsbb_all_zeros (vsc);
   3508     XVTLSBB_ZEROS xvtlsbbz {}
   3509 
   3510   const vf __builtin_vsx_vxxsplti32dx_v4sf (vf, const int<1>, float);
   3511     VXXSPLTI32DX_V4SF xxsplti32dx_v4sf {}
   3512 
   3513   const vsi __builtin_vsx_vxxsplti32dx_v4si (vsi, const int<1>, signed int);
   3514     VXXSPLTI32DX_V4SI xxsplti32dx_v4si {}
   3515 
   3516   const vd __builtin_vsx_vxxspltidp (float);
   3517     VXXSPLTIDP xxspltidp_v2df {}
   3518 
   3519   const vf __builtin_vsx_vxxspltiw_v4sf (float);
   3520     VXXSPLTIW_V4SF xxspltiw_v4sf {}
   3521 
   3522   const vsi __builtin_vsx_vxxspltiw_v4si (signed int);
   3523     VXXSPLTIW_V4SI xxspltiw_v4si {}
   3524 
   3525   const vuc __builtin_vsx_xvcvbf16spn (vuc);
   3526     XVCVBF16SPN vsx_xvcvbf16spn {}
   3527 
   3528   const vuc __builtin_vsx_xvcvspbf16 (vuc);
   3529     XVCVSPBF16 vsx_xvcvspbf16 {}
   3530 
   3531   const vuc __builtin_vsx_xxblend_v16qi (vuc, vuc, vuc);
   3532     VXXBLEND_V16QI xxblend_v16qi {}
   3533 
   3534   const vd __builtin_vsx_xxblend_v2df (vd, vd, vd);
   3535     VXXBLEND_V2DF xxblend_v2df {}
   3536 
   3537   const vull __builtin_vsx_xxblend_v2di (vull, vull, vull);
   3538     VXXBLEND_V2DI xxblend_v2di {}
   3539 
   3540   const vf __builtin_vsx_xxblend_v4sf (vf, vf, vf);
   3541     VXXBLEND_V4SF xxblend_v4sf {}
   3542 
   3543   const vui __builtin_vsx_xxblend_v4si (vui, vui, vui);
   3544     VXXBLEND_V4SI xxblend_v4si {}
   3545 
   3546   const vus __builtin_vsx_xxblend_v8hi (vus, vus, vus);
   3547     VXXBLEND_V8HI xxblend_v8hi {}
   3548 
   3549   const vull __builtin_vsx_xxeval (vull, vull, vull, const int <8>);
   3550     XXEVAL xxeval {}
   3551 
   3552   const vuc __builtin_vsx_xxgenpcvm_v16qi (vuc, const int <2>);
   3553     XXGENPCVM_V16QI xxgenpcvm_v16qi {}
   3554 
   3555   const vull __builtin_vsx_xxgenpcvm_v2di (vull, const int <2>);
   3556     XXGENPCVM_V2DI xxgenpcvm_v2di {}
   3557 
   3558   const vui __builtin_vsx_xxgenpcvm_v4si (vui, const int <2>);
   3559     XXGENPCVM_V4SI xxgenpcvm_v4si {}
   3560 
   3561   const vus __builtin_vsx_xxgenpcvm_v8hi (vus, const int <2>);
   3562     XXGENPCVM_V8HI xxgenpcvm_v8hi {}
   3563 
   3564   const vuc __builtin_vsx_xxpermx_uv16qi (vuc, vuc, vuc, const int<3>);
   3565     XXPERMX_UV16QI xxpermx {}
   3566 
   3567   const vull __builtin_vsx_xxpermx_uv2di (vull, vull, vuc, const int<3>);
   3568     XXPERMX_UV2DI xxpermx {}
   3569 
   3570   const vui __builtin_vsx_xxpermx_uv4si (vui, vui, vuc, const int<3>);
   3571     XXPERMX_UV4SI xxpermx {}
   3572 
   3573   const vus __builtin_vsx_xxpermx_uv8hi (vus, vus, vuc, const int<3>);
   3574     XXPERMX_UV8HI xxpermx {}
   3575 
   3576   const vsc __builtin_vsx_xxpermx_v16qi (vsc, vsc, vuc, const int<3>);
   3577     XXPERMX_V16QI xxpermx {}
   3578 
   3579   const vd __builtin_vsx_xxpermx_v2df (vd, vd, vuc, const int<3>);
   3580     XXPERMX_V2DF xxpermx {}
   3581 
   3582   const vsll __builtin_vsx_xxpermx_v2di (vsll, vsll, vuc, const int<3>);
   3583     XXPERMX_V2DI xxpermx {}
   3584 
   3585   const vf __builtin_vsx_xxpermx_v4sf (vf, vf, vuc, const int<3>);
   3586     XXPERMX_V4SF xxpermx {}
   3587 
   3588   const vsi __builtin_vsx_xxpermx_v4si (vsi, vsi, vuc, const int<3>);
   3589     XXPERMX_V4SI xxpermx {}
   3590 
   3591   const vss __builtin_vsx_xxpermx_v8hi (vss, vss, vuc, const int<3>);
   3592     XXPERMX_V8HI xxpermx {}
   3593 
   3594   pure unsigned __int128 __builtin_altivec_ze_lxvrbx (signed long, \
   3595                                                       const unsigned char *);
   3596     ZE_LXVRBX vsx_lxvrbx {lxvrze}
   3597 
   3598   pure unsigned __int128 __builtin_altivec_ze_lxvrhx (signed long, \
   3599                                                       const unsigned short *);
   3600     ZE_LXVRHX vsx_lxvrhx {lxvrze}
   3601 
   3602   pure unsigned __int128 __builtin_altivec_ze_lxvrwx (signed long, \
   3603                                                       const unsigned int *);
   3604     ZE_LXVRWX vsx_lxvrwx {lxvrze}
   3605 
   3606   pure unsigned __int128 \
   3607       __builtin_altivec_ze_lxvrdx (signed long, const unsigned long long *);
   3608     ZE_LXVRDX vsx_lxvrdx {lxvrze}
   3609 
   3610 
   3611 [power10-64]
   3612   const unsigned long long __builtin_cfuged (unsigned long long, \
   3613                                              unsigned long long);
   3614     CFUGED cfuged {}
   3615 
   3616   const unsigned long long __builtin_cntlzdm (unsigned long long, \
   3617                                               unsigned long long);
   3618     CNTLZDM cntlzdm {}
   3619 
   3620   const unsigned long long __builtin_cnttzdm (unsigned long long, \
   3621                                               unsigned long long);
   3622     CNTTZDM cnttzdm {}
   3623 
   3624   const unsigned long long __builtin_pdepd (unsigned long long, \
   3625                                             unsigned long long);
   3626     PDEPD pdepd {}
   3627 
   3628   const unsigned long long __builtin_pextd (unsigned long long, \
   3629                                             unsigned long long);
   3630     PEXTD pextd {}
   3631 
   3632 
   3633 [mma]
   3634   void __builtin_mma_assemble_acc (v512 *, vuc, vuc, vuc, vuc);
   3635     ASSEMBLE_ACC nothing {mma,mmaint}
   3636 
   3637   v512 __builtin_mma_assemble_acc_internal (vuc, vuc, vuc, vuc);
   3638     ASSEMBLE_ACC_INTERNAL mma_assemble_acc {mma}
   3639 
   3640   void __builtin_mma_assemble_pair (v256 *, vuc, vuc);
   3641     ASSEMBLE_PAIR nothing {mma,mmaint}
   3642 
   3643   v256 __builtin_mma_assemble_pair_internal (vuc, vuc);
   3644     ASSEMBLE_PAIR_INTERNAL vsx_assemble_pair {mma}
   3645 
   3646   void __builtin_mma_build_acc (v512 *, vuc, vuc, vuc, vuc);
   3647     BUILD_ACC nothing {mma,mmaint}
   3648 
   3649   v512 __builtin_mma_build_acc_internal (vuc, vuc, vuc, vuc);
   3650     BUILD_ACC_INTERNAL mma_assemble_acc {mma}
   3651 
   3652   void __builtin_mma_disassemble_acc (void *, v512 *);
   3653     DISASSEMBLE_ACC nothing {mma,quad,mmaint}
   3654 
   3655   vuc __builtin_mma_disassemble_acc_internal (v512, const int<2>);
   3656     DISASSEMBLE_ACC_INTERNAL mma_disassemble_acc {mma}
   3657 
   3658   void __builtin_mma_disassemble_pair (void *, v256 *);
   3659     DISASSEMBLE_PAIR nothing {mma,pair,mmaint}
   3660 
   3661   vuc __builtin_mma_disassemble_pair_internal (v256, const int<2>);
   3662     DISASSEMBLE_PAIR_INTERNAL vsx_disassemble_pair {mma}
   3663 
   3664   void __builtin_mma_pmxvbf16ger2 (v512 *, vuc, vuc, const int<4>, \
   3665                                    const int<4>, const int<2>);
   3666     PMXVBF16GER2 nothing {mma,mmaint}
   3667 
   3668   v512 __builtin_mma_pmxvbf16ger2_internal (vuc, vuc, const int<4>, \
   3669                                             const int<4>, const int<2>);
   3670     PMXVBF16GER2_INTERNAL mma_pmxvbf16ger2 {mma}
   3671 
   3672   void __builtin_mma_pmxvbf16ger2nn (v512 *, vuc, vuc, const int<4>, \
   3673                                      const int<4>, const int<2>);
   3674     PMXVBF16GER2NN nothing {mma,quad,mmaint}
   3675 
   3676   v512 __builtin_mma_pmxvbf16ger2nn_internal (v512, vuc, vuc, const int<4>, \
   3677                                               const int<4>, const int<2>);
   3678     PMXVBF16GER2NN_INTERNAL mma_pmxvbf16ger2nn {mma,quad}
   3679 
   3680   void __builtin_mma_pmxvbf16ger2np (v512 *, vuc, vuc, const int<4>, \
   3681                                      const int<4>, const int<2>);
   3682     PMXVBF16GER2NP nothing {mma,quad,mmaint}
   3683 
   3684   v512 __builtin_mma_pmxvbf16ger2np_internal (v512, vuc, vuc, const int<4>, \
   3685                                               const int<4>, const int<2>);
   3686     PMXVBF16GER2NP_INTERNAL mma_pmxvbf16ger2np {mma,quad}
   3687 
   3688   void __builtin_mma_pmxvbf16ger2pn (v512 *, vuc, vuc, const int<4>, \
   3689                                      const int<4>, const int<2>);
   3690     PMXVBF16GER2PN nothing {mma,quad,mmaint}
   3691 
   3692   v512 __builtin_mma_pmxvbf16ger2pn_internal (v512, vuc, vuc, const int<4>, \
   3693                                               const int<4>, const int<2>);
   3694     PMXVBF16GER2PN_INTERNAL mma_pmxvbf16ger2pn {mma,quad}
   3695 
   3696   void __builtin_mma_pmxvbf16ger2pp (v512 *, vuc, vuc, const int<4>, \
   3697                                      const int<4>, const int<2>);
   3698     PMXVBF16GER2PP nothing {mma,quad,mmaint}
   3699 
   3700   v512 __builtin_mma_pmxvbf16ger2pp_internal (v512, vuc, vuc, const int<4>, \
   3701                                               const int<4>, const int<2>);
   3702     PMXVBF16GER2PP_INTERNAL mma_pmxvbf16ger2pp {mma,quad}
   3703 
   3704   void __builtin_mma_pmxvf16ger2 (v512 *, vuc, vuc, const int<4>, \
   3705                                   const int<4>, const int<2>);
   3706     PMXVF16GER2 nothing {mma,mmaint}
   3707 
   3708   v512 __builtin_mma_pmxvf16ger2_internal (vuc, vuc, const int<4>, \
   3709                                            const int<4>, const int<2>);
   3710     PMXVF16GER2_INTERNAL mma_pmxvf16ger2 {mma}
   3711 
   3712   void __builtin_mma_pmxvf16ger2nn (v512 *, vuc, vuc, const int<4>, \
   3713                                     const int<4>, const int<2>);
   3714     PMXVF16GER2NN nothing {mma,quad,mmaint}
   3715 
   3716   v512 __builtin_mma_pmxvf16ger2nn_internal (v512, vuc, vuc, const int<4>, \
   3717                                              const int<4>, const int<2>);
   3718     PMXVF16GER2NN_INTERNAL mma_pmxvf16ger2nn {mma,quad}
   3719 
   3720   void __builtin_mma_pmxvf16ger2np (v512 *, vuc, vuc, const int<4>, \
   3721                                     const int<4>, const int<2>);
   3722     PMXVF16GER2NP nothing {mma,quad,mmaint}
   3723 
   3724   v512 __builtin_mma_pmxvf16ger2np_internal (v512, vuc, vuc, const int<4>, \
   3725                                              const int<4>, const int<2>);
   3726     PMXVF16GER2NP_INTERNAL mma_pmxvf16ger2np {mma,quad}
   3727 
   3728   void __builtin_mma_pmxvf16ger2pn (v512 *, vuc, vuc, const int<4>, \
   3729                                     const int<4>, const int<2>);
   3730     PMXVF16GER2PN nothing {mma,quad,mmaint}
   3731 
   3732   v512 __builtin_mma_pmxvf16ger2pn_internal (v512, vuc, vuc, const int<4>, \
   3733                                              const int<4>, const int<2>);
   3734     PMXVF16GER2PN_INTERNAL mma_pmxvf16ger2pn {mma,quad}
   3735 
   3736   void __builtin_mma_pmxvf16ger2pp (v512 *, vuc, vuc, const int<4>, \
   3737                                     const int<4>, const int<2>);
   3738     PMXVF16GER2PP nothing {mma,quad,mmaint}
   3739 
   3740   v512 __builtin_mma_pmxvf16ger2pp_internal (v512, vuc, vuc, const int<4>, \
   3741                                              const int<4>, const int<2>);
   3742     PMXVF16GER2PP_INTERNAL mma_pmxvf16ger2pp {mma,quad}
   3743 
   3744   void __builtin_mma_pmxvf32ger (v512 *, vuc, vuc, const int<4>, const int<4>);
   3745     PMXVF32GER nothing {mma,mmaint}
   3746 
   3747   v512 __builtin_mma_pmxvf32ger_internal (vuc, vuc, const int<4>, \
   3748                                           const int<4>);
   3749     PMXVF32GER_INTERNAL mma_pmxvf32ger {mma}
   3750 
   3751   void __builtin_mma_pmxvf32gernn (v512 *, vuc, vuc, const int<4>, \
   3752                                    const int<4>);
   3753     PMXVF32GERNN nothing {mma,quad,mmaint}
   3754 
   3755   v512 __builtin_mma_pmxvf32gernn_internal (v512, vuc, vuc, const int<4>, \
   3756                                             const int<4>);
   3757     PMXVF32GERNN_INTERNAL mma_pmxvf32gernn {mma,quad}
   3758 
   3759   void __builtin_mma_pmxvf32gernp (v512 *, vuc, vuc, const int<4>, \
   3760                                    const int<4>);
   3761     PMXVF32GERNP nothing {mma,quad,mmaint}
   3762 
   3763   v512 __builtin_mma_pmxvf32gernp_internal (v512, vuc, vuc, const int<4>, \
   3764                                             const int<4>);
   3765     PMXVF32GERNP_INTERNAL mma_pmxvf32gernp {mma,quad}
   3766 
   3767   void __builtin_mma_pmxvf32gerpn (v512 *, vuc, vuc, const int<4>, \
   3768                                    const int<4>);
   3769     PMXVF32GERPN nothing {mma,quad,mmaint}
   3770 
   3771   v512 __builtin_mma_pmxvf32gerpn_internal (v512, vuc, vuc, const int<4>, \
   3772                                             const int<4>);
   3773     PMXVF32GERPN_INTERNAL mma_pmxvf32gerpn {mma,quad}
   3774 
   3775   void __builtin_mma_pmxvf32gerpp (v512 *, vuc, vuc, const int<4>, \
   3776                                    const int<4>);
   3777     PMXVF32GERPP nothing {mma,quad,mmaint}
   3778 
   3779   v512 __builtin_mma_pmxvf32gerpp_internal (v512, vuc, vuc, const int<4>, \
   3780                                             const int<4>);
   3781     PMXVF32GERPP_INTERNAL mma_pmxvf32gerpp {mma,quad}
   3782 
   3783   void __builtin_mma_pmxvf64ger (v512 *, v256, vuc, const int<4>, \
   3784                                  const int<2>);
   3785     PMXVF64GER nothing {mma,pair,mmaint}
   3786 
   3787   v512 __builtin_mma_pmxvf64ger_internal (v256, vuc, const int<4>, \
   3788                                           const int<2>);
   3789     PMXVF64GER_INTERNAL mma_pmxvf64ger {mma,pair}
   3790 
   3791   void __builtin_mma_pmxvf64gernn (v512 *, v256, vuc, const int<4>, \
   3792                                    const int<2>);
   3793     PMXVF64GERNN nothing {mma,pair,quad,mmaint}
   3794 
   3795   v512 __builtin_mma_pmxvf64gernn_internal (v512, v256, vuc, const int<4>, \
   3796                                             const int<2>);
   3797     PMXVF64GERNN_INTERNAL mma_pmxvf64gernn {mma,pair,quad}
   3798 
   3799   void __builtin_mma_pmxvf64gernp (v512 *, v256, vuc, const int<4>, \
   3800                                    const int<2>);
   3801     PMXVF64GERNP nothing {mma,pair,quad,mmaint}
   3802 
   3803   v512 __builtin_mma_pmxvf64gernp_internal (v512, v256, vuc, const int<4>, \
   3804                                             const int<2>);
   3805     PMXVF64GERNP_INTERNAL mma_pmxvf64gernp {mma,pair,quad}
   3806 
   3807   void __builtin_mma_pmxvf64gerpn (v512 *, v256, vuc, const int<4>, \
   3808                                    const int<2>);
   3809     PMXVF64GERPN nothing {mma,pair,quad,mmaint}
   3810 
   3811   v512 __builtin_mma_pmxvf64gerpn_internal (v512, v256, vuc, const int<4>, \
   3812                                             const int<2>);
   3813     PMXVF64GERPN_INTERNAL mma_pmxvf64gerpn {mma,pair,quad}
   3814 
   3815   void __builtin_mma_pmxvf64gerpp (v512 *, v256, vuc, const int<4>, \
   3816                                    const int<2>);
   3817     PMXVF64GERPP nothing {mma,pair,quad,mmaint}
   3818 
   3819   v512 __builtin_mma_pmxvf64gerpp_internal (v512, v256, vuc, const int<4>, \
   3820                                             const int<2>);
   3821     PMXVF64GERPP_INTERNAL mma_pmxvf64gerpp {mma,pair,quad}
   3822 
   3823   void __builtin_mma_pmxvi16ger2 (v512 *, vuc, vuc, const int<4>, \
   3824                                   const int<4>, const int<2>);
   3825     PMXVI16GER2 nothing {mma,mmaint}
   3826 
   3827   v512 __builtin_mma_pmxvi16ger2_internal (vuc, vuc, const int<4>, \
   3828                                            const int<4>, const int<2>);
   3829     PMXVI16GER2_INTERNAL mma_pmxvi16ger2 {mma}
   3830 
   3831   void __builtin_mma_pmxvi16ger2pp (v512 *, vuc, vuc, const int<4>, \
   3832                                     const int<4>, const int<2>);
   3833     PMXVI16GER2PP nothing {mma,quad,mmaint}
   3834 
   3835   v512 __builtin_mma_pmxvi16ger2pp_internal (v512, vuc, vuc, const int<4>, \
   3836                                              const int<4>, const int<2>);
   3837     PMXVI16GER2PP_INTERNAL mma_pmxvi16ger2pp {mma,quad}
   3838 
   3839   void __builtin_mma_pmxvi16ger2s (v512 *, vuc, vuc, const int<4>, \
   3840                                    const int<4>, const int<2>);
   3841     PMXVI16GER2S nothing {mma,mmaint}
   3842 
   3843   v512 __builtin_mma_pmxvi16ger2s_internal (vuc, vuc, const int<4>, \
   3844                                             const int<4>, const int<2>);
   3845     PMXVI16GER2S_INTERNAL mma_pmxvi16ger2s {mma}
   3846 
   3847   void __builtin_mma_pmxvi16ger2spp (v512 *, vuc, vuc, const int<4>, \
   3848                                      const int<4>, const int<2>);
   3849     PMXVI16GER2SPP nothing {mma,quad,mmaint}
   3850 
   3851   v512 __builtin_mma_pmxvi16ger2spp_internal (v512, vuc, vuc, const int<4>, \
   3852                                               const int<4>, const int<2>);
   3853     PMXVI16GER2SPP_INTERNAL mma_pmxvi16ger2spp {mma,quad}
   3854 
   3855   void __builtin_mma_pmxvi4ger8 (v512 *, vuc, vuc, const int<4>, \
   3856                                  const int<4>, const int<8>);
   3857     PMXVI4GER8 nothing {mma,mmaint}
   3858 
   3859   v512 __builtin_mma_pmxvi4ger8_internal (vuc, vuc, const int<4>, \
   3860                                           const int<4>, const int<8>);
   3861     PMXVI4GER8_INTERNAL mma_pmxvi4ger8 {mma}
   3862 
   3863   void __builtin_mma_pmxvi4ger8pp (v512 *, vuc, vuc, const int<4>, \
   3864                                    const int<4>, const int<8>);
   3865     PMXVI4GER8PP nothing {mma,quad,mmaint}
   3866 
   3867   v512 __builtin_mma_pmxvi4ger8pp_internal (v512, vuc, vuc, const int<4>, \
   3868                                             const int<4>, const int<8>);
   3869     PMXVI4GER8PP_INTERNAL mma_pmxvi4ger8pp {mma,quad}
   3870 
   3871   void __builtin_mma_pmxvi8ger4 (v512 *, vuc, vuc, const int<4>, \
   3872                                  const int<4>, const int<4>);
   3873     PMXVI8GER4 nothing {mma,mmaint}
   3874 
   3875   v512 __builtin_mma_pmxvi8ger4_internal (vuc, vuc, const int<4>, \
   3876                                           const int<4>, const int<4>);
   3877     PMXVI8GER4_INTERNAL mma_pmxvi8ger4 {mma}
   3878 
   3879   void __builtin_mma_pmxvi8ger4pp (v512 *, vuc, vuc, const int<4>, \
   3880                                    const int<4>, const int<4>);
   3881     PMXVI8GER4PP nothing {mma,quad,mmaint}
   3882 
   3883   v512 __builtin_mma_pmxvi8ger4pp_internal (v512, vuc, vuc, const int<4>, \
   3884                                             const int<4>, const int<4>);
   3885     PMXVI8GER4PP_INTERNAL mma_pmxvi8ger4pp {mma,quad}
   3886 
   3887   void __builtin_mma_pmxvi8ger4spp (v512 *, vuc, vuc, const int<4>, \
   3888                                     const int<4>, const int<4>);
   3889     PMXVI8GER4SPP nothing {mma,quad,mmaint}
   3890 
   3891   v512 __builtin_mma_pmxvi8ger4spp_internal (v512, vuc, vuc, const int<4>, \
   3892                                              const int<4>, const int<4>);
   3893     PMXVI8GER4SPP_INTERNAL mma_pmxvi8ger4spp {mma,quad}
   3894 
   3895   void __builtin_mma_xvbf16ger2 (v512 *, vuc, vuc);
   3896     XVBF16GER2 nothing {mma,mmaint}
   3897 
   3898   v512 __builtin_mma_xvbf16ger2_internal (vuc, vuc);
   3899     XVBF16GER2_INTERNAL mma_xvbf16ger2 {mma}
   3900 
   3901   void __builtin_mma_xvbf16ger2nn (v512 *, vuc, vuc);
   3902     XVBF16GER2NN nothing {mma,quad,mmaint}
   3903 
   3904   v512 __builtin_mma_xvbf16ger2nn_internal (v512, vuc, vuc);
   3905     XVBF16GER2NN_INTERNAL mma_xvbf16ger2nn {mma,quad}
   3906 
   3907   void __builtin_mma_xvbf16ger2np (v512 *, vuc, vuc);
   3908     XVBF16GER2NP nothing {mma,quad,mmaint}
   3909 
   3910   v512 __builtin_mma_xvbf16ger2np_internal (v512, vuc, vuc);
   3911     XVBF16GER2NP_INTERNAL mma_xvbf16ger2np {mma,quad}
   3912 
   3913   void __builtin_mma_xvbf16ger2pn (v512 *, vuc, vuc);
   3914     XVBF16GER2PN nothing {mma,quad,mmaint}
   3915 
   3916   v512 __builtin_mma_xvbf16ger2pn_internal (v512, vuc, vuc);
   3917     XVBF16GER2PN_INTERNAL mma_xvbf16ger2pn {mma,quad}
   3918 
   3919   void __builtin_mma_xvbf16ger2pp (v512 *, vuc, vuc);
   3920     XVBF16GER2PP nothing {mma,quad,mmaint}
   3921 
   3922   v512 __builtin_mma_xvbf16ger2pp_internal (v512, vuc, vuc);
   3923     XVBF16GER2PP_INTERNAL mma_xvbf16ger2pp {mma,quad}
   3924 
   3925   void __builtin_mma_xvf16ger2 (v512 *, vuc, vuc);
   3926     XVF16GER2 nothing {mma,mmaint}
   3927 
   3928   v512 __builtin_mma_xvf16ger2_internal (vuc, vuc);
   3929     XVF16GER2_INTERNAL mma_xvf16ger2 {mma}
   3930 
   3931   void __builtin_mma_xvf16ger2nn (v512 *, vuc, vuc);
   3932     XVF16GER2NN nothing {mma,quad,mmaint}
   3933 
   3934   v512 __builtin_mma_xvf16ger2nn_internal (v512, vuc, vuc);
   3935     XVF16GER2NN_INTERNAL mma_xvf16ger2nn {mma,quad}
   3936 
   3937   void __builtin_mma_xvf16ger2np (v512 *, vuc, vuc);
   3938     XVF16GER2NP nothing {mma,quad,mmaint}
   3939 
   3940   v512 __builtin_mma_xvf16ger2np_internal (v512, vuc, vuc);
   3941     XVF16GER2NP_INTERNAL mma_xvf16ger2np {mma,quad}
   3942 
   3943   void __builtin_mma_xvf16ger2pn (v512 *, vuc, vuc);
   3944     XVF16GER2PN nothing {mma,quad,mmaint}
   3945 
   3946   v512 __builtin_mma_xvf16ger2pn_internal (v512, vuc, vuc);
   3947     XVF16GER2PN_INTERNAL mma_xvf16ger2pn {mma,quad}
   3948 
   3949   void __builtin_mma_xvf16ger2pp (v512 *, vuc, vuc);
   3950     XVF16GER2PP nothing {mma,quad,mmaint}
   3951 
   3952   v512 __builtin_mma_xvf16ger2pp_internal (v512, vuc, vuc);
   3953     XVF16GER2PP_INTERNAL mma_xvf16ger2pp {mma,quad}
   3954 
   3955   void __builtin_mma_xvf32ger (v512 *, vuc, vuc);
   3956     XVF32GER nothing {mma,mmaint}
   3957 
   3958   v512 __builtin_mma_xvf32ger_internal (vuc, vuc);
   3959     XVF32GER_INTERNAL mma_xvf32ger {mma}
   3960 
   3961   void __builtin_mma_xvf32gernn (v512 *, vuc, vuc);
   3962     XVF32GERNN nothing {mma,quad,mmaint}
   3963 
   3964   v512 __builtin_mma_xvf32gernn_internal (v512, vuc, vuc);
   3965     XVF32GERNN_INTERNAL mma_xvf32gernn {mma,quad}
   3966 
   3967   void __builtin_mma_xvf32gernp (v512 *, vuc, vuc);
   3968     XVF32GERNP nothing {mma,quad,mmaint}
   3969 
   3970   v512 __builtin_mma_xvf32gernp_internal (v512, vuc, vuc);
   3971     XVF32GERNP_INTERNAL mma_xvf32gernp {mma,quad}
   3972 
   3973   void __builtin_mma_xvf32gerpn (v512 *, vuc, vuc);
   3974     XVF32GERPN nothing {mma,quad,mmaint}
   3975 
   3976   v512 __builtin_mma_xvf32gerpn_internal (v512, vuc, vuc);
   3977     XVF32GERPN_INTERNAL mma_xvf32gerpn {mma,quad}
   3978 
   3979   void __builtin_mma_xvf32gerpp (v512 *, vuc, vuc);
   3980     XVF32GERPP nothing {mma,quad,mmaint}
   3981 
   3982   v512 __builtin_mma_xvf32gerpp_internal (v512, vuc, vuc);
   3983     XVF32GERPP_INTERNAL mma_xvf32gerpp {mma,quad}
   3984 
   3985   void __builtin_mma_xvf64ger (v512 *, v256, vuc);
   3986     XVF64GER nothing {mma,pair,mmaint}
   3987 
   3988   v512 __builtin_mma_xvf64ger_internal (v256, vuc);
   3989     XVF64GER_INTERNAL mma_xvf64ger {mma,pair}
   3990 
   3991   void __builtin_mma_xvf64gernn (v512 *, v256, vuc);
   3992     XVF64GERNN nothing {mma,pair,quad,mmaint}
   3993 
   3994   v512 __builtin_mma_xvf64gernn_internal (v512, v256, vuc);
   3995     XVF64GERNN_INTERNAL mma_xvf64gernn {mma,pair,quad}
   3996 
   3997   void __builtin_mma_xvf64gernp (v512 *, v256, vuc);
   3998     XVF64GERNP nothing {mma,pair,quad,mmaint}
   3999 
   4000   v512 __builtin_mma_xvf64gernp_internal (v512, v256, vuc);
   4001     XVF64GERNP_INTERNAL mma_xvf64gernp {mma,pair,quad}
   4002 
   4003   void __builtin_mma_xvf64gerpn (v512 *, v256, vuc);
   4004     XVF64GERPN nothing {mma,pair,quad,mmaint}
   4005 
   4006   v512 __builtin_mma_xvf64gerpn_internal (v512, v256, vuc);
   4007     XVF64GERPN_INTERNAL mma_xvf64gerpn {mma,pair,quad}
   4008 
   4009   void __builtin_mma_xvf64gerpp (v512 *, v256, vuc);
   4010     XVF64GERPP nothing {mma,pair,quad,mmaint}
   4011 
   4012   v512 __builtin_mma_xvf64gerpp_internal (v512, v256, vuc);
   4013     XVF64GERPP_INTERNAL mma_xvf64gerpp {mma,pair,quad}
   4014 
   4015   void __builtin_mma_xvi16ger2 (v512 *, vuc, vuc);
   4016     XVI16GER2 nothing {mma,mmaint}
   4017 
   4018   v512 __builtin_mma_xvi16ger2_internal (vuc, vuc);
   4019     XVI16GER2_INTERNAL mma_xvi16ger2 {mma}
   4020 
   4021   void __builtin_mma_xvi16ger2pp (v512 *, vuc, vuc);
   4022     XVI16GER2PP nothing {mma,quad,mmaint}
   4023 
   4024   v512 __builtin_mma_xvi16ger2pp_internal (v512, vuc, vuc);
   4025     XVI16GER2PP_INTERNAL mma_xvi16ger2pp {mma,quad}
   4026 
   4027   void __builtin_mma_xvi16ger2s (v512 *, vuc, vuc);
   4028     XVI16GER2S nothing {mma,mmaint}
   4029 
   4030   v512 __builtin_mma_xvi16ger2s_internal (vuc, vuc);
   4031     XVI16GER2S_INTERNAL mma_xvi16ger2s {mma}
   4032 
   4033   void __builtin_mma_xvi16ger2spp (v512 *, vuc, vuc);
   4034     XVI16GER2SPP nothing {mma,quad,mmaint}
   4035 
   4036   v512 __builtin_mma_xvi16ger2spp_internal (v512, vuc, vuc);
   4037     XVI16GER2SPP_INTERNAL mma_xvi16ger2spp {mma,quad}
   4038 
   4039   void __builtin_mma_xvi4ger8 (v512 *, vuc, vuc);
   4040     XVI4GER8 nothing {mma,mmaint}
   4041 
   4042   v512 __builtin_mma_xvi4ger8_internal (vuc, vuc);
   4043     XVI4GER8_INTERNAL mma_xvi4ger8 {mma}
   4044 
   4045   void __builtin_mma_xvi4ger8pp (v512 *, vuc, vuc);
   4046     XVI4GER8PP nothing {mma,quad,mmaint}
   4047 
   4048   v512 __builtin_mma_xvi4ger8pp_internal (v512, vuc, vuc);
   4049     XVI4GER8PP_INTERNAL mma_xvi4ger8pp {mma,quad}
   4050 
   4051   void __builtin_mma_xvi8ger4 (v512 *, vuc, vuc);
   4052     XVI8GER4 nothing {mma,mmaint}
   4053 
   4054   v512 __builtin_mma_xvi8ger4_internal (vuc, vuc);
   4055     XVI8GER4_INTERNAL mma_xvi8ger4 {mma}
   4056 
   4057   void __builtin_mma_xvi8ger4pp (v512 *, vuc, vuc);
   4058     XVI8GER4PP nothing {mma,quad,mmaint}
   4059 
   4060   v512 __builtin_mma_xvi8ger4pp_internal (v512, vuc, vuc);
   4061     XVI8GER4PP_INTERNAL mma_xvi8ger4pp {mma,quad}
   4062 
   4063   void __builtin_mma_xvi8ger4spp (v512 *, vuc, vuc);
   4064     XVI8GER4SPP nothing {mma,quad,mmaint}
   4065 
   4066   v512 __builtin_mma_xvi8ger4spp_internal (v512, vuc, vuc);
   4067     XVI8GER4SPP_INTERNAL mma_xvi8ger4spp {mma,quad}
   4068 
   4069   void __builtin_mma_xxmfacc (v512 *);
   4070     XXMFACC nothing {mma,quad,mmaint}
   4071 
   4072   v512 __builtin_mma_xxmfacc_internal (v512);
   4073     XXMFACC_INTERNAL mma_xxmfacc {mma,quad}
   4074 
   4075   void __builtin_mma_xxmtacc (v512 *);
   4076     XXMTACC nothing {mma,quad,mmaint}
   4077 
   4078   v512 __builtin_mma_xxmtacc_internal (v512);
   4079     XXMTACC_INTERNAL mma_xxmtacc {mma,quad}
   4080 
   4081   void __builtin_mma_xxsetaccz (v512 *);
   4082     XXSETACCZ nothing {mma,mmaint}
   4083 
   4084   v512 __builtin_mma_xxsetaccz_internal ();
   4085     XXSETACCZ_INTERNAL mma_xxsetaccz {mma}
   4086 
   4087   void __builtin_vsx_assemble_pair (v256 *, vuc, vuc);
   4088     ASSEMBLE_PAIR_V nothing {mma,mmaint}
   4089 
   4090   v256 __builtin_vsx_assemble_pair_internal (vuc, vuc);
   4091     ASSEMBLE_PAIR_V_INTERNAL vsx_assemble_pair {mma}
   4092 
   4093   void __builtin_vsx_build_pair (v256 *, vuc, vuc);
   4094     BUILD_PAIR nothing {mma,mmaint}
   4095 
   4096   v256 __builtin_vsx_build_pair_internal (vuc, vuc);
   4097     BUILD_PAIR_INTERNAL vsx_assemble_pair {mma}
   4098 
   4099   void __builtin_vsx_disassemble_pair (void *, v256 *);
   4100     DISASSEMBLE_PAIR_V nothing {mma,pair,mmaint}
   4101 
   4102   vuc __builtin_vsx_disassemble_pair_internal (v256, const int<2>);
   4103     DISASSEMBLE_PAIR_V_INTERNAL vsx_disassemble_pair {mma}
   4104 
   4105   v256 __builtin_vsx_lxvp (unsigned long, const v256 *);
   4106     LXVP nothing {mma}
   4107 
   4108   void __builtin_vsx_stxvp (v256, unsigned long, const v256 *);
   4109     STXVP nothing {mma,pair}
   4110