/* Test that we generate vpmsumd correctly without a swap error. */ /* { dg-do run { target { p8vector_hw } } } */ /* { dg-options "-O2 -std=gnu11 -mdejagnu-cpu=power8" } */ #include int main() { const unsigned long long r0l = 0x8e7dfceac070e3a0; vector unsigned long long r0 = (vector unsigned long long) {r0l, 0}, v; const vector unsigned long long pd = (vector unsigned long long) {0xc2LLU << 56, 0}; v = __builtin_crypto_vpmsumd ((vector unsigned long long) {r0[0], 0}, pd); #if __LITTLE_ENDIAN__ if (v[0] != 0x4000000000000000 || v[1] != 0x65bd7ab605a4a8ff) __builtin_abort (); #else if (v[1] != 0x4000000000000000 || v[0] != 0x65bd7ab605a4a8ff) __builtin_abort (); #endif return 0; }