1/* { dg-do run } */
2/* { dg-options "-O2 -msse2" } */
3/* { dg-require-effective-target sse2 } */
4
5#ifndef CHECK_H
6#define CHECK_H "sse2-check.h"
7#endif
8
9#ifndef TEST
10#define TEST sse2_test
11#endif
12
13#include CHECK_H
14
15#include <emmintrin.h>
16#include <math.h>
17
18static __m128d
19__attribute__((noinline, unused))
20test (__m128d s1)
21{
22  return _mm_sqrt_pd (s1);
23}
24
25static void
26TEST (void)
27{
28  union128d u, s1;
29  double e[2];
30  int i;
31
32  s1.x = _mm_set_pd (2134.3343,1234.635654);
33  u.x = test (s1.x);
34
35  for (i = 0; i < 2; i++)
36    {
37      __m128d tmp = _mm_load_sd (&s1.a[i]);
38      tmp = _mm_sqrt_sd (tmp, tmp);
39      _mm_store_sd (&e[i], tmp);
40    }
41
42  if (check_union128d (u, e))
43    abort ();
44}
45