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