Basic PowerPC Built-in Functions Available on ISA 3.1 (Using the GNU Compiler Collection (GCC))

#### 7.13.23.6 Basic PowerPC Built-in Functions Available on ISA 3.1 ¶

The basic built-in functions described in this section are available on the PowerPC family of processors starting with ISA 3.1. Unless specific options are explicitly disabled on the command line, specifying option `-mcpu=power10` has the effect of enabling all the same options as for `-mcpu=power9`.

The following built-in functions are available on Linux 64-bit systems that use a future architecture instruction set (`-mcpu=power10`):

Built-in Function: `unsigned long long` __builtin_cfuged `(unsigned long long, unsigned long long)` ¶

  Perform a 64-bit centrifuge operation, as if implemented by the `cfuged` instruction.

Built-in Function: `unsigned long long` __builtin_cntlzdm `(unsigned long long, unsigned long long)` ¶

  Perform a 64-bit count leading zeros operation under mask, as if implemented by the `cntlzdm` instruction.

Built-in Function: `unsigned long long` __builtin_cnttzdm `(unsigned long long, unsigned long long)` ¶

  Perform a 64-bit count trailing zeros operation under mask, as if implemented by the `cnttzdm` instruction.

Built-in Function: `unsigned long long` __builtin_pdepd `(unsigned long long, unsigned long long)` ¶

  Perform a 64-bit parallel bits deposit operation, as if implemented by the `pdepd` instruction.

Built-in Function: `unsigned long long` __builtin_pextd `(unsigned long long, unsigned long long)` ¶

  Perform a 64-bit parallel bits extract operation, as if implemented by the `pextd` instruction.

Built-in Function: `vector signed __int128` vsx_xl_sext `(signed long long, signed char *)` ¶
Built-in Function: `vector signed __int128` vsx_xl_sext `(signed long long, signed short *)` ¶
Built-in Function: `vector signed __int128` vsx_xl_sext `(signed long long, signed int *)` ¶
Built-in Function: `vector signed __int128` vsx_xl_sext `(signed long long, signed long long *)` ¶
Built-in Function: `vector unsigned __int128` vsx_xl_zext `(signed long long, unsigned char *)` ¶
Built-in Function: `vector unsigned __int128` vsx_xl_zext `(signed long long, unsigned short *)` ¶
Built-in Function: `vector unsigned __int128` vsx_xl_zext `(signed long long, unsigned int *)` ¶
Built-in Function: `vector unsigned __int128` vsx_xl_zext `(signed long long, unsigned long long *)` ¶

  Load (and sign extend) to an __int128 vector, as if implemented by the ISA 3.1 `lxvrbx`, `lxvrhx`, `lxvrwx`, and `lxvrdx` instructions.

Built-in Function: `void` vec_xst_trunc `(vector signed __int128, signed long long, signed char *)` ¶
Built-in Function: `void` vec_xst_trunc `(vector signed __int128, signed long long, signed short *)` ¶
Built-in Function: `void` vec_xst_trunc `(vector signed __int128, signed long long, signed int *)` ¶
Built-in Function: `void` vec_xst_trunc `(vector signed __int128, signed long long, signed long long *)` ¶
Built-in Function: `void` vec_xst_trunc `(vector unsigned __int128, signed long long, unsigned char *)` ¶
Built-in Function: `void` vec_xst_trunc `(vector unsigned __int128, signed long long, unsigned short *)` ¶
Built-in Function: `void` vec_xst_trunc `(vector unsigned __int128, signed long long, unsigned int *)` ¶
Built-in Function: `void` vec_xst_trunc `(vector unsigned __int128, signed long long, unsigned long long *)` ¶

  Truncate and store the rightmost element of a vector, as if implemented by the ISA 3.1 `stxvrbx`, `stxvrhx`, `stxvrwx`, and `stxvrdx` instructions.