1 /* { dg-do compile } */
2 /* { dg-options "-O1" } */
3
4 unsigned int test_0(unsigned int a)
5 {
6 return (a & 0x000000FF) << 24 |
7 (a & 0x0000FF00) << 8 |
8 (a & 0x00FF0000) >> 8 |
9 (a & 0xFF000000) >> 24;
10 }
11
12 unsigned int test_1(unsigned int a)
13 {
14 union
15 {
16 unsigned int i;
17 unsigned char a[4];
18 } u, v;
19 u.i = a;
20 v.a[0] = u.a[3];
21 v.a[1] = u.a[2];
22 v.a[2] = u.a[1];
23 v.a[3] = u.a[0];
24 return v.i;
25 }
26
27 unsigned int test_2(unsigned int a)
28 {
29 return __builtin_bswap32(a);
30 }
31
32 unsigned long long test_3(unsigned long long a)
33 {
34 return __builtin_bswap64(a);
35 }
36
37 /* { dg-final { scan-assembler-times "call" 2 } } */