/* APPLE LOCAL begin radar 4286110 */
/* { dg-do compile { target "i?86-*-darwin*" } } */
/* { dg-options "-O3 -msse2" } */
/* { dg-final { scan-assembler "punpcklwd" } } */
extern void abort();
#include <emmintrin.h>
__m128i foo (short) __attribute__((noinline));
__m128i foo (short x) {
  return _mm_set1_epi16(x);
}
__m128i bar (short) __attribute__((noinline));
__m128i bar (short x) {
  return _mm_set_epi16 (x,x,x,x,x,x,x,x);
}

main() {
  int i, j;
  union u { __m128i v; short c[8]; };
  union u x, y;
  for (i = -128; i <= 127; i++)
    {
      x.v = foo ((short)i);
      y.v = bar ((short)i);
      for (j=0; j<8; j++)
	if (x.c[j] != y.c[j])
	  abort();
    }
  return 0;
}
/* APPLE LOCAL end radar 4286110 */
