1 /* { dg-options "-O2" } */
2 /* { dg-do run } */
3
4 extern void abort (void);
5
6 typedef unsigned int __u32;
7
8 __u32
9 __rev16_32_alt (__u32 x)
10 {
11 return (((__u32)(x) & (__u32)0xff00ff00UL) >> 8)
12 | (((__u32)(x) & (__u32)0x00ff00ffUL) << 8);
13 }
14
15 __u32
16 __rev16_32 (__u32 x)
17 {
18 return (((__u32)(x) & (__u32)0x00ff00ffUL) << 8)
19 | (((__u32)(x) & (__u32)0xff00ff00UL) >> 8);
20 }
21
22 int
23 main (void)
24 {
25 volatile __u32 in32 = 0x12345678;
26 volatile __u32 expected32 = 0x34127856;
27
28 if (__rev16_32 (in32) != expected32)
29 abort ();
30
31 if (__rev16_32_alt (in32) != expected32)
32 abort ();
33
34 return 0;
35 }