POWER Vector Library Manual
1.0.4
|
Go to the documentation of this file.
23 #ifndef VEC_INT64_PPC_H_
24 #define VEC_INT64_PPC_H_
1214 #define vec_popcntd __builtin_vec_vpopcntd
1219 vec_vlsidx (
const signed long long a,
const unsigned long long *b);
1266 #if defined (vec_vaddudm)
1267 r = (
vui32_t) vec_vaddudm (a, b);
1268 #elif defined (__clang__)
1285 c = vec_and (c, cm);
1286 c = vec_sld (c, z, 4);
1287 r = vec_vadduwm (r, c);
1317 #if defined (vec_vclzd)
1318 r = vec_vclzd (vra);
1319 #elif defined (__clang__)
1320 r = vec_cntlz (vra);
1331 vui32_t dlwm = { 0, -1, 0, -1 };
1335 m = (
vui32_t) vec_cmpgt (x, z);
1336 n = vec_sld (z, m, 12);
1337 y = vec_and (n, dlwm);
1375 #if defined (vec_cnttz) || defined (__clang__)
1376 r = vec_cnttz (vra);
1389 const vui64_t ones = { -1, -1 };
1392 tzmask = vec_andc (
vec_addudm (vra, ones), vra);
1456 result = vec_cmpeq(a, b);
1459 "vcmpequd %0,%1,%2;\n"
1475 { 0x04,0x05,0x6,0x7, 0x00,0x01,0x2,0x03, 0x0C,0x0D,0x0E,0x0F, 0x08,0x09,0x0A,0x0B};
1480 rr = vec_perm (r, r, permute);
1515 return vec_nor (r, r);
1545 return vec_nor (r, r);
1576 result = vec_cmpgt(a, b);
1579 "vcmpgtsd %0,%1,%2;\n"
1588 0x8000000000000000UL);
1592 _A = vec_xor ((
vui64_t)a, signmask);
1593 _B = vec_xor ((
vui64_t)b, signmask);
1627 result = vec_cmpgt(a, b);
1630 "vcmpgtud %0,%1,%2;\n"
1642 __vector
unsigned int r, x, y;
1643 __vector
unsigned int c0, c1, c01;
1644 __vector
unsigned int eq, gt, a32, b32;
1647 c0 = vec_splat_u32 (0);
1648 c1 = vec_splat_u32 (-1);
1649 c01 = vec_mergeh (c0, c1);
1651 a32 = (__vector
unsigned int)a;
1652 b32 = (__vector
unsigned int)b;
1654 gt = (__vector
unsigned int)vec_cmpgt (a32, b32);
1655 eq = (__vector
unsigned int)vec_cmpeq (a32, b32);
1657 x = vec_sld (gt, c0, 4);
1658 y = vec_and (eq, x);
1661 y = vec_sld (c0, x, 12);
1662 r = vec_sel (x, y, c01);
1694 return vec_nor (result, result);
1723 return vec_nor (result, result);
1826 return vec_nor (r, r);
1850 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
1851 result = vec_all_eq(a, b);
1880 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
1881 result = vec_all_ge(a, b);
1883 vui32_t wt = { -1, -1, -1, -1};
1885 result = vec_all_eq((
vui32_t)gt_bool, wt);
1912 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
1913 result = vec_all_gt(a, b);
1915 vui32_t wt = { -1, -1, -1, -1};
1917 result = vec_all_eq((
vui32_t)gt_bool, wt);
1991 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
1992 result = vec_all_ne(a, b);
1994 vui32_t wt = { -1, -1, -1, -1};
1996 result = vec_all_eq((
vui32_t)gt_bool, wt);
2022 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2023 result = vec_any_eq(a, b);
2025 vui32_t wt = { -1, -1, -1, -1};
2027 result = vec_any_eq((
vui32_t)gt_bool, wt);
2054 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2055 result = vec_any_ge(a, b);
2057 vui32_t wt = { -1, -1, -1, -1};
2059 result = vec_any_eq((
vui32_t)gt_bool, wt);
2086 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2087 result = vec_any_gt(a, b);
2089 vui32_t wt = { -1, -1, -1, -1};
2091 result = vec_any_eq((
vui32_t)gt_bool, wt);
2165 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2166 result = vec_any_ne(a, b);
2168 vui32_t wt = { -1, -1, -1, -1};
2170 result = vec_any_eq((
vui32_t)gt_bool, wt);
2196 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2197 result = vec_all_eq(a, b);
2226 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2227 result = vec_all_ge(a, b);
2229 vui32_t wt = { -1, -1, -1, -1};
2231 result = vec_all_eq((
vui32_t)gt_bool, wt);
2258 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2259 result = vec_all_gt(a, b);
2261 vui32_t wt = { -1, -1, -1, -1};
2263 result = vec_all_eq((
vui32_t)gt_bool, wt);
2337 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2338 result = vec_all_ne(a, b);
2340 vui32_t wt = { -1, -1, -1, -1};
2342 result = vec_all_eq((
vui32_t)gt_bool, wt);
2368 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2369 result = vec_any_eq(a, b);
2371 vui32_t wt = { -1, -1, -1, -1};
2373 result = vec_any_eq((
vui32_t)gt_bool, wt);
2400 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2401 result = vec_any_ge(a, b);
2403 vui32_t wt = { -1, -1, -1, -1};
2405 result = vec_any_eq((
vui32_t)gt_bool, wt);
2432 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2433 result = vec_any_gt(a, b);
2435 vui32_t wt = { -1, -1, -1, -1};
2437 result = vec_any_eq((
vui32_t)gt_bool, wt);
2511 #if defined (_ARCH_PWR8) && (__GNUC__ >= 6) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
2512 result = vec_any_ne(a, b);
2514 vui32_t wt = { -1, -1, -1, -1};
2516 result = vec_any_eq((
vui32_t)gt_bool, wt);
2542 #if defined (vec_vmaxsd)
2543 r = vec_vmaxsd (vra, vrb);
2544 #elif defined (__clang__)
2545 r = vec_max (vra, vrb);
2558 r = vec_sel (vrb, vra, maxmask);
2584 #if defined (vec_vmaxud)
2585 r = vec_vmaxud (vra, vrb);
2586 #elif defined (__clang__)
2587 r = vec_max (vra, vrb);
2600 r = vec_sel (vrb, vra, maxmask);
2626 #if defined (vec_vminsd)
2627 r = vec_vminsd (vra, vrb);
2628 #elif defined (__clang__)
2629 r = vec_min (vra, vrb);
2642 r = vec_sel (vrb, vra, minmask);
2668 #if defined (vec_vminud)
2669 r = vec_vminud (vra, vrb);
2670 #elif defined (__clang__)
2671 r = vec_min (vra, vrb);
2684 r = vec_sel (vrb, vra, minmask);
2766 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2799 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2832 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2866 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
2989 #if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || (defined (__clang__) && (__clang_major__ < 7))
2991 result = vec_xxpermdi (vra, vrb, 0);
2994 result = vec_xxpermdi (vra, vrb, 1);
2997 result = vec_xxpermdi (vra, vrb, 2);
3000 result = vec_xxpermdi (vra, vrb, 3);
3004 result = vec_xxpermdi (vrb, vra, 3);
3007 result = vec_xxpermdi (vrb, vra, 1);
3010 result = vec_xxpermdi (vrb, vra, 2);
3013 result = vec_xxpermdi (vrb, vra, 0);
3032 result = (
vui64_t) vec_sld (temp, temp, 8);
3072 #if defined (vec_vpopcntd)
3073 r = vec_vpopcntd (vra);
3074 #elif defined (__clang__)
3075 r = vec_popcnt (vra);
3094 #define vec_popcntd __builtin_vec_vpopcntd
3117 #if defined (vec_revb) || defined (__clang__)
3118 result = vec_revb (vra);
3127 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
3168 #if defined (_ARCH_PWR10) && (__GNUC__ >= 10)
3170 "vexpanddm %0,%1;\n"
3174 #elif defined (_ARCH_PWR8)
3176 const vi64_t zero = {0, 0};
3178 #else // ARCH_PWR7 or older, without compare signed doubleword
3179 const vui8_t rshift = vec_splat_u8( 7 );
3180 const vui8_t sperm = { 0,0,0,0, 0,0,0,0, 8,8,8,8, 8,8,8,8 };
3184 result = (
vb64_t) vec_sra (splat, rshift);
3218 if (__builtin_constant_p (shb) && (shb < 16))
3219 lshift = (
vui64_t) vec_splat_s32(shb);
3221 lshift = vec_splats ((
unsigned long long) shb);
3266 if (__builtin_constant_p (shb) && (shb < 16))
3267 lshift = (
vui64_t) vec_splat_s32(shb);
3269 lshift = vec_splats ((
unsigned long long) shb);
3283 if (__builtin_constant_p (shb) && (shb < 16))
3284 lshift = vec_splat_u8(shb);
3286 lshift = vec_splats ((
unsigned char) shb);
3296 sl_m = vec_slo (sl_m, lshift);
3297 sl_a = vec_slo ((
vui8_t) vra, lshift);
3302 sl_m = vec_sll (sl_m, lshift);
3303 sl_a = vec_sll (sl_a, lshift);
3306 sl_m = vec_sld (sl_m, sl_m, 8);
3307 result = (
vui64_t) vec_and (sl_a, sl_m);
3433 result = vec_splats ((
signed long long) sim);
3435 if (__builtin_constant_p (sim) && ((sim >= -16) && (sim < 16)))
3437 vi32_t vwi = vec_splat_s32 (sim);
3439 if (__builtin_constant_p (sim) && ((sim == 0) || (sim == -1)))
3451 #if defined (__GNUC__) && (__GNUC__ == 8)
3467 result = vec_splats ((
signed long long) sim);
3499 result = vec_splats ((
unsigned long long) sim);
3501 if (__builtin_constant_p (sim) && ((sim >= 0) && (sim < 16)))
3503 vui32_t vwi = vec_splat_u32 (sim);
3505 if (__builtin_constant_p (sim) && (sim == 0))
3517 #if defined (__GNUC__) && (__GNUC__ == 8)
3533 result = vec_splats ((
unsigned long long) sim);
3617 #if defined (__GNUC__) && (__GNUC__ < 8)
3618 if (__builtin_constant_p (shb) && (shb < 16))
3619 rshift = (
vui64_t) vec_splat_s32(shb);
3621 rshift = vec_splats ((
unsigned long long) shb);
3638 if (__builtin_constant_p (shb) && (shb < 16))
3639 rshift = vec_splat_u8(shb);
3641 rshift = vec_splats ((
unsigned char) shb);
3651 sr_m = vec_sro (sr_m, rshift);
3652 sr_a = vec_sro ((
vui8_t) vra, rshift);
3657 sr_m = vec_srl (sr_m, rshift);
3658 sr_a = vec_srl (sr_a, rshift);
3661 sr_m = vec_sld (sr_m, sr_m, 8);
3662 result = (
vui64_t) vec_and (sr_a, sr_m);
3703 #if defined (__GNUC__) && (__GNUC__ < 8)
3704 if (__builtin_constant_p (shb) && (shb < 16))
3705 rshift = (
vui64_t) vec_splat_s32(shb);
3707 rshift = vec_splats ((
unsigned long long) shb);
3719 rshift = (
vui64_t) vec_splats(63);
3751 #if defined (vec_vsubudm)
3752 r = (
vui32_t) vec_vsubudm (a, b);
3753 #elif defined (__clang__)
3770 c = vec_andc (cm, c);
3771 c = vec_sld (c, z, 4);
3772 r = vec_vsubuwm (r, c);
3867 const unsigned char scale)
3927 const long long offset1)
3935 #if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
3979 vec_vlsidx (
const signed long long ra,
const unsigned long long *rb)
3983 #if (defined(__clang__) && __clang_major__ < 8)
3985 unsigned long long *p = (
unsigned long long *)((
char *)rb + ra);
3989 if (__builtin_constant_p (ra) && (ra <= 32760) && (ra >= -32768)
3992 #if defined (_ARCH_PWR9)
3996 :
"m" (*(
unsigned long long *)((
char *)rb + ra))
4007 unsigned long long rt;
4008 #if defined (_ARCH_PWR8)
4015 :
"=&r" (rt),
"=wa" (xt)
4016 :
"I" (ra),
"b" (rb),
"Z" (*(
unsigned long long *)((
char *)rb+ra))
4029 :
"Z" (*(
unsigned long long *)((
char *)rb+rt))
4038 :
"Z" (*(
unsigned long long *)((
char *)rb+ra))
4139 #if !defined(__clang__) || !defined(_ARCH_PWR8)
4146 #
if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
4147 "vpkudum %0,%2,%1;\n"
4149 "vpkudum %0,%1,%2;\n"
4190 r = vec_rl (vra, vrb);
4208 t1 = vec_vslo ((
vui32_t)hd, shh);
4209 t2 = vec_vslo ((
vui32_t)ld, shl);
4210 t1 = vec_vsl (t1, shh);
4211 t2 = vec_vsl (t2, shl);
4244 result = vec_sl (vra, vrb);
4273 vr_h = vec_vslo (vr_h, vsh_h);
4274 vr_h = vec_vsl (vr_h, vsh_h);
4276 vr_l = vec_vslo (vr_l, vsh_l);
4277 vr_l = vec_vsl (vr_l, vsh_l);
4312 result = vec_sra (vra, vrb);
4331 exsa = vec_vsraw ((
vi32_t) vra, shw31);
4332 exsah = (
vui64_t) vec_vmrghw (exsa, exsa);
4333 exsal = (
vui64_t) vec_vmrglw (exsa, exsa);
4343 vr_h = vec_vsro ((
vui8_t) exsah, vsh_h);
4344 vr_h = vec_vsr (vr_h, vsh_h);
4348 vr_l = vec_vsro ((
vui8_t) exsal, vsh_l);
4349 vr_l = vec_vsr (vr_l, vsh_l);
4353 return ((
vi64_t) result);
4383 result = vec_sr (vra, vrb);
4408 vr_h = vec_vsro ((
vui8_t) vra, vsh_h);
4409 vr_h = vec_vsr (vr_h, vsh_h);
4411 vr_l = vec_vsro (vr_l, vsh_l);
4412 vr_l = vec_vsr (vr_l, vsh_l);
4474 vi64_t vra,
const unsigned char scale)
4527 const long long offset0,
const long long offset1)
4534 #if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
4573 #if (defined(__clang__) && __clang_major__ < 8)
4575 unsigned long long *p = (
unsigned long long *)((
char *)rb + ra);
4579 if (__builtin_constant_p (ra) && (ra <= 32760) && (ra >= -32768)
4582 #if defined (_ARCH_PWR9)
4585 :
"=m" (*((
char *)rb + ra))
4597 unsigned long long rt;
4605 :
"=Z" (*((
char *)rb+rt))
4613 :
"=Z" (*((
char *)rb+ra))
4690 const vui32_t zero = { 0, 0, 0, 0 };
4725 const vui32_t zero = { 0, 0, 0, 0 };
4759 const vui32_t zero = { 0, 0, 0, 0 };
4794 const vui32_t zero = { 0, 0, 0, 0 };
static int vec_cmpud_all_ne(vui64_t a, vui64_t b)
Vector Compare all Not Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2334
static vui128_t vec_vmsumoud(vui64_t a, vui64_t b, vui128_t c)
Vector Multiply-Sum Odd Unsigned Doublewords.
static vui32_t vec_mrgahw(vui64_t vra, vui64_t vrb)
Vector Merge Algebraic High Words.
Definition: vec_int32_ppc.h:653
static vui64_t vec_vmadd2euw(vui32_t a, vui32_t b, vui32_t c, vui32_t d)
Vector Multiply-Add2 Even Unsigned Words.
Definition: vec_int64_ppc.h:4723
static vui64_t vec_vgluddo(unsigned long long *array, vi64_t vra)
Vector Gather-Load Integer Doublewords from Vector Doubleword Offsets.
Definition: vec_int64_ppc.h:3824
static int vec_cmpud_all_le(vui64_t a, vui64_t b)
Vector Compare all Less than equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2287
static unsigned long long scalar_extract_uint64_from_high_uint128(unsigned __int128 gprp)
Extract the high doubleword from a __int128 scalar.
Definition: vec_common_ppc.h:503
static vui64_t vec_vmaddouw(vui32_t a, vui32_t b, vui32_t c)
Vector Multiply-Add Odd Unsigned Words.
Definition: vec_int64_ppc.h:4757
static vui64_t vec_muleuw(vui32_t a, vui32_t b)
Vector multiply even unsigned words.
Definition: vec_int32_ppc.h:1007
static vui128_t vec_vmuloud(vui64_t a, vui64_t b)
Vector Multiply Odd Unsigned Doublewords.
static vui128_t vec_vmsumeud(vui64_t a, vui64_t b, vui128_t c)
Vector Multiply-Sum Even Unsigned Doublewords.
static vui64_t vec_xxspltd(vui64_t vra, const int ctl)
Vector splat doubleword. Duplicate the selected doubleword element across the doubleword elements of ...
Definition: vec_int64_ppc.h:4647
static vui64_t vec_vgluddsx(unsigned long long *array, vi64_t vra, const unsigned char scale)
Vector Gather-Load Integer Doublewords from Vector Doubleword Scaled Indexes.
Definition: vec_int64_ppc.h:3866
static int vec_cmpud_any_ge(vui64_t a, vui64_t b)
Vector Compare any Greater Than or Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2397
static vui32_t vec_vpkudum(vui64_t vra, vui64_t vrb)
Vector Pack Unsigned Doubleword Unsigned Modulo.
Definition: vec_int64_ppc.h:4141
static vui128_t vec_muleud(vui64_t a, vui64_t b)
Vector Multiply Even Unsigned Doublewords.
static vui64_t vec_vmaddeuw(vui32_t a, vui32_t b, vui32_t c)
Vector Multiply-Add Even Unsigned Words.
Definition: vec_int64_ppc.h:4688
static int vec_cmpud_any_le(vui64_t a, vui64_t b)
Vector Compare any Less than equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2461
static int vec_cmpsd_any_eq(vi64_t a, vi64_t b)
Vector Compare any Equal Signed Doubleword.
Definition: vec_int64_ppc.h:2019
static void vec_vstsidx(vui64_t xs, const signed long long ra, unsigned long long *rb)
Vector Store Scalar Integer Doubleword Indexed.
Definition: vec_int64_ppc.h:4571
static int vec_cmpud_all_lt(vui64_t a, vui64_t b)
Vector Compare all Less than Unsigned Doubleword.
Definition: vec_int64_ppc.h:2311
static vui64_t vec_minud(vui64_t vra, vui64_t vrb)
Vector Minimum Unsigned Doubleword.
Definition: vec_int64_ppc.h:2663
static vui128_t vec_vmuleud(vui64_t a, vui64_t b)
Vector Multiply Even Unsigned Doublewords.
#define CONST_VINT128_W(__w0, __w1, __w2, __w3)
Arrange word elements of a unsigned int initializer in high->low order. May require an explicit cast.
Definition: vec_common_ppc.h:304
static int vec_cmpsd_all_ge(vi64_t a, vi64_t b)
Vector Compare all Greater Than or Equal Signed Doubleword.
Definition: vec_int64_ppc.h:1877
static void vec_vsstuddsx(vui64_t xs, unsigned long long *array, vi64_t vra, const unsigned char scale)
Vector Scatter-Store Integer Doublewords to Vector Doubleword Scaled Indexes.
Definition: vec_int64_ppc.h:4473
static vi64_t vec_selsd(vi64_t vra, vi64_t vrb, vb64_t vrc)
Vector Select Signed Doubleword.
Definition: vec_int64_ppc.h:3334
#define CONST_VINT64_DW(__dw0, __dw1)
Arrange elements of dword initializer in high->low order.
Definition: vec_common_ppc.h:295
static unsigned __int128 vec_transfer_vui128t_to_uint128(vui128_t vra)
Transfer a vector unsigned __int128 to __int128 scalar.
Definition: vec_common_ppc.h:420
static vui64_t vec_srdi(vui64_t vra, const unsigned int shb)
Vector Shift Right Doubleword Immediate.
Definition: vec_int64_ppc.h:3604
static vui64_t vec_mrghd(vui64_t __VA, vui64_t __VB)
Vector Merge High Doubleword. Merge the high doubleword elements from two vectors into the high and l...
Definition: vec_int64_ppc.h:2792
static vb64_t vec_cmpgesd(vi64_t a, vi64_t b)
Vector Compare Greater Than or Equal Signed Doubleword.
Definition: vec_int64_ppc.h:1509
static vui32_t vec_popcntw(vui32_t vra)
Vector Population Count word.
Definition: vec_int32_ppc.h:1184
static vui64_t vec_mrgld(vui64_t __VA, vui64_t __VB)
Vector Merge Low Doubleword. Merge the low doubleword elements from two vectors into the high and low...
Definition: vec_int64_ppc.h:2825
static void vec_vsstudso(vui64_t xs, unsigned long long *array, const long long offset0, const long long offset1)
Vector Scatter-Store Integer Doublewords to Scalar Offsets.
Definition: vec_int64_ppc.h:4526
static int vec_cmpud_all_eq(vui64_t a, vui64_t b)
Vector Compare all Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2193
#define VEC_BYTE_L_DWL
Element index for lowest order byte of the low dword.
Definition: vec_common_ppc.h:348
__vector unsigned long long vui64_t
vector of 64-bit unsigned long long elements.
Definition: vec_common_ppc.h:208
static vui64_t vec_rldi(vui64_t vra, const unsigned int shb)
Vector Rotate left Doubleword Immediate.
Definition: vec_int64_ppc.h:3207
static vui64_t vec_splatd(vui64_t vra, const int ctl)
Vector splat doubleword. Duplicate the selected doubleword element across the doubleword elements of ...
Definition: vec_int64_ppc.h:3382
static vui64_t vec_vmuleuw(vui32_t vra, vui32_t vrb)
Vector Multiply Even Unsigned words.
Definition: vec_int32_ppc.h:2237
static vui64_t vec_sldi(vui64_t vra, const unsigned int shb)
Vector Shift left Doubleword Immediate.
Definition: vec_int64_ppc.h:3253
__vector unsigned char vui8_t
vector of 8-bit unsigned char elements.
Definition: vec_common_ppc.h:202
__vector int vi32_t
vector of 32-bit signed int elements.
Definition: vec_common_ppc.h:215
static int vec_cmpud_all_gt(vui64_t a, vui64_t b)
Vector Compare all Greater Than Unsigned Doubleword.
Definition: vec_int64_ppc.h:2255
static vui64_t vec_vmulouw(vui32_t vra, vui32_t vrb)
Vector Multiply Odd Unsigned Words.
Definition: vec_int32_ppc.h:2340
static vi64_t vec_vsrad(vi64_t vra, vui64_t vrb)
Vector Shift Right Algebraic Doubleword.
Definition: vec_int64_ppc.h:4305
static vui64_t vec_spltd(vui64_t vra, const int ctl)
Definition: vec_int64_ppc.h:3560
static int vec_cmpud_any_lt(vui64_t a, vui64_t b)
Vector Compare any Less than Unsigned Doubleword.
Definition: vec_int64_ppc.h:2485
static vui64_t vec_subudm(vui64_t a, vui64_t b)
Vector Subtract Unsigned Doubleword Modulo.
Definition: vec_int64_ppc.h:3746
static vui64_t vec_vrld(vui64_t vra, vui64_t vrb)
Vector Rotate Left Doubleword.
Definition: vec_int64_ppc.h:4185
static vui64_t vec_vsld(vui64_t vra, vui64_t vrb)
Vector Shift Left Doubleword.
Definition: vec_int64_ppc.h:4238
static vui128_t vec_muloud(vui64_t a, vui64_t b)
Vector Multiply Odd Unsigned Doublewords.
static vi64_t vec_minsd(vi64_t vra, vi64_t vrb)
Vector Minimum Signed Doubleword.
Definition: vec_int64_ppc.h:2621
struct __VEC_U_128::@0 ulong
Struct of two unsigned long int (64-bit GPR) fields.
static void vec_vsstuddx(vui64_t xs, unsigned long long *array, vi64_t vra)
Vector Scatter-Store Integer Doublewords to Vector Doubleword Indexes.
Definition: vec_int64_ppc.h:4499
static vui64_t vec_mrgod(vui64_t __VA, vui64_t __VB)
Vector Merge Odd Doubleword. Merge the odd doubleword elements from two vectors into the high and low...
Definition: vec_int64_ppc.h:2859
static int vec_cmpsd_any_ge(vi64_t a, vi64_t b)
Vector Compare any Greater Than or Equal Signed Doubleword.
Definition: vec_int64_ppc.h:2051
static vui64_t vec_maxud(vui64_t vra, vui64_t vrb)
Vector Maximum Unsigned Doubleword.
Definition: vec_int64_ppc.h:2579
static int vec_cmpsd_any_ne(vi64_t a, vi64_t b)
Vector Compare any Not Equal Signed Doubleword.
Definition: vec_int64_ppc.h:2162
static vui32_t vec_mrgalw(vui64_t vra, vui64_t vrb)
Vector merge Algebraic low words.
Definition: vec_int32_ppc.h:703
static vui128_t vec_msumudm(vui64_t a, vui64_t b, vui128_t c)
Vector Multiply-Sum Unsigned Doubleword Modulo.
static vb64_t vec_cmpnesd(vi64_t a, vi64_t b)
Vector Compare Not Equal Signed Doubleword.
Definition: vec_int64_ppc.h:1796
static int vec_cmpud_any_eq(vui64_t a, vui64_t b)
Vector Compare any Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2365
static vui64_t vec_vlsidx(const signed long long ra, const unsigned long long *rb)
Vector Load Scalar Integer Doubleword Indexed.
Definition: vec_int64_ppc.h:3979
static vb64_t vec_cmpneud(vui64_t a, vui64_t b)
Vector Compare Not Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:1821
static vui64_t vec_mulhud(vui64_t vra, vui64_t vrb)
Vector Multiply High Unsigned Doubleword.
static vi32_t vec_vsum2sw(vi32_t vra, vi32_t vrb)
Vector Sum-across Half Signed Word Saturate.
Definition: vec_int32_ppc.h:2848
vui128_t vx1
128 bit Vector of 1 unsigned __int128 element.
Definition: vec_common_ppc.h:277
static vi64_t vec_maxsd(vi64_t vra, vi64_t vrb)
Vector Maximum Signed Doubleword.
Definition: vec_int64_ppc.h:2537
__vector unsigned __int128 vui128_t
vector of one 128-bit unsigned __int128 element.
Definition: vec_common_ppc.h:237
__vector __bool long long vb64_t
vector of 64-bit bool long long elements.
Definition: vec_common_ppc.h:230
static vb64_t vec_cmplesd(vi64_t a, vi64_t b)
Vector Compare Less Than Equal Signed Doubleword.
Definition: vec_int64_ppc.h:1689
static vui64_t vec_vgludso(unsigned long long *array, const long long offset0, const long long offset1)
Vector Gather-Load Integer Doublewords from Scalar Offsets.
Definition: vec_int64_ppc.h:3926
static vb64_t vec_cmpeqsd(vi64_t a, vi64_t b)
Vector Compare Equal Signed Doubleword.
Definition: vec_int64_ppc.h:1422
static vui64_t vec_permdi(vui64_t vra, vui64_t vrb, const int ctl)
Vector Permute Doubleword Immediate. Combine a doubleword selected from the 1st (vra) vector with a d...
Definition: vec_int64_ppc.h:2983
Header package containing a collection of 128-bit SIMD operations over 32-bit integer elements.
Union used to transfer 128-bit data between vector and non-vector types.
Definition: vec_common_ppc.h:256
static vui64_t vec_clzd(vui64_t vra)
Vector Count Leading Zeros Doubleword for unsigned long long elements.
Definition: vec_int64_ppc.h:1313
__vector long long vi64_t
vector of 64-bit signed long long elements.
Definition: vec_common_ppc.h:217
#define CONST_VINT128_DW(__dw0, __dw1)
Initializer for 128-bits vector, as two unsigned long long elements in high->low order....
Definition: vec_common_ppc.h:298
static vui64_t vec_mulouw(vui32_t a, vui32_t b)
Vector multiply odd unsigned words.
Definition: vec_int32_ppc.h:1043
static vui64_t vec_vsrd(vui64_t vra, vui64_t vrb)
Vector Shift Right Doubleword.
Definition: vec_int64_ppc.h:4377
static vb64_t vec_cmpgtsd(vi64_t a, vi64_t b)
Vector Compare Greater Than Signed Doubleword.
Definition: vec_int64_ppc.h:1571
#define VEC_DW_L
Element index for low order dword.
Definition: vec_common_ppc.h:324
static vui64_t vec_revbd(vui64_t vra)
byte reverse each doubleword for a vector unsigned long int.
Definition: vec_int64_ppc.h:3112
static vui64_t vec_selud(vui64_t vra, vui64_t vrb, vb64_t vrc)
Vector Select Unsigned Doubleword.
Definition: vec_int64_ppc.h:3354
static int vec_cmpsd_any_gt(vi64_t a, vi64_t b)
Vector Compare any Greater Than Signed Doubleword.
Definition: vec_int64_ppc.h:2083
static vui64_t vec_pasted(vui64_t __VH, vui64_t __VL)
Vector doubleword paste. Concatenate the high doubleword of the 1st vector with the low double word o...
Definition: vec_int64_ppc.h:2937
static int vec_cmpud_any_ne(vui64_t a, vui64_t b)
Vector Compare any Not Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2508
static vui64_t vec_mrgald(vui128_t vra, vui128_t vrb)
Vector Merge Algebraic Low Doublewords.
Definition: vec_int64_ppc.h:2736
static vui128_t vec_vmadd2eud(vui64_t a, vui64_t b, vui64_t c, vui64_t d)
Vector Multiply-Add2 Even Unsigned Doublewords.
static int vec_cmpsd_all_ne(vi64_t a, vi64_t b)
Vector Compare all Not Equal Signed Doubleword.
Definition: vec_int64_ppc.h:1988
static vui64_t vec_mrgahd(vui128_t vra, vui128_t vrb)
Vector Merge Algebraic High Doublewords.
Definition: vec_int64_ppc.h:2710
static int vec_cmpsd_all_le(vi64_t a, vi64_t b)
Vector Compare all Less than equal Signed Doubleword.
Definition: vec_int64_ppc.h:1941
__vector unsigned int vui32_t
vector of 32-bit unsigned int elements.
Definition: vec_common_ppc.h:206
static vui64_t vec_splat_u64(const int sim)
Vector Splat Immediate Unsigned Doubleword. Duplicate the unsigned integer constant across doubleword...
Definition: vec_int64_ppc.h:3495
static vui64_t vec_mrged(vui64_t __VA, vui64_t __VB)
Vector Merge Even Doubleword. Merge the even doubleword elements from two vectors into the high and l...
Definition: vec_int64_ppc.h:2759
static vb64_t vec_setb_sd(vi64_t vra)
Vector Set Bool from Signed Doubleword.
Definition: vec_int64_ppc.h:3164
static vui128_t vec_vmaddeud(vui64_t a, vui64_t b, vui64_t c)
Vector Multiply-Add Even Unsigned Doublewords.
static vb64_t vec_cmpltud(vui64_t a, vui64_t b)
Vector Compare less Than Unsigned Doubleword.
Definition: vec_int64_ppc.h:1771
static int vec_cmpsd_all_eq(vi64_t a, vi64_t b)
Vector Compare all Equal Signed Doubleword.
Definition: vec_int64_ppc.h:1847
static unsigned long long scalar_extract_uint64_from_low_uint128(unsigned __int128 gprp)
Extract the low doubleword from a __int128 scalar.
Definition: vec_common_ppc.h:490
__vector short vi16_t
vector of 16-bit signed short elements.
Definition: vec_common_ppc.h:213
static int vec_cmpud_all_ge(vui64_t a, vui64_t b)
Vector Compare all Greater Than or Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:2223
static vi64_t vec_splat_s64(const int sim)
Vector Splat Immediate Signed Doubleword. Duplicate the signed integer constant across doubleword ele...
Definition: vec_int64_ppc.h:3429
static vui64_t vec_vmsumuwm(vui32_t vra, vui32_t vrb, vui64_t vrc)
Vector Multiply-Sum Unsigned Word Modulo.
Definition: vec_int64_ppc.h:4829
static vb64_t vec_cmpgtud(vui64_t a, vui64_t b)
Vector Compare Greater Than Unsigned Doubleword.
Definition: vec_int64_ppc.h:1622
static void vec_vsstuddo(vui64_t xs, unsigned long long *array, vi64_t vra)
Vector Scatter-Store Integer Doublewords to Vector Doublewords Offsets.
Definition: vec_int64_ppc.h:4437
static vui64_t vec_addudm(vui64_t a, vui64_t b)
Vector Add Unsigned Doubleword Modulo.
Definition: vec_int64_ppc.h:1261
static vui128_t vec_vmadd2oud(vui64_t a, vui64_t b, vui64_t c, vui64_t d)
Vector Multiply-Add2 Odd Unsigned Doublewords.
static vui64_t vec_absdud(vui64_t vra, vui64_t vrb)
Vector Absolute Difference Unsigned Doubleword.
Definition: vec_int64_ppc.h:1241
static int vec_cmpsd_all_gt(vi64_t a, vi64_t b)
Vector Compare all Greater Than Signed Doubleword.
Definition: vec_int64_ppc.h:1909
static vui64_t vec_popcntd(vui64_t vra)
Vector Population Count doubleword.
Definition: vec_int64_ppc.h:3068
static vb64_t vec_cmpltsd(vi64_t a, vi64_t b)
Vector Compare less Than Signed Doubleword.
Definition: vec_int64_ppc.h:1746
static int vec_cmpsd_all_lt(vi64_t a, vi64_t b)
Vector Compare all Less than Signed Doubleword.
Definition: vec_int64_ppc.h:1965
static vui64_t vec_swapd(vui64_t vra)
Vector doubleword swap. Exchange the high and low doubleword elements of a vector.
Definition: vec_int64_ppc.h:3789
static vi64_t vec_sradi(vi64_t vra, const unsigned int shb)
Vector Shift Right Algebraic Doubleword Immediate.
Definition: vec_int64_ppc.h:3692
static vui64_t vec_vgluddx(unsigned long long *array, vi64_t vra)
Vector Gather-Load Integer Doublewords from Vector Doubleword Indexes.
Definition: vec_int64_ppc.h:3898
static vui64_t vec_ctzd(vui64_t vra)
Vector Count Trailing Zeros Doubleword for unsigned long long elements.
Definition: vec_int64_ppc.h:1371
static vui32_t vec_clzw(vui32_t vra)
Vector Count Leading Zeros word.
Definition: vec_int32_ppc.h:503
static vui128_t vec_vmaddoud(vui64_t a, vui64_t b, vui64_t c)
Vector Multiply-Add Odd Unsigned Doublewords.
static vb64_t vec_cmpleud(vui64_t a, vui64_t b)
Vector Compare Less Than Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:1718
static vui64_t vec_muludm(vui64_t vra, vui64_t vrb)
Vector Multiply Unsigned Doubleword Modulo.
static vb64_t vec_cmpequd(vui64_t a, vui64_t b)
Vector Compare Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:1451
static vb64_t vec_cmpgeud(vui64_t a, vui64_t b)
Vector Compare Greater Than or Equal Unsigned Doubleword.
Definition: vec_int64_ppc.h:1539
#define VEC_DW_H
Element index for high order dword.
Definition: vec_common_ppc.h:322
static vui64_t vec_vmadd2ouw(vui32_t a, vui32_t b, vui32_t c, vui32_t d)
Vector Multiply-Add2 Odd Unsigned Words.
Definition: vec_int64_ppc.h:4792
static int vec_cmpud_any_gt(vui64_t a, vui64_t b)
Vector Compare any Greater Than Unsigned Doubleword.
Definition: vec_int64_ppc.h:2429
static int vec_cmpsd_any_le(vi64_t a, vi64_t b)
Vector Compare any Less than equal Signed Doubleword.
Definition: vec_int64_ppc.h:2115
static int vec_cmpsd_any_lt(vi64_t a, vi64_t b)
Vector Compare any Less than Signed Doubleword.
Definition: vec_int64_ppc.h:2139
#define VEC_BYTE_L_DWH
Element index for lowest order byte of the high dword.
Definition: vec_common_ppc.h:346