1/* PR 12902 */
2/* { dg-do compile } */
3/* { dg-options "-O1 -msse" } */
4/* { dg-require-effective-target sse } */
5
6#include <xmmintrin.h>
7
8typedef union
9{
10  int i[4];
11  float f[4];
12  __m128 v;
13} vector4_t;
14
15void
16swizzle (const void *a, vector4_t * b, vector4_t * c)
17{
18  b->v = _mm_loadl_pi (b->v, (__m64 *) a);
19  c->v = _mm_loadl_pi (c->v, ((__m64 *) a) + 1);
20}
21
22/* While one legal rendering of each statement would be movaps;movlps;movaps,
23   we can implmenent this with just movlps;movlps.  Since we do now, anything
24   less would be a regression.  */
25/* { dg-final { scan-assembler-not "movaps" } } */
26/* { dg-final { scan-assembler "movlps" } } */
27