/* APPLE LOCAL file 5919583 */
/* { dg-do run { target i?86*-*-* } } */
/* { dg-options { -msse3 } } */
#include <stdio.h>
#include <emmintrin.h>

typedef union {
  char ary[16];
  __m128i vec;
} vectype;

vectype ref;

int __attribute__ ((__noinline__)) scare (vectype);
int __attribute__ ((__noinline__))
scare (vectype vec)
{
  int i;
  for (i=0; i<16; i++)
    if (vec.ary[i] != ref.ary[i])
      return -1;	/* fail */
  return 0;	/* pass */
}

int main( void )
{
  vectype v;

  ref.vec = (const __m128i) { 0x32100123456789ABULL, 0xFEDCBA987654ULL };
  v.vec = _mm_srli_si128(( (const __m128i) { 0x0123456789ABCDEFULL, 0xFEDCBA9876543210ULL }), 2 );
  /*
  {
    int i;
    for( i = 0; i < 16; i++ )
      printf( "%2.2x", ((unsigned char*) &v)[i] );
  }
  printf ("scare = %d\n", scare(v));
  */

  return scare (v);
}
