#include <stdio.h>
#include <emmintrin.h>
typedef union {
char ary[16];
__m128i vec;
} vectype;
vectype ref;
int __attribute__ ((__noinline__)) scare (vectype);
int __attribute__ ((__noinline__))
scare (vectype vec)
{
int i;
for (i=0; i<16; i++)
if (vec.ary[i] != ref.ary[i])
return -1;
return 0;
}
int main( void )
{
vectype v;
ref.vec = (const __m128i) { 0x32100123456789ABULL, 0xFEDCBA987654ULL };
v.vec = _mm_srli_si128( (const __m128i) { 0x0123456789ABCDEFULL, 0xFEDCBA9876543210ULL }, 2 );
return scare (v);
}