(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
rev16_2.c
       1  /* { dg-options "-O2" } */
       2  /* { dg-do compile } */
       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  typedef unsigned long long __u64;
      23  
      24  __u64
      25  __rev16_64_alt (__u64 x)
      26  {
      27    return (((__u64)(x) & (__u64)0xff00ff00ff00ff00UL) >> 8)
      28           | (((__u64)(x) & (__u64)0x00ff00ff00ff00ffUL) << 8);
      29  }
      30  
      31  __u64
      32  __rev16_64 (__u64 x)
      33  {
      34    return (((__u64)(x) & (__u64)0x00ff00ff00ff00ffUL) << 8)
      35           | (((__u64)(x) & (__u64)0xff00ff00ff00ff00UL) >> 8);
      36  }
      37  
      38  /* { dg-final { scan-assembler-times "rev16\\tx\[0-9\]+" 2 } } */
      39  /* { dg-final { scan-assembler-times "rev16\\tw\[0-9\]+" 2 } } */