The AltiVec built-in functions described in this section are
available on the PowerPC family of processors starting with ISA 2.06
or later. These are normally enabled by adding `-mvsx` to the
command line.

When `-mvsx` is used, the following additional vector types are
implemented.

vector unsigned __int128 vector signed __int128 vector unsigned long long int vector signed long long int vector double

The long long types are only implemented for 64-bit code generation.

Only functions excluded from the PVIPR are listed here.

void vec_dst (const unsigned long *, int, const int); void vec_dst (const long *, int, const int); void vec_dststt (const unsigned long *, int, const int); void vec_dststt (const long *, int, const int); void vec_dstt (const unsigned long *, int, const int); void vec_dstt (const long *, int, const int); vector unsigned char vec_lvsl (int, const unsigned long *); vector unsigned char vec_lvsl (int, const long *); vector unsigned char vec_lvsr (int, const unsigned long *); vector unsigned char vec_lvsr (int, const long *); vector unsigned char vec_lvsl (int, const double *); vector unsigned char vec_lvsr (int, const double *); vector double vec_vsx_ld (int, const vector double *); vector double vec_vsx_ld (int, const double *); vector float vec_vsx_ld (int, const vector float *); vector float vec_vsx_ld (int, const float *); vector bool int vec_vsx_ld (int, const vector bool int *); vector signed int vec_vsx_ld (int, const vector signed int *); vector signed int vec_vsx_ld (int, const int *); vector signed int vec_vsx_ld (int, const long *); vector unsigned int vec_vsx_ld (int, const vector unsigned int *); vector unsigned int vec_vsx_ld (int, const unsigned int *); vector unsigned int vec_vsx_ld (int, const unsigned long *); vector bool short vec_vsx_ld (int, const vector bool short *); vector pixel vec_vsx_ld (int, const vector pixel *); vector signed short vec_vsx_ld (int, const vector signed short *); vector signed short vec_vsx_ld (int, const short *); vector unsigned short vec_vsx_ld (int, const vector unsigned short *); vector unsigned short vec_vsx_ld (int, const unsigned short *); vector bool char vec_vsx_ld (int, const vector bool char *); vector signed char vec_vsx_ld (int, const vector signed char *); vector signed char vec_vsx_ld (int, const signed char *); vector unsigned char vec_vsx_ld (int, const vector unsigned char *); vector unsigned char vec_vsx_ld (int, const unsigned char *); void vec_vsx_st (vector double, int, vector double *); void vec_vsx_st (vector double, int, double *); void vec_vsx_st (vector float, int, vector float *); void vec_vsx_st (vector float, int, float *); void vec_vsx_st (vector signed int, int, vector signed int *); void vec_vsx_st (vector signed int, int, int *); void vec_vsx_st (vector unsigned int, int, vector unsigned int *); void vec_vsx_st (vector unsigned int, int, unsigned int *); void vec_vsx_st (vector bool int, int, vector bool int *); void vec_vsx_st (vector bool int, int, unsigned int *); void vec_vsx_st (vector bool int, int, int *); void vec_vsx_st (vector signed short, int, vector signed short *); void vec_vsx_st (vector signed short, int, short *); void vec_vsx_st (vector unsigned short, int, vector unsigned short *); void vec_vsx_st (vector unsigned short, int, unsigned short *); void vec_vsx_st (vector bool short, int, vector bool short *); void vec_vsx_st (vector bool short, int, unsigned short *); void vec_vsx_st (vector pixel, int, vector pixel *); void vec_vsx_st (vector pixel, int, unsigned short *); void vec_vsx_st (vector pixel, int, short *); void vec_vsx_st (vector bool short, int, short *); void vec_vsx_st (vector signed char, int, vector signed char *); void vec_vsx_st (vector signed char, int, signed char *); void vec_vsx_st (vector unsigned char, int, vector unsigned char *); void vec_vsx_st (vector unsigned char, int, unsigned char *); void vec_vsx_st (vector bool char, int, vector bool char *); void vec_vsx_st (vector bool char, int, unsigned char *); void vec_vsx_st (vector bool char, int, signed char *); vector double vec_xxpermdi (vector double, vector double, const int); vector float vec_xxpermdi (vector float, vector float, const int); vector long long vec_xxpermdi (vector long long, vector long long, const int); vector unsigned long long vec_xxpermdi (vector unsigned long long, vector unsigned long long, const int); vector int vec_xxpermdi (vector int, vector int, const int); vector unsigned int vec_xxpermdi (vector unsigned int, vector unsigned int, const int); vector short vec_xxpermdi (vector short, vector short, const int); vector unsigned short vec_xxpermdi (vector unsigned short, vector unsigned short, const int); vector signed char vec_xxpermdi (vector signed char, vector signed char, const int); vector unsigned char vec_xxpermdi (vector unsigned char, vector unsigned char, const int); vector double vec_xxsldi (vector double, vector double, int); vector float vec_xxsldi (vector float, vector float, int); vector long long vec_xxsldi (vector long long, vector long long, int); vector unsigned long long vec_xxsldi (vector unsigned long long, vector unsigned long long, int); vector int vec_xxsldi (vector int, vector int, int); vector unsigned int vec_xxsldi (vector unsigned int, vector unsigned int, int); vector short vec_xxsldi (vector short, vector short, int); vector unsigned short vec_xxsldi (vector unsigned short, vector unsigned short, int); vector signed char vec_xxsldi (vector signed char, vector signed char, int); vector unsigned char vec_xxsldi (vector unsigned char, vector unsigned char, int);

Note that the ‘`vec_ld`’ and ‘`vec_st`’ built-in functions always
generate the AltiVec ‘`LVX`’ and ‘`STVX`’ instructions even
if the VSX instruction set is available. The ‘`vec_vsx_ld`’ and
‘`vec_vsx_st`’ built-in functions always generate the VSX ‘`LXVD2X`’,
‘`LXVW4X`’, ‘`STXVD2X`’, and ‘`STXVW4X`’ instructions.