1226458Sdas/* { dg-do run } */
2226458Sdas/* { dg-require-effective-target lp64 } */
3226458Sdas/* { dg-require-effective-target sse2 } */
4226458Sdas/* { dg-options "-O2 -msse2" } */
5226458Sdas
6226458Sdas#ifndef CHECK_H
7226458Sdas#define CHECK_H "sse2-check.h"
8226458Sdas#endif
9226458Sdas
10226458Sdas#ifndef TEST
11226458Sdas#define TEST sse2_test
12226458Sdas#endif
13226458Sdas
14226458Sdas#include CHECK_H
15226458Sdas
16226458Sdas#include <emmintrin.h>
17226458Sdas
18226458Sdasstatic __m128d
19226458Sdas__attribute__((noinline, unused))
20226458Sdastest (__m128d p, long long b)
21226458Sdas{
22226458Sdas  return _mm_cvtsi64_sd (p, b);
23226458Sdas}
24226458Sdas
25226458Sdasstatic void
26226458SdasTEST (void)
27226458Sdas{
28284810Stijl  union128d u, s;
29226458Sdas  long long b = 42949672951333LL;
30226458Sdas  double e[2];
31226458Sdas
32226458Sdas  s.x = _mm_set_pd (123.321, 456.987);
33226458Sdas
34226458Sdas  u.x = test (s.x, b);
35226458Sdas  e[0] = (double)b;
36226458Sdas  e[1] = s.a[1];
37226458Sdas  if (check_union128d (u, e))
38226458Sdas    abort ();
39226599Sdas}
40226599Sdas