(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
optimize-bswapsi-7.c
       1  /* PR tree-optimization/103376 */
       2  /* { dg-do compile } */
       3  /* { dg-require-effective-target bswap } */
       4  /* { dg-options "-O2 -fno-tree-vectorize -fdump-tree-optimized" } */
       5  /* { dg-additional-options "-march=z900" { target s390-*-* } } */
       6  
       7  static unsigned int
       8  f1 (unsigned int x)
       9  {
      10    return (x << 24) | (x >> 8);
      11  }
      12  
      13  unsigned int
      14  f2 (unsigned *p)
      15  {
      16    return ((f1 (p[0]) | (p[0] >> 8)) & 0xff000000U) | (p[0] >> 24) | ((p[0] & 0xff00U) << 8) | ((p[0] & 0xff0000U) >> 8);
      17  }
      18  
      19  unsigned int
      20  f3 (unsigned *p)
      21  {
      22    return ((f1 (p[0]) | (p[0] & 0x00ff00ffU)) & 0xff00ff00U) | (f1 (f1 (f1 (p[0]))) & 0x00ff00ffU);
      23  }
      24  
      25  unsigned int
      26  f4 (unsigned *p)
      27  {
      28    return (f1 (p[0]) ^ (p[0] >> 8)) ^ (p[0] >> 24) ^ ((p[0] & 0xff00U) << 8) ^ ((p[0] & 0xff0000U) >> 8);
      29  }
      30  
      31  unsigned int
      32  f5 (unsigned *p)
      33  {
      34    return (((f1 (p[0]) | (p[0] >> 16)) ^ (p[0] >> 8)) & 0xffff0000U) ^ (p[0] >> 24) ^ ((p[0] & 0xff00U) << 8) ^ ((p[0] & 0xff0000U) >> 8);
      35  }
      36  
      37  /* { dg-final { scan-tree-dump-times "= __builtin_bswap32 \\\(" 4 "optimized" } } */