10SN/A/* { dg-do run } */ 22362SN/A/* { dg-options "-O2 -msse2" } */ 30SN/A/* { dg-require-effective-target sse2 } */ 40SN/A 50SN/A#ifndef CHECK_H 60SN/A#define CHECK_H "sse2-check.h" 72362SN/A#endif 80SN/A 92362SN/A#ifndef TEST 100SN/A#define TEST sse2_test 110SN/A#endif 120SN/A 130SN/A#define N 0xb 140SN/A 150SN/A#include CHECK_H 160SN/A 170SN/A#include <emmintrin.h> 180SN/A 190SN/Astatic __m128i 200SN/A__attribute__((noinline, unused)) 212362SN/Atest (__m128i s1) 222362SN/A{ 232362SN/A return _mm_slli_epi16 (s1, N); 240SN/A} 250SN/A 260SN/Astatic void 270SN/ATEST (void) 280SN/A{ 290SN/A union128i_w u, s; 300SN/A short e[8] = {0}; 310SN/A int i; 320SN/A 330SN/A s.x = _mm_set_epi16 (1, 2, 3, 4, 5, 6, 0x7000, 0x9000); 340SN/A 350SN/A u.x = test (s.x); 360SN/A 370SN/A if (N < 16) 380SN/A for (i = 0; i < 8; i++) 390SN/A e[i] = s.a[i] << N; 400SN/A 410SN/A if (check_union128i_w (u, e)) 420SN/A abort (); 430SN/A} 440SN/A