1  /* { dg-do run } */
       2  /* { dg-require-effective-target vsx_hw } */
       3  /* { dg-options "-O2 -mvsx" } */
       4  
       5  /* Verify there is no warning message.  */
       6  
       7  #define NO_WARN_X86_INTRINSICS 1
       8  
       9  #include <emmintrin.h>
      10  
      11  #define N 5
      12  
      13  __attribute__ ((noipa)) __m128i
      14  test1 (__m128i v)
      15  {
      16    return _mm_bslli_si128 (v, N);
      17  }
      18  
      19  __attribute__ ((noipa)) __m128i
      20  test2 (__m128i v)
      21  {
      22    return _mm_slli_si128 (v, N);
      23  }
      24  
      25  typedef union
      26  {
      27    __m128i x;
      28    unsigned char a[16];
      29  } union128i_ub;
      30  
      31  int main()
      32  {
      33    union128i_ub v;
      34    v.x
      35      = _mm_set_epi8 (1, 2, 3, 4, 10, 20, 30, 90, 80, 40, 100, 15, 98, 25, 98, 7);
      36  
      37    union128i_ub r1, r2;
      38    r1.x = test1 (v.x);
      39    r2.x = test2 (v.x);
      40  
      41    for (int i = 0; i < 16; i++)
      42      if (r1.a[i] != r2.a[i])
      43        __builtin_abort();
      44  
      45    return 0;
      46  }
      47