1130561Sobrien/* { dg-do run } */ 2218822Sdim/* { dg-options "-O2 -msse2" } */ 3130561Sobrien/* { dg-require-effective-target sse2 } */ 468765Sobrien 5130561Sobrien#ifndef CHECK_H 677298Sobrien#define CHECK_H "sse2-check.h" 7130561Sobrien#endif 868765Sobrien 968765Sobrien#ifndef TEST 1068765Sobrien#define TEST sse2_test 1168765Sobrien#endif 12104834Sobrien 13104834Sobrien#include CHECK_H 14104834Sobrien 15104834Sobrien#include <emmintrin.h> 16104834Sobrien 17104834Sobrienstatic __m128d 18104834Sobrien__attribute__((noinline, unused)) 19104834Sobrientest (__m128d s1, __m128d s2) 20104834Sobrien{ 2168765Sobrien return _mm_max_pd (s1, s2); 2268765Sobrien} 2368765Sobrien 2468765Sobrienstatic void 2568765SobrienTEST (void) 2668765Sobrien{ 2768765Sobrien union128d u, s1, s2; 28218822Sdim double e[2]; 2968765Sobrien 3068765Sobrien s1.x = _mm_set_pd (2134.3343,1234.635654); 31130561Sobrien s2.x = _mm_set_pd (41124.234,2344.2354); 32130561Sobrien u.x = test (s1.x, s2.x); 33130561Sobrien 3468765Sobrien e[0] = s1.a[0] > s2.a[0] ? s1.a[0]:s2.a[0]; 35130561Sobrien e[1] = s1.a[1] > s2.a[1] ? s1.a[1]:s2.a[1]; 36130561Sobrien 37130561Sobrien if (check_union128d (u, e)) 38130561Sobrien abort (); 39130561Sobrien} 40130561Sobrien