/* { dg-do run } */ /* { dg-additional-options "-w -Wno-psabi" } */ #include "tree-vect.h" typedef int v4si __attribute__((vector_size(16))); typedef int v8si __attribute__((vector_size(32))); void __attribute__((noipa)) test_lo (v4si *dst, v8si src) { (*dst)[0] = src[0]; (*dst)[1] = src[1]; (*dst)[2] = src[2]; (*dst)[3] = src[3]; } void __attribute__((noipa)) test_hi (v4si *dst, v8si src) { (*dst)[0] = src[4]; (*dst)[1] = src[5]; (*dst)[2] = src[6]; (*dst)[3] = src[7]; } void __attribute__((noipa)) test_even (v4si *dst, v8si src) { (*dst)[0] = src[0]; (*dst)[1] = src[2]; (*dst)[2] = src[4]; (*dst)[3] = src[6]; } void __attribute__((noipa)) test_odd (v4si *dst, v8si src) { (*dst)[0] = src[1]; (*dst)[1] = src[3]; (*dst)[2] = src[5]; (*dst)[3] = src[7]; } int main() { check_vect (); v8si v = (v8si) { 0, 1, 2, 3, 4, 5, 6, 7 }; v4si dst; test_lo (&dst, v); if (dst[0] != 0 || dst[1] != 1 || dst[2] != 2 || dst[3] != 3) abort (); test_hi (&dst, v); if (dst[0] != 4 || dst[1] != 5 || dst[2] != 6 || dst[3] != 7) abort (); test_even (&dst, v); if (dst[0] != 0 || dst[1] != 2 || dst[2] != 4 || dst[3] != 6) abort (); test_odd (&dst, v); if (dst[0] != 1 || dst[1] != 3 || dst[2] != 5 || dst[3] != 7) abort (); return 0; }