1  /* { dg-do compile { target int128 } } */
       2  /* { dg-options "-O2 -msse2" } */
       3  
       4  typedef unsigned __int128 v1ti __attribute__ ((__vector_size__ (16)));
       5  
       6  v1ti x;
       7  v1ti y;
       8  v1ti z;
       9  
      10  void and2()
      11  {
      12    x &= y;
      13  }
      14  
      15  void and3()
      16  {
      17    x = y & z;
      18  }
      19  
      20  void ior2()
      21  {
      22    x |= y;
      23  }
      24  
      25  void ior3()
      26  {
      27    x = y | z;
      28  }
      29  
      30  
      31  void xor2()
      32  {
      33    x ^= y;
      34  }
      35  
      36  void xor3()
      37  {
      38    x =  y ^ z;
      39  }
      40  
      41  void not1()
      42  {
      43    x = ~x;
      44  }
      45  
      46  void not2()
      47  {
      48    x = ~y;
      49  }
      50  
      51  /* { dg-final { scan-assembler-times "pand" 2 } } */
      52  /* { dg-final { scan-assembler-times "por" 2 } } */
      53  /* { dg-final { scan-assembler-times "pxor" 4 } } */