/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-march=pentium4" } */
/* { dg-require-effective-target ilp32 } */

#include <xmmintrin.h>
#include <stdio.h>
#include "../../gcc.dg/i386-cpuid.h"

int main(int argc, char** argv) {
  float a = 1.0f;
  float b = 2.0f;
  float c = 3.0f;
  float r;

  unsigned long cpu_facilities;

  cpu_facilities = i386_cpuid ();

  if ((cpu_facilities & (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV))
      != (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV))
    /* If host has no vector support, pass.  */
    return 0;

  __m128 v = _mm_set_ps(a, b, c, 0);
  
  v = (__m128)_mm_srli_si128((__m128i)v, 4);
  _mm_store_ss(&r, v);
  if (r != 3.0f)
    abort ();
  exit (0);
}
