1  /* { dg-do run } */
       2  /* { dg-require-effective-target int128 } */
       3  /* { dg-options "-Wno-psabi" } */
       4  /* { dg-additional-options "-frename-registers -fno-tree-forwprop -fno-tree-fre -fira-algorithm=priority -mstringop-strategy=loop --param=hot-bb-frequency-fraction=0 -Wno-psabi" { target { x86_64-*-* i?86-*-* } } } */
       5  
       6  typedef unsigned char v64u8 __attribute__ ((vector_size (64)));
       7  typedef unsigned short v64u16 __attribute__ ((vector_size (64)));
       8  typedef unsigned int v64u32 __attribute__ ((vector_size (64)));
       9  typedef unsigned long long v64u64 __attribute__ ((vector_size (64)));
      10  typedef unsigned __int128 u128;
      11  typedef unsigned __int128 v64u128 __attribute__ ((vector_size (64)));
      12  
      13  int a, b, d, e;
      14  v64u64 c;
      15  
      16  v64u128
      17  foo (u128 g, v64u16 h, v64u32 i, v64u128 j)
      18  {
      19    c[e] = 0;
      20    j &= (i[1] <<= b);
      21    j >>= ((v64u128) h <= j);
      22    d = __builtin_popcountll (-((v64u8) i)[0]);
      23    return a + g + j;
      24  }
      25  
      26  int
      27  main (void)
      28  {
      29    v64u128 x = foo (0, (v64u16) { 0, 0, 0, 0, 0, 0, 0, 0, 5 }, (v64u32) { 2 },
      30  		   (v64u128) { });
      31    if (x[0] || x[1] || x[2] || x[3])
      32      __builtin_abort ();
      33    return 0;
      34  }