blob: d490c995b141e96be09847abe25e01aef4b2c15a [file] [log] [blame]
/* { dg-do run } */
/* { dg-require-effective-target vsx_hw } */
/* { dg-options "-O2 -mvsx" } */
/* Verify there is no warning message. */
#define NO_WARN_X86_INTRINSICS 1
#include <emmintrin.h>
#define N 5
__attribute__ ((noipa)) __m128i
test1 (__m128i v)
{
return _mm_bslli_si128 (v, N);
}
__attribute__ ((noipa)) __m128i
test2 (__m128i v)
{
return _mm_slli_si128 (v, N);
}
typedef union
{
__m128i x;
unsigned char a[16];
} union128i_ub;
int main()
{
union128i_ub v;
v.x
= _mm_set_epi8 (1, 2, 3, 4, 10, 20, 30, 90, 80, 40, 100, 15, 98, 25, 98, 7);
union128i_ub r1, r2;
r1.x = test1 (v.x);
r2.x = test2 (v.x);
for (int i = 0; i < 16; i++)
if (r1.a[i] != r2.a[i])
__builtin_abort();
return 0;
}