1236644Semax/* { dg-do run } */ 2236644Semax/* { dg-options "-O2 -msse2" } */ 3236644Semax/* { dg-require-effective-target sse2 } */ 4236644Semax 5236644Semax#ifndef CHECK_H 6236645Semax#define CHECK_H "sse2-check.h" 7236644Semax#endif 8236644Semax 9236644Semax#ifndef TEST 10236644Semax#define TEST sse2_test 11236644Semax#endif 12236644Semax 13236644Semax#include CHECK_H 14236645Semax 15236645Semax#include <emmintrin.h> 16236645Semax 17236645Semaxstatic __m128i 18236645Semax__attribute__((noinline, unused)) 19236644Semaxtest (__m128i s1, __m128i c) 20236644Semax{ 21236645Semax return _mm_sll_epi64 (s1, c); 22236645Semax} 23236645Semax 24236645Semaxstatic void 25236644SemaxTEST (void) 26236644Semax{ 27236644Semax union128i_q u, s, c; 28236644Semax long long e[2] = {0}; 29236644Semax int i; 30236644Semax 31236644Semax s.x = _mm_set_epi64x (-1, 0xf); 32236644Semax c.x = _mm_set_epi64x (60,50); 33236644Semax 34236644Semax u.x = test (s.x, c.x); 35236644Semax 36236644Semax if (c.a[0] < 64) 37236644Semax for (i = 0; i < 2; i++) 38236644Semax e[i] = s.a[i] << c.a[0]; 39236644Semax 40236644Semax if (check_union128i_q (u, e)) 41236644Semax abort (); 42236644Semax} 43236644Semax