6.60.22.3 PowerPC AltiVec Built-in Functions Available on ISA 2.07

If the ISA 2.07 additions to the vector/scalar (power8-vector) instruction set are available, the following additional functions are available for both 32-bit and 64-bit targets. For 64-bit targets, you can use vector long instead of vector long long , vector bool long instead of vector bool long long , and vector unsigned long instead of vector unsigned long long .

     vector signed char vec_neg (vector signed char);
     vector signed short vec_neg (vector signed short);
     vector signed int vec_neg (vector signed int);
     vector signed long long vec_neg (vector signed long long);
     vector float  char vec_neg (vector float);
     vector double vec_neg (vector double);
     
     vector signed int vec_signed2 (vector double, vector double);
     
     vector signed int vec_unsigned2 (vector double, vector double);
     
     vector long long vec_abs (vector long long);
     
     vector long long vec_add (vector long long, vector long long);
     vector unsigned long long vec_add (vector unsigned long long,
                                        vector unsigned long long);
     
     int vec_all_eq (vector long long, vector long long);
     int vec_all_eq (vector unsigned long long, vector unsigned long long);
     int vec_all_ge (vector long long, vector long long);
     int vec_all_ge (vector unsigned long long, vector unsigned long long);
     int vec_all_gt (vector long long, vector long long);
     int vec_all_gt (vector unsigned long long, vector unsigned long long);
     int vec_all_le (vector long long, vector long long);
     int vec_all_le (vector unsigned long long, vector unsigned long long);
     int vec_all_lt (vector long long, vector long long);
     int vec_all_lt (vector unsigned long long, vector unsigned long long);
     int vec_all_ne (vector long long, vector long long);
     int vec_all_ne (vector unsigned long long, vector unsigned long long);
     
     int vec_any_eq (vector long long, vector long long);
     int vec_any_eq (vector unsigned long long, vector unsigned long long);
     int vec_any_ge (vector long long, vector long long);
     int vec_any_ge (vector unsigned long long, vector unsigned long long);
     int vec_any_gt (vector long long, vector long long);
     int vec_any_gt (vector unsigned long long, vector unsigned long long);
     int vec_any_le (vector long long, vector long long);
     int vec_any_le (vector unsigned long long, vector unsigned long long);
     int vec_any_lt (vector long long, vector long long);
     int vec_any_lt (vector unsigned long long, vector unsigned long long);
     int vec_any_ne (vector long long, vector long long);
     int vec_any_ne (vector unsigned long long, vector unsigned long long);
     
     vector bool long long vec_cmpeq (vector bool long long, vector bool long long);
     
     vector long long vec_eqv (vector long long, vector long long);
     vector long long vec_eqv (vector bool long long, vector long long);
     vector long long vec_eqv (vector long long, vector bool long long);
     vector unsigned long long vec_eqv (vector unsigned long long, vector unsigned long long);
     vector unsigned long long vec_eqv (vector bool long long, vector unsigned long long);
     vector unsigned long long vec_eqv (vector unsigned long long,
                                        vector bool long long);
     vector int vec_eqv (vector int, vector int);
     vector int vec_eqv (vector bool int, vector int);
     vector int vec_eqv (vector int, vector bool int);
     vector unsigned int vec_eqv (vector unsigned int, vector unsigned int);
     vector unsigned int vec_eqv (vector bool unsigned int, vector unsigned int);
     vector unsigned int vec_eqv (vector unsigned int, vector bool unsigned int);
     vector short vec_eqv (vector short, vector short);
     vector short vec_eqv (vector bool short, vector short);
     vector short vec_eqv (vector short, vector bool short);
     vector unsigned short vec_eqv (vector unsigned short, vector unsigned short);
     vector unsigned short vec_eqv (vector bool unsigned short, vector unsigned short);
     vector unsigned short vec_eqv (vector unsigned short, vector bool unsigned short);
     vector signed char vec_eqv (vector signed char, vector signed char);
     vector signed char vec_eqv (vector bool signed char, vector signed char);
     vector signed char vec_eqv (vector signed char, vector bool signed char);
     vector unsigned char vec_eqv (vector unsigned char, vector unsigned char);
     vector unsigned char vec_eqv (vector bool unsigned char, vector unsigned char);
     vector unsigned char vec_eqv (vector unsigned char, vector bool unsigned char);
     
     vector long long vec_max (vector long long, vector long long);
     vector unsigned long long vec_max (vector unsigned long long,
                                        vector unsigned long long);
     
     vector signed int vec_mergee (vector signed int, vector signed int);
     vector unsigned int vec_mergee (vector unsigned int, vector unsigned int);
     vector bool int vec_mergee (vector bool int, vector bool int);
     
     vector signed int vec_mergeo (vector signed int, vector signed int);
     vector unsigned int vec_mergeo (vector unsigned int, vector unsigned int);
     vector bool int vec_mergeo (vector bool int, vector bool int);
     
     vector long long vec_min (vector long long, vector long long);
     vector unsigned long long vec_min (vector unsigned long long,
                                        vector unsigned long long);
     
     vector signed long long vec_nabs (vector signed long long);
     
     vector long long vec_nand (vector long long, vector long long);
     vector long long vec_nand (vector bool long long, vector long long);
     vector long long vec_nand (vector long long, vector bool long long);
     vector unsigned long long vec_nand (vector unsigned long long,
                                         vector unsigned long long);
     vector unsigned long long vec_nand (vector bool long long, vector unsigned long long);
     vector unsigned long long vec_nand (vector unsigned long long, vector bool long long);
     vector int vec_nand (vector int, vector int);
     vector int vec_nand (vector bool int, vector int);
     vector int vec_nand (vector int, vector bool int);
     vector unsigned int vec_nand (vector unsigned int, vector unsigned int);
     vector unsigned int vec_nand (vector bool unsigned int, vector unsigned int);
     vector unsigned int vec_nand (vector unsigned int, vector bool unsigned int);
     vector short vec_nand (vector short, vector short);
     vector short vec_nand (vector bool short, vector short);
     vector short vec_nand (vector short, vector bool short);
     vector unsigned short vec_nand (vector unsigned short, vector unsigned short);
     vector unsigned short vec_nand (vector bool unsigned short, vector unsigned short);
     vector unsigned short vec_nand (vector unsigned short, vector bool unsigned short);
     vector signed char vec_nand (vector signed char, vector signed char);
     vector signed char vec_nand (vector bool signed char, vector signed char);
     vector signed char vec_nand (vector signed char, vector bool signed char);
     vector unsigned char vec_nand (vector unsigned char, vector unsigned char);
     vector unsigned char vec_nand (vector bool unsigned char, vector unsigned char);
     vector unsigned char vec_nand (vector unsigned char, vector bool unsigned char);
     
     vector long long vec_orc (vector long long, vector long long);
     vector long long vec_orc (vector bool long long, vector long long);
     vector long long vec_orc (vector long long, vector bool long long);
     vector unsigned long long vec_orc (vector unsigned long long,
                                        vector unsigned long long);
     vector unsigned long long vec_orc (vector bool long long, vector unsigned long long);
     vector unsigned long long vec_orc (vector unsigned long long, vector bool long long);
     vector int vec_orc (vector int, vector int);
     vector int vec_orc (vector bool int, vector int);
     vector int vec_orc (vector int, vector bool int);
     vector unsigned int vec_orc (vector unsigned int, vector unsigned int);
     vector unsigned int vec_orc (vector bool unsigned int, vector unsigned int);
     vector unsigned int vec_orc (vector unsigned int, vector bool unsigned int);
     vector short vec_orc (vector short, vector short);
     vector short vec_orc (vector bool short, vector short);
     vector short vec_orc (vector short, vector bool short);
     vector unsigned short vec_orc (vector unsigned short, vector unsigned short);
     vector unsigned short vec_orc (vector bool unsigned short, vector unsigned short);
     vector unsigned short vec_orc (vector unsigned short, vector bool unsigned short);
     vector signed char vec_orc (vector signed char, vector signed char);
     vector signed char vec_orc (vector bool signed char, vector signed char);
     vector signed char vec_orc (vector signed char, vector bool signed char);
     vector unsigned char vec_orc (vector unsigned char, vector unsigned char);
     vector unsigned char vec_orc (vector bool unsigned char, vector unsigned char);
     vector unsigned char vec_orc (vector unsigned char, vector bool unsigned char);
     
     vector int vec_pack (vector long long, vector long long);
     vector unsigned int vec_pack (vector unsigned long long, vector unsigned long long);
     vector bool int vec_pack (vector bool long long, vector bool long long);
     vector float vec_pack (vector double, vector double);
     
     vector int vec_packs (vector long long, vector long long);
     vector unsigned int vec_packs (vector unsigned long long, vector unsigned long long);
     
     vector unsigned char vec_packsu (vector signed short, vector signed short)
     vector unsigned char vec_packsu (vector unsigned short, vector unsigned short)
     vector unsigned short int vec_packsu (vector signed int, vector signed int);
     vector unsigned short int vec_packsu (vector unsigned int, vector unsigned int);
     vector unsigned int vec_packsu (vector long long, vector long long);
     vector unsigned int vec_packsu (vector unsigned long long, vector unsigned long long);
     vector unsigned int vec_packsu (vector signed long long, vector signed long long);
     
     vector unsigned char vec_popcnt (vector signed char);
     vector unsigned char vec_popcnt (vector unsigned char);
     vector unsigned short vec_popcnt (vector signed short);
     vector unsigned short vec_popcnt (vector unsigned short);
     vector unsigned int vec_popcnt (vector signed int);
     vector unsigned int vec_popcnt (vector unsigned int);
     vector unsigned long long vec_popcnt (vector signed long long);
     vector unsigned long long vec_popcnt (vector unsigned long long);
     
     vector long long vec_rl (vector long long, vector unsigned long long);
     vector long long vec_rl (vector unsigned long long, vector unsigned long long);
     
     vector long long vec_sl (vector long long, vector unsigned long long);
     vector long long vec_sl (vector unsigned long long, vector unsigned long long);
     
     vector long long vec_sr (vector long long, vector unsigned long long);
     vector unsigned long long char vec_sr (vector unsigned long long,
                                            vector unsigned long long);
     
     vector long long vec_sra (vector long long, vector unsigned long long);
     vector unsigned long long vec_sra (vector unsigned long long,
                                        vector unsigned long long);
     
     vector long long vec_sub (vector long long, vector long long);
     vector unsigned long long vec_sub (vector unsigned long long,
                                        vector unsigned long long);
     
     vector long long vec_unpackh (vector int);
     vector unsigned long long vec_unpackh (vector unsigned int);
     
     vector long long vec_unpackl (vector int);
     vector unsigned long long vec_unpackl (vector unsigned int);
     
     vector long long vec_vaddudm (vector long long, vector long long);
     vector long long vec_vaddudm (vector bool long long, vector long long);
     vector long long vec_vaddudm (vector long long, vector bool long long);
     vector unsigned long long vec_vaddudm (vector unsigned long long,
                                            vector unsigned long long);
     vector unsigned long long vec_vaddudm (vector bool unsigned long long,
                                            vector unsigned long long);
     vector unsigned long long vec_vaddudm (vector unsigned long long,
                                            vector bool unsigned long long);
     
     vector long long vec_vbpermq (vector signed char, vector signed char);
     vector long long vec_vbpermq (vector unsigned char, vector unsigned char);
     
     vector unsigned char vec_bperm (vector unsigned char, vector unsigned char);
     vector unsigned char vec_bperm (vector unsigned long long, vector unsigned char);
     vector unsigned long long vec_bperm (vector unsigned __int128, vector unsigned char);
     
     vector long long vec_cntlz (vector long long);
     vector unsigned long long vec_cntlz (vector unsigned long long);
     vector int vec_cntlz (vector int);
     vector unsigned int vec_cntlz (vector int);
     vector short vec_cntlz (vector short);
     vector unsigned short vec_cntlz (vector unsigned short);
     vector signed char vec_cntlz (vector signed char);
     vector unsigned char vec_cntlz (vector unsigned char);
     
     vector long long vec_vclz (vector long long);
     vector unsigned long long vec_vclz (vector unsigned long long);
     vector int vec_vclz (vector int);
     vector unsigned int vec_vclz (vector int);
     vector short vec_vclz (vector short);
     vector unsigned short vec_vclz (vector unsigned short);
     vector signed char vec_vclz (vector signed char);
     vector unsigned char vec_vclz (vector unsigned char);
     
     vector signed char vec_vclzb (vector signed char);
     vector unsigned char vec_vclzb (vector unsigned char);
     
     vector long long vec_vclzd (vector long long);
     vector unsigned long long vec_vclzd (vector unsigned long long);
     
     vector short vec_vclzh (vector short);
     vector unsigned short vec_vclzh (vector unsigned short);
     
     vector int vec_vclzw (vector int);
     vector unsigned int vec_vclzw (vector int);
     
     vector signed char vec_vgbbd (vector signed char);
     vector unsigned char vec_vgbbd (vector unsigned char);
     
     vector long long vec_vmaxsd (vector long long, vector long long);
     
     vector unsigned long long vec_vmaxud (vector unsigned long long,
                                           unsigned vector long long);
     
     vector long long vec_vminsd (vector long long, vector long long);
     
     vector unsigned long long vec_vminud (vector long long, vector long long);
     
     vector int vec_vpksdss (vector long long, vector long long);
     vector unsigned int vec_vpksdss (vector long long, vector long long);
     
     vector unsigned int vec_vpkudus (vector unsigned long long,
                                      vector unsigned long long);
     
     vector int vec_vpkudum (vector long long, vector long long);
     vector unsigned int vec_vpkudum (vector unsigned long long,
                                      vector unsigned long long);
     vector bool int vec_vpkudum (vector bool long long, vector bool long long);
     
     vector long long vec_vpopcnt (vector long long);
     vector unsigned long long vec_vpopcnt (vector unsigned long long);
     vector int vec_vpopcnt (vector int);
     vector unsigned int vec_vpopcnt (vector int);
     vector short vec_vpopcnt (vector short);
     vector unsigned short vec_vpopcnt (vector unsigned short);
     vector signed char vec_vpopcnt (vector signed char);
     vector unsigned char vec_vpopcnt (vector unsigned char);
     
     vector signed char vec_vpopcntb (vector signed char);
     vector unsigned char vec_vpopcntb (vector unsigned char);
     
     vector long long vec_vpopcntd (vector long long);
     vector unsigned long long vec_vpopcntd (vector unsigned long long);
     
     vector short vec_vpopcnth (vector short);
     vector unsigned short vec_vpopcnth (vector unsigned short);
     
     vector int vec_vpopcntw (vector int);
     vector unsigned int vec_vpopcntw (vector int);
     
     vector long long vec_vrld (vector long long, vector unsigned long long);
     vector unsigned long long vec_vrld (vector unsigned long long,
                                         vector unsigned long long);
     
     vector long long vec_vsld (vector long long, vector unsigned long long);
     vector long long vec_vsld (vector unsigned long long,
                                vector unsigned long long);
     
     vector long long vec_vsrad (vector long long, vector unsigned long long);
     vector unsigned long long vec_vsrad (vector unsigned long long,
                                          vector unsigned long long);
     
     vector long long vec_vsrd (vector long long, vector unsigned long long);
     vector unsigned long long char vec_vsrd (vector unsigned long long,
                                              vector unsigned long long);
     
     vector long long vec_vsubudm (vector long long, vector long long);
     vector long long vec_vsubudm (vector bool long long, vector long long);
     vector long long vec_vsubudm (vector long long, vector bool long long);
     vector unsigned long long vec_vsubudm (vector unsigned long long,
                                            vector unsigned long long);
     vector unsigned long long vec_vsubudm (vector bool long long,
                                            vector unsigned long long);
     vector unsigned long long vec_vsubudm (vector unsigned long long,
                                            vector bool long long);
     
     vector long long vec_vupkhsw (vector int);
     vector unsigned long long vec_vupkhsw (vector unsigned int);
     
     vector long long vec_vupklsw (vector int);
     vector unsigned long long vec_vupklsw (vector int);

