blob: 4f4e7a9ee5e453d2b6e738c0fe835250c962c8c9 [file] [log] [blame]
/* { dg-do run } */
/* { dg-require-effective-target int128 } */
/* { dg-require-effective-target p8vector_hw } */
/* { dg-options "-mpower8-vector" } */
#include <inttypes.h>
#include <altivec.h> // vector
#ifdef DEBUG
#include <stdio.h>
#endif
void abort (void);
int main() {
int i;
__uint128_t data_u128[100];
__int128_t data_128[100];
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;
for (i = 0; i < 100; i++)
{
data_128[i] = i + 12800000;
data_u128[i] = i + 12800001;
}
/* vec_xl() tests */
vec_128_expected1 = (vector __int128_t){12800000};
vec_128_result1 = vec_xl (zero, data_128);
if (vec_128_expected1[0] != vec_128_result1[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);
printf("vec_128_expected1[0] = %lld %llu\n",
vec_128_expected1[0] >> 64,
vec_128_expected1[0] & (__int128_t)0xFFFFFFFFFFFFFFFF);
#else
abort ();
#endif
}
vec_u128_result1 = vec_xl (zero, data_u128);
vec_u128_expected1 = (vector __uint128_t){12800001};
if (vec_u128_expected1[0] != vec_u128_result1[0])
{
#ifdef DEBUG
printf("Error: vec_xl(), vec_u128_result1[0] = %lld; ",
vec_u128_result1[0] >> 64,
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);
#else
abort ();
#endif
}
/* vec_xl_be() tests */
vec_128_result1 = vec_xl_be (zero, data_128);
#ifdef __BIG_ENDIAN__
vec_128_expected1 = (vector __int128_t){ (__int128_t)12800000 };
#else
vec_128_expected1 = (vector __int128_t){ (__int128_t)12800000 };
#endif
if (vec_128_expected1[0] != vec_128_result1[0])
{
#ifdef DEBUG
printf("Error: vec_xl_be(), vec_128_result1[0] = %llu %llu;",
vec_128_result1[0] >> 64,
vec_128_result1[0] & 0xFFFFFFFFFFFFFFFF);
printf(" vec_128_expected1[0] = %llu %llu\n",
vec_128_expected1[0] >> 64,
vec_128_expected1[0] & 0xFFFFFFFFFFFFFFFF);
#else
abort ();
#endif
}
#ifdef __BIG_ENDIAN__
vec_u128_expected1 = (vector __uint128_t){ (__uint128_t)12800001 };
#else
vec_u128_expected1 = (vector __uint128_t){ (__uint128_t)12800001 };
#endif
vec_u128_result1 = vec_xl_be (zero, data_u128);
if (vec_u128_expected1[0] != vec_u128_result1[0])
{
#ifdef DEBUG
printf("Error: vec_xl_be(), vec_u128_result1[0] = %llu %llu;",
vec_u128_result1[0] >> 64,
vec_u128_result1[0] & 0xFFFFFFFFFFFFFFFF);
printf(" vec_u128_expected1[0] = %llu %llu\n",
vec_u128_expected1[0] >> 64,
vec_u128_expected1[0] & 0xFFFFFFFFFFFFFFFF);
#else
abort ();
#endif
}
}