Next: PowerPC AltiVec Built-in Functions Available on ISA 3.0, Previous: PowerPC AltiVec Built-in Functions Available on ISA 2.06, Up: PowerPC AltiVec/VSX Built-in Functions [Contents][Index]

#### 6.60.23.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);

Next: PowerPC AltiVec Built-in Functions Available on ISA 3.0, Previous: PowerPC AltiVec Built-in Functions Available on ISA 2.06, Up: PowerPC AltiVec/VSX Built-in Functions [Contents][Index]