1  /* PR target/108044 */
       2  /* { dg-do compile { target int128 } } */
       3  /* { dg-options "-O2" } */
       4  
       5  static inline unsigned __int128
       6  foo (unsigned long long x, unsigned long long y)
       7  {
       8    return ((unsigned __int128) x << 64) | y;
       9  }
      10  
      11  void
      12  bar (unsigned __int128 *p, unsigned long long x)
      13  {
      14    p[0] = foo (x, 0xdeadbeefcafebabeULL);
      15  }
      16  
      17  void
      18  baz (unsigned __int128 *p, unsigned long long x)
      19  {
      20    p[0] = foo (0xdeadbeefcafebabeULL, x);
      21  }
      22  
      23  void
      24  qux (unsigned __int128 *p, unsigned long long x)
      25  {
      26    p[0] = foo (x, 0xffffffffcafebabeULL);
      27  }
      28  
      29  void
      30  corge (unsigned __int128 *p, unsigned long long x)
      31  {
      32    p[0] = foo (0xffffffffcafebabeULL, x);
      33  }