1 /* Test __builtin_bswap64 . */ 2 3 unsigned long long g(unsigned long long a) __attribute__((noinline)); g(unsigned long long a)4unsigned long long g(unsigned long long a) 5 { 6 return __builtin_bswap64(a); 7 } 8 9 f(unsigned long long c)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 main(void)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