bswap-1.c: New testcase.
[gcc.git] / gcc / testsuite / gcc.c-torture / execute / bswap-1.c
1 /* Test __builtin_bswap64 . */
2
3 unsigned long long g(unsigned long long a) __attribute__((noinline));
4 unsigned long long g(unsigned long long a)
5 {
6 return __builtin_bswap64(a);
7 }
8
9
10 unsigned 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
28 int 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 }