__uint128_t data_u128[100];
__int128_t data_128[100];
+#ifdef __BIG_ENDIAN__
+ vector unsigned char vuc = {0xC, 0xD, 0xE, 0xF, 0x8, 0x9, 0xA, 0xB,
+ 0x1C, 0x1D, 0x1E, 0x1F, 0x18, 0x19, 0x1A, 0x1B};
+#else
+ vector unsigned char vuc = {0x4, 0x5, 0x6, 0x7, 0x0, 0x1, 0x2, 0x3,
+ 0x14, 0x15, 0x16, 0x17, 0x10, 0x11, 0x12, 0x13};
+#endif
+
+ vector __int128_t vec_128_arg1, vec_128_arg2;
+ vector __uint128_t vec_u128_arg1, vec_u128_arg2;
vector __int128_t vec_128_expected1, vec_128_result1;
vector __uint128_t vec_u128_expected1, vec_u128_result1;
signed long long zero = (signed long long) 0;
{
#ifdef DEBUG
printf("Error: vec_xl(), vec_128_result1[0] = %lld %llu; ",
- vec_128_result1[0] >> 64,
- vec_128_result1[0] & (__int128_t)0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_128_result1[0] >> 64),
+ (unsigned long long)(vec_128_result1[0]
+ & (__int128_t)0xFFFFFFFFFFFFFFFF));
printf("vec_128_expected1[0] = %lld %llu\n",
- vec_128_expected1[0] >> 64,
- vec_128_expected1[0] & (__int128_t)0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_128_expected1[0] >> 64),
+ (unsigned long long)(vec_128_expected1[0]
+ & (__int128_t)0xFFFFFFFFFFFFFFFF));
#else
abort ();
#endif
{
#ifdef DEBUG
printf("Error: vec_xl(), vec_u128_result1[0] = %lld; ",
- vec_u128_result1[0] >> 64,
- vec_u128_result1[0] & (__int128_t)0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_u128_result1[0] >> 64),
+ (unsigned long long)(vec_u128_result1[0]
+ & (__int128_t)0xFFFFFFFFFFFFFFFF));
printf("vec_u128_expected1[0] = %lld\n",
- vec_u128_expected1[0] >> 64,
- vec_u128_expected1[0] & (__int128_t)0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_u128_expected1[0] >> 64),
+ (unsigned long long)(vec_u128_expected1[0]
+ & (__int128_t)0xFFFFFFFFFFFFFFFF));
#else
abort ();
#endif
{
#ifdef DEBUG
printf("Error: vec_xl_be(), vec_128_result1[0] = %llu %llu;",
- vec_128_result1[0] >> 64,
- vec_128_result1[0] & 0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_128_result1[0] >> 64),
+ (unsigned long long)(vec_128_result1[0] & 0xFFFFFFFFFFFFFFFF));
printf(" vec_128_expected1[0] = %llu %llu\n",
- vec_128_expected1[0] >> 64,
- vec_128_expected1[0] & 0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_128_expected1[0] >> 64),
+ (unsigned long long)(vec_128_expected1[0]
+ & 0xFFFFFFFFFFFFFFFF));
#else
abort ();
#endif
{
#ifdef DEBUG
printf("Error: vec_xl_be(), vec_u128_result1[0] = %llu %llu;",
- vec_u128_result1[0] >> 64,
- vec_u128_result1[0] & 0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_u128_result1[0] >> 64),
+ (unsigned long long)(vec_u128_result1[0] & 0xFFFFFFFFFFFFFFFF));
+ printf(" vec_u128_expected1[0] = %llu %llu\n",
+ (unsigned long long)(vec_u128_expected1[0] >> 64),
+ (unsigned long long)(vec_u128_expected1[0]
+ & 0xFFFFFFFFFFFFFFFF));
+#else
+ abort ();
+#endif
+ }
+
+ /* vec_perm() tests */
+ vec_128_arg1 = (vector __int128_t){ (__uint128_t)0x1122334455667788ULL };
+ vec_128_arg2 = (vector __int128_t){ (__uint128_t)0xAAABBBCCCDDDEEEF };
+
+#ifdef __BIG_ENDIAN__
+ vec_128_expected1[0] = 0x5566778811223344ULL;
+ vec_128_expected1[0] = (vec_128_expected1[0] << 64) |
+ 0xcdddeeefaaabbbccULL;
+#else
+ vec_128_expected1[0] = 0xcdddeeefaaabbbccULL;
+ vec_128_expected1[0] = (vec_128_expected1[0] << 64) |
+ 0x5566778811223344ULL;
+#endif
+
+ vec_128_result1 = vec_perm (vec_128_arg1, vec_128_arg2, vuc);
+
+ if (vec_128_expected1[0] != vec_128_result1[0])
+ {
+#ifdef DEBUG
+ printf("Error: vec_perm(), vec_128_result1[0] = %llu %llu;",
+ (unsigned long long)(vec_128_result1[0] >> 64),
+ (unsigned long long)(vec_128_result1[0] & 0xFFFFFFFFFFFFFFFF));
+ printf(" vec_128_expected1[0] = %llu %llu\n",
+ (unsigned long long)(vec_128_expected1[0] >> 64),
+ (unsigned long long)(vec_128_expected1[0]
+ & 0xFFFFFFFFFFFFFFFF));
+#else
+ abort ();
+#endif
+ }
+ vec_u128_arg1 = (vector __uint128_t){ (__uint128_t)0x1122334455667788ULL };
+ vec_u128_arg2 = (vector __uint128_t){ (__uint128_t)0xAAABBBCCCDDDEEEF };
+
+#ifdef __BIG_ENDIAN__
+ vec_u128_expected1[0] = 0x5566778811223344ULL;
+ vec_u128_expected1[0] = (vec_u128_expected1[0] << 64) |
+ 0xcdddeeefaaabbbccULL;
+#else
+ vec_u128_expected1[0] = 0xcdddeeefaaabbbccULL;
+ vec_u128_expected1[0] = (vec_u128_expected1[0] << 64) |
+ 0x5566778811223344ULL;
+#endif
+
+ vec_u128_result1 = vec_perm (vec_u128_arg1, vec_u128_arg2, vuc);
+
+ if (vec_u128_expected1[0] != vec_u128_result1[0])
+ {
+#ifdef DEBUG
+ printf("Error: vec_perm(), vec_u128_result1[0] = %llu %llu;",
+ (unsigned long long)(vec_u128_result1[0] >> 64),
+ (unsigned long long)(vec_u128_result1[0] & 0xFFFFFFFFFFFFFFFF));
printf(" vec_u128_expected1[0] = %llu %llu\n",
- vec_u128_expected1[0] >> 64,
- vec_u128_expected1[0] & 0xFFFFFFFFFFFFFFFF);
+ (unsigned long long)(vec_u128_expected1[0] >> 64),
+ (unsigned long long)(vec_u128_expected1[0]
+ & 0xFFFFFFFFFFFFFFFF));
#else
abort ();
#endif
#include <altivec.h>
+extern __vector long long bool bll[][4];
+extern __vector unsigned long long ull[][4];
extern __vector int si[][4];
extern __vector short ss[][4];
extern __vector signed char sc[][4];
extern __vector long sl[][4];
extern __vector long long sll[][4];
extern __vector unsigned long ul[][4];
-extern __vector unsigned long long ull[][4];
extern __vector __bool long bl[][4];
#endif
{
int i = 0;
+ sll[i][0] = vec_perm (sll[i][1], sll[i][2], uc[i][3]); i++;
+ bll[i][0] = vec_perm (bll[i][1], bll[i][2], uc[i][3]); i++;
si[i][0] = vec_perm (si[i][1], si[i][2], uc[i][3]); i++;
+ bi[i][0] = vec_perm (bi[i][1], bi[i][2], uc[i][3]); i++;
ss[i][0] = vec_perm (ss[i][1], ss[i][2], uc[i][3]); i++;
+ bs[i][0] = vec_perm (bs[i][1], bs[i][2], uc[i][3]); i++;
sc[i][0] = vec_perm (sc[i][1], sc[i][2], uc[i][3]); i++;
+ bc[i][0] = vec_perm (bc[i][1], bc[i][2], uc[i][3]); i++;
+ p[i][0] = vec_perm (p[i][1], p[i][2], uc[i][3]); i++;
f[i][0] = vec_perm (f[i][1], f[i][2], uc[i][3]); i++;
d[i][0] = vec_perm (d[i][1], d[i][2], uc[i][3]); i++;
+ ull[i][0] = vec_perm (ull[i][1], ull[i][2], uc[i][3]); i++;
+ ui[i][0] = vec_perm (ui[i][1], ui[i][2], uc[i][3]); i++;
+ us[i][0] = vec_perm (us[i][1], us[i][2], uc[i][3]); i++;
+ uc[i][0] = vec_perm (uc[i][1], uc[i][2], uc[i][3]); i++;
+
si[i][0] = vec_perm (si[i][1], si[i][2], uc[i][3]); i++;
ss[i][0] = vec_perm (ss[i][1], ss[i][2], uc[i][3]); i++;
sc[i][0] = vec_perm (sc[i][1], sc[i][2], uc[i][3]); i++;