1  /* { dg-do run } */
       2  /* { dg-additional-options "-w -Wno-psabi" } */
       3  
       4  #include "tree-vect.h"
       5  
       6  typedef int v4si __attribute__((vector_size(16)));
       7  typedef int v8si __attribute__((vector_size(32)));
       8  
       9  void __attribute__((noipa)) test_lo (v4si *dst, v8si src)
      10  {
      11    (*dst)[0] = src[0];
      12    (*dst)[1] = src[1];
      13    (*dst)[2] = src[2];
      14    (*dst)[3] = src[3];
      15  }
      16  
      17  void __attribute__((noipa)) test_hi (v4si *dst, v8si src)
      18  {
      19    (*dst)[0] = src[4];
      20    (*dst)[1] = src[5];
      21    (*dst)[2] = src[6];
      22    (*dst)[3] = src[7];
      23  }
      24  
      25  void __attribute__((noipa)) test_even (v4si *dst, v8si src)
      26  {
      27    (*dst)[0] = src[0];
      28    (*dst)[1] = src[2];
      29    (*dst)[2] = src[4];
      30    (*dst)[3] = src[6];
      31  }
      32  
      33  void __attribute__((noipa)) test_odd (v4si *dst, v8si src)
      34  {
      35    (*dst)[0] = src[1];
      36    (*dst)[1] = src[3];
      37    (*dst)[2] = src[5];
      38    (*dst)[3] = src[7];
      39  }
      40  
      41  int main()
      42  {
      43    check_vect ();
      44    v8si v = (v8si) { 0, 1, 2, 3, 4, 5, 6, 7 };
      45    v4si dst;
      46    test_lo (&dst, v);
      47    if (dst[0] != 0 || dst[1] != 1 || dst[2] != 2 || dst[3] != 3)
      48      abort ();
      49    test_hi (&dst, v);
      50    if (dst[0] != 4 || dst[1] != 5 || dst[2] != 6 || dst[3] != 7)
      51      abort ();
      52    test_even (&dst, v);
      53    if (dst[0] != 0 || dst[1] != 2 || dst[2] != 4 || dst[3] != 6)
      54      abort ();
      55    test_odd (&dst, v);
      56    if (dst[0] != 1 || dst[1] != 3 || dst[2] != 5 || dst[3] != 7)
      57      abort ();
      58    return 0;
      59  }