| /* { dg-do compile } */ |
| /* { dg-options "-Os" } */ |
| |
| unsigned int test_0(unsigned int a) |
| { |
| return (a & 0x000000FF) << 24 | |
| (a & 0x0000FF00) << 8 | |
| (a & 0x00FF0000) >> 8 | |
| (a & 0xFF000000) >> 24; |
| } |
| |
| unsigned int test_1(unsigned int a) |
| { |
| union |
| { |
| unsigned int i; |
| unsigned char a[4]; |
| } u, v; |
| u.i = a; |
| v.a[0] = u.a[3]; |
| v.a[1] = u.a[2]; |
| v.a[2] = u.a[1]; |
| v.a[3] = u.a[0]; |
| return v.i; |
| } |
| |
| unsigned int test_2(unsigned int a) |
| { |
| return __builtin_bswap32(a); |
| } |
| |
| unsigned long long test_3(unsigned long long a) |
| { |
| return __builtin_bswap64(a); |
| } |
| |
| /* { dg-final { scan-assembler-times "call" 4 } } */ |