/* { dg-do run } */
/* { dg-options "-O3 -mpower8-vector -Wno-psabi" } */
/* { dg-require-effective-target p8vector_hw } */

#define NO_WARN_X86_INTRINSICS 1

#ifndef CHECK_H
#define CHECK_H "sse-check.h"
#endif

#include CHECK_H

#ifndef TEST
#define TEST sse_test_shufps_1
#endif

#define MASK 0xab

#include <xmmintrin.h>

float select4(const float *src, unsigned int control)
{
    switch(control) {
    case 0:
        return src[0];
    case 1:
        return src[1];
    case 2:
        return src[2];
    case 3:
        return src[3];
    }
    return -1;
}

static __m128
__attribute__((noinline, unused))
test (__m128 s1, __m128 s2)
{
  return _mm_shuffle_ps (s1, s2, MASK); 
}

static void TEST (void)
{
  union128 u, s1, s2;
  float e[4] =
    { 0.0 };

  s1.x = _mm_set_ps (1.1, 1.2, 1.3, 1.4);
  s2.x = _mm_set_ps (2.1, 2.2, 2.3, 2.4);
  u.x = test (s1.x, s2.x);

  e[0] = select4 (s1.a, (MASK >> 0) & 0x3);
  e[1] = select4 (s1.a, (MASK >> 2) & 0x3);
  e[2] = select4 (s2.a, (MASK >> 4) & 0x3);
  e[3] = select4 (s2.a, (MASK >> 6) & 0x3);

  if (check_union128 (u, e))
  abort ();
}
