1206358Srpaulo/* { dg-do run } */
2206358Srpaulo/* { dg-options "-O2 -msse2" } */
3206358Srpaulo/* { dg-require-effective-target sse2 } */
4206358Srpaulo
5206358Srpaulo#ifndef CHECK_H
6206358Srpaulo#define CHECK_H "sse2-check.h"
7206358Srpaulo#endif
8206358Srpaulo
9206358Srpaulo#ifndef TEST
10206358Srpaulo#define TEST sse2_test
11206358Srpaulo#endif
12206358Srpaulo
13206358Srpaulo#include CHECK_H
14206358Srpaulo
15206358Srpaulo#include <emmintrin.h>
16206358Srpaulo
17206358Srpaulostatic __m128d
18206358Srpaulo__attribute__((noinline, unused))
19206358Srpaulotest (__m128d s1, __m128d s2)
20206358Srpaulo{
21206358Srpaulo  return _mm_min_pd (s1, s2);
22206358Srpaulo}
23206358Srpaulo
24206358Srpaulostatic void
25206358SrpauloTEST (void)
26206358Srpaulo{
27206358Srpaulo  union128d u, s1, s2;
28206358Srpaulo  double e[2];
29214069Sbschmidt
30206358Srpaulo  s1.x = _mm_set_pd (2134.3343,1234.635654);
31206358Srpaulo  s2.x = _mm_set_pd (41124.234,2344.2354);
32206358Srpaulo  u.x = test (s1.x, s2.x);
33214069Sbschmidt
34206358Srpaulo  e[0] = s1.a[0] < s2.a[0] ? s1.a[0]:s2.a[0];
35206358Srpaulo  e[1] = s1.a[1] < s2.a[1] ? s1.a[1]:s2.a[1];
36206358Srpaulo
37206415Srpaulo  if (check_union128d (u, e))
38206415Srpaulo    abort ();
39206358Srpaulo}
40206358Srpaulo