1/* { dg-do run } */ 2/* { dg-options "-O3 -msse2" } */ 3/* { dg-require-effective-target sse2 } */ 4 5#include "sse2-check.h" 6 7#include <emmintrin.h> 8 9__m128i foo (char) __attribute__((noinline)); 10__m128i foo (char x) { 11 return _mm_set1_epi8(x); 12} 13__m128i bar (char) __attribute__((noinline)); 14__m128i bar (char x) { 15 return _mm_set_epi8 (x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x); 16} 17 18static void 19sse2_test (void) { 20 int i, j; 21 union u { __m128i v; char c[16]; }; 22 union u x, y; 23 24 for (i = -128; i <= 127; i++) 25 { 26 x.v = foo ((char)i); 27 y.v = bar ((char)i); 28 for (j=0; j<16; j++) 29 if (x.c[j] != y.c[j]) 30 abort(); 31 } 32} 33 34