1/* Test __builtin_bswap64 . */
2
3unsigned long long g(unsigned long long a) __attribute__((noinline));
4unsigned long long g(unsigned long long a)
5{
6  return __builtin_bswap64(a);
7}
8
9
10unsigned long long f(unsigned long long c)
11{
12  union {
13    unsigned long long a;
14    unsigned char b[8];
15  } a, b;
16  a.a = c;
17  b.b[0] = a.b[7];
18  b.b[1] = a.b[6];
19  b.b[2] = a.b[5];
20  b.b[3] = a.b[4];
21  b.b[4] = a.b[3];
22  b.b[5] = a.b[2];
23  b.b[6] = a.b[1];
24  b.b[7] = a.b[0];
25  return b.a;
26}
27
28int main(void)
29{
30  unsigned long long i;
31  /* The rest of the testcase assumes 8 byte long long. */
32  if (sizeof(i) != sizeof(char)*8)
33    return 0;
34  if (f(0x12) != g(0x12))
35    __builtin_abort();
36  if (f(0x1234) != g(0x1234))
37    __builtin_abort();
38  if (f(0x123456) != g(0x123456))
39    __builtin_abort();
40  if (f(0x12345678ull) != g(0x12345678ull))
41    __builtin_abort();
42  if (f(0x1234567890ull) != g(0x1234567890ull))
43    __builtin_abort();
44  if (f(0x123456789012ull) != g(0x123456789012ull))
45    __builtin_abort();
46  if (f(0x12345678901234ull) != g(0x12345678901234ull))
47    __builtin_abort();
48  if (f(0x1234567890123456ull) != g(0x1234567890123456ull))
49    __builtin_abort();
50  return 0;
51}
52