/* PR target/87214 */ /* { dg-do run { target { avx512vl } } } */ /* { dg-options "-O3 -mavx512vl -mtune=skylake-avx512" } */ #define AVX512VL #define AVX512F_LEN 512 #define AVX512F_LEN_HALF 256 #include "avx512f-check.h" struct s { unsigned long a, b, c; }; void __attribute__ ((noipa)) foo (struct s *restrict s1, struct s *restrict s2, int n) { for (int i = 0; i < n; ++i) { s1[i].b = s2[i].b; s1[i].c = s2[i].c; s2[i].c = 0; } } #define N 12 static void test_256 (void) { struct s s1[N], s2[N]; for (unsigned int j = 0; j < N; ++j) { s2[j].a = j * 5; s2[j].b = j * 5 + 2; s2[j].c = j * 5 + 4; } foo (s1, s2, N); for (unsigned int j = 0; j < N; ++j) if (s1[j].b != j * 5 + 2) __builtin_abort (); } static void test_128 (void) { }