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