If the ISA 2.07 additions to the vector/scalar (power8-vector) instruction set are available, the following additional functions are available for 64-bit targets. New vector types (vector __int128 and vector __uint128 ) are available to hold the __int128 and __uint128 types to use these builtins.

The normal vector extract, and set operations work on vector __int128 and vector __uint128 types, but the index value must be 0.

     vector __int128 vec_vaddcuq (vector __int128, vector __int128);
     vector __uint128 vec_vaddcuq (vector __uint128, vector __uint128);
     
     vector __int128 vec_vadduqm (vector __int128, vector __int128);
     vector __uint128 vec_vadduqm (vector __uint128, vector __uint128);
     
     vector __int128 vec_vaddecuq (vector __int128, vector __int128,
                                     vector __int128);
     vector __uint128 vec_vaddecuq (vector __uint128, vector __uint128,
                                      vector __uint128);
     
     vector __int128 vec_vaddeuqm (vector __int128, vector __int128,
                                     vector __int128);
     vector __uint128 vec_vaddeuqm (vector __uint128, vector __uint128,
                                      vector __uint128);
     
     vector __int128 vec_vsubecuq (vector __int128, vector __int128,
                                     vector __int128);
     vector __uint128 vec_vsubecuq (vector __uint128, vector __uint128,
                                      vector __uint128);
     
     vector __int128 vec_vsubeuqm (vector __int128, vector __int128,
                                     vector __int128);
     vector __uint128 vec_vsubeuqm (vector __uint128, vector __uint128,
                                      vector __uint128);
     
     vector __int128 vec_vsubcuq (vector __int128, vector __int128);
     vector __uint128 vec_vsubcuq (vector __uint128, vector __uint128);
     
     __int128 vec_vsubuqm (__int128, __int128);
     __uint128 vec_vsubuqm (__uint128, __uint128);
     
     vector __int128 __builtin_bcdadd (vector __int128, vector __int128, const int);
     int __builtin_bcdadd_lt (vector __int128, vector __int128, const int);
     int __builtin_bcdadd_eq (vector __int128, vector __int128, const int);
     int __builtin_bcdadd_gt (vector __int128, vector __int128, const int);
     int __builtin_bcdadd_ov (vector __int128, vector __int128, const int);
     vector __int128 __builtin_bcdsub (vector __int128, vector __int128, const int);
     int __builtin_bcdsub_lt (vector __int128, vector __int128, const int);
     int __builtin_bcdsub_eq (vector __int128, vector __int128, const int);
     int __builtin_bcdsub_gt (vector __int128, vector __int128, const int);
     int __builtin_bcdsub_ov (vector __int128, vector __int128, const int);