6.60.22.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):

unsigned long long int
__builtin_cfuged (unsigned long long int, unsigned long long int)

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

unsigned long long int
__builtin_cntlzdm (unsigned long long int, unsigned long long int)

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

unsigned long long int
__builtin_cnttzdm (unsigned long long int, unsigned long long int)

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

unsigned long long int
__builtin_pdepd (unsigned long long int, unsigned long long int)

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

unsigned long long int
__builtin_pextd (unsigned long long int, unsigned long long int)

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

vector signed __int128 vsx_xl_sext (signed long long, signed char *);
vector signed __int128 vsx_xl_sext (signed long long, signed short *);
vector signed __int128 vsx_xl_sext (signed long long, signed int *);
vector signed __int128 vsx_xl_sext (signed long long, signed long long *);
vector unsigned __int128 vsx_xl_zext (signed long long, unsigned char *);
vector unsigned __int128 vsx_xl_zext (signed long long, unsigned short *);
vector unsigned __int128 vsx_xl_zext (signed long long, unsigned int *);
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 lxvrdx instructions.

void vec_xst_trunc (vector signed __int128, signed long long, signed char *);
void vec_xst_trunc (vector signed __int128, signed long long, signed short *);
void vec_xst_trunc (vector signed __int128, signed long long, signed int *);
void vec_xst_trunc (vector signed __int128, signed long long, signed long long *);
void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned char *);
void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned short *);
void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned int *);
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 stxvrdx instructions.

Previous: , Up: Basic PowerPC Built-in Functions [Contents][Index]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Basic-PowerPC-Built_002din-Functions-Available-on-ISA-3_002e1.html