(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr32912-2.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -w" } */
       3  
       4  extern void abort (void);
       5  
       6  #if(__SIZEOF_INT__ >= 4)
       7  # define TYPE      int
       8  # define TYPED(a)  a
       9  
      10  #elif(__SIZEOF_INT__ > 2)
      11  # define TYPE      long
      12  # define TYPED(a)  a##L
      13  
      14  #else
      15  # define TYPE      long long
      16  # define TYPED(a)  a##LL
      17  #endif
      18  
      19  
      20  typedef TYPE __m128i __attribute__ ((__vector_size__ (16)));
      21  
      22  __m128i
      23  foo (void)
      24  {
      25    __m128i x = { 0x11111111, 0x22222222, 0x44444444 };
      26    return x;
      27  }
      28  
      29  __m128i
      30  bar (void)
      31  {
      32    __m128i x = { 0x11111111, 0x22222222, 0x44444444 };
      33    return ~x;
      34  }
      35  
      36  int
      37  main (void)
      38  {
      39    union { __m128i v; TYPE i[sizeof (__m128i) / sizeof (TYPE)]; } u, v;
      40    int i;
      41  
      42    u.v = foo ();
      43    v.v = bar ();
      44    for (i = 0; i < sizeof (u.i) / sizeof (u.i[0]); i++)
      45      {
      46        if (u.i[i] != ~v.i[i])
      47  	abort ();
      48  
      49        if (i < 3)
      50  	{
      51  	  if (u.i[i] != (TYPED (0x11111111) << i))
      52  	    abort ();
      53  	}
      54        else if (u.i[i])
      55  	abort ();
      56      }
      57    return 0;
      58  }