| /* Test __builtin_bswap64 . */ |
| |
| unsigned long long g(unsigned long long a) __attribute__((noinline)); |
| unsigned long long g(unsigned long long a) |
| { |
| return __builtin_bswap64(a); |
| } |
| |
| |
| unsigned long long f(unsigned long long c) |
| { |
| union { |
| unsigned long long a; |
| unsigned char b[8]; |
| } a, b; |
| a.a = c; |
| b.b[0] = a.b[7]; |
| b.b[1] = a.b[6]; |
| b.b[2] = a.b[5]; |
| b.b[3] = a.b[4]; |
| b.b[4] = a.b[3]; |
| b.b[5] = a.b[2]; |
| b.b[6] = a.b[1]; |
| b.b[7] = a.b[0]; |
| return b.a; |
| } |
| |
| int main(void) |
| { |
| unsigned long long i; |
| /* The rest of the testcase assumes 8 byte long long. */ |
| if (sizeof(i) != sizeof(char)*8) |
| return 0; |
| if (f(0x12) != g(0x12)) |
| __builtin_abort(); |
| if (f(0x1234) != g(0x1234)) |
| __builtin_abort(); |
| if (f(0x123456) != g(0x123456)) |
| __builtin_abort(); |
| if (f(0x12345678ull) != g(0x12345678ull)) |
| __builtin_abort(); |
| if (f(0x1234567890ull) != g(0x1234567890ull)) |
| __builtin_abort(); |
| if (f(0x123456789012ull) != g(0x123456789012ull)) |
| __builtin_abort(); |
| if (f(0x12345678901234ull) != g(0x12345678901234ull)) |
| __builtin_abort(); |
| if (f(0x1234567890123456ull) != g(0x1234567890123456ull)) |
| __builtin_abort(); |
| return 0; |
| } |