/* PR middle-end/32912 */
/* { dg-do run } */
/* { dg-options "-O2 -w" } */
/* { dg-additional-options "-fno-common" { target hppa*-*-hpux* } } */
/* { dg-additional-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-require-effective-target sse_runtime { target { i?86-*-* x86_64-*-* } } } */

extern void abort (void);

typedef int __m128i __attribute__ ((__vector_size__ (16)));

__m128i a, b, c, d, e, f;

void
foo (__m128i x)
{
  a = x ^ ~x;
  b = ~x ^ x;
  c = x | ~x;
  d = ~x | x;
  e = x & ~x;
  f = ~x & x;
}

int
main (void)
{
  union { __m128i v; int i[sizeof (__m128i) / sizeof (int)]; } u;
  int i;

  for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++)
    u.i[i] = i * 49 - 36;
  foo (u.v);
#define check(x, val) \
  u.v = (x); \
  for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++) \
    if (u.i[i] != (val)) \
      abort ()

  check (a, ~0);
  check (b, ~0);
  check (c, ~0);
  check (d, ~0);
  check (e, 0);
  check (f, 0);
  return 0;
}
