1 /* Test that we generate vpmsumd correctly without a swap error. */
2
3 /* { dg-do run { target { p8vector_hw } } } */
4 /* { dg-options "-O2 -std=gnu11 -mdejagnu-cpu=power8" } */
5
6 #include <altivec.h>
7
8 int main() {
9
10 const unsigned long long r0l = 0x8e7dfceac070e3a0;
11 vector unsigned long long r0 = (vector unsigned long long) {r0l, 0}, v;
12 const vector unsigned long long pd
13 = (vector unsigned long long) {0xc2LLU << 56, 0};
14
15 v = __builtin_crypto_vpmsumd ((vector unsigned long long) {r0[0], 0}, pd);
16
17 #if __LITTLE_ENDIAN__
18 if (v[0] != 0x4000000000000000 || v[1] != 0x65bd7ab605a4a8ff)
19 __builtin_abort ();
20 #else
21 if (v[1] != 0x4000000000000000 || v[0] != 0x65bd7ab605a4a8ff)
22 __builtin_abort ();
23 #endif
24
25 return 0;
26 }