/* { dg-do compile } */ /* { dg-options "-mavx512vl -mavx512bw -O2 -mtune=generic -mprefer-vector-width=512 -fdump-tree-slp2" } */ /* { dg-final { scan-tree-dump-times ".REDUC_PLUS" 3 "slp2" } } */ /* { dg-final { scan-tree-dump-times ".REDUC_IOR" 4 "slp2" } } */ int __attribute__((noipa)) plus_v4si (int* a) { int sum = 0; sum += a[0]; sum += a[1]; sum += a[2]; sum += a[3]; return sum; } short __attribute__((noipa)) plus_v8hi (short* a) { short sum = 0; sum += a[0]; sum += a[1]; sum += a[2]; sum += a[3]; sum += a[4]; sum += a[5]; sum += a[6]; sum += a[7]; return sum; } long long __attribute__((noipa)) plus_v8di (long long* a) { long long sum = 0; sum += a[0]; sum += a[1]; sum += a[2]; sum += a[3]; sum += a[4]; sum += a[5]; sum += a[6]; sum += a[7]; return sum; } int __attribute__((noipa)) ior_v4si (int* a) { int sum = 0; sum |= a[0]; sum |= a[1]; sum |= a[2]; sum |= a[3]; return sum; } short __attribute__((noipa)) ior_v8hi (short* a) { short sum = 0; sum |= a[0]; sum |= a[1]; sum |= a[2]; sum |= a[3]; sum |= a[4]; sum |= a[5]; sum |= a[6]; sum |= a[7]; return sum; } long long __attribute__((noipa)) ior_v8di (long long* a) { long long sum = 0; sum |= a[0]; sum |= a[1]; sum |= a[2]; sum |= a[3]; sum |= a[4]; sum |= a[5]; sum |= a[6]; sum |= a[7]; return sum; } char __attribute__((noipa)) ior_v16qi (char* a) { char sum = 0; sum |= a[0]; sum |= a[1]; sum |= a[2]; sum |= a[3]; sum |= a[4]; sum |= a[5]; sum |= a[6]; sum |= a[7]; sum |= a[8]; sum |= a[9]; sum |= a[10]; sum |= a[11]; sum |= a[12]; sum |= a[13]; sum |= a[14]; sum |= a[15]; return sum; }