PR tree-optimization/84740
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / bb-slp-subgroups-2.c
blob36938d05d100f598904c944653eaacd3c60ce8d6
1 /* { dg-require-effective-target vect_int } */
2 /* { dg-require-effective-target vect_perm } */
3 /* PR tree-optimization/67682. */
5 #include "tree-vect.h"
7 int __attribute__((__aligned__(8))) a[8];
8 int __attribute__((__aligned__(8))) b[4];
10 __attribute__ ((noinline)) void
11 test ()
13 a[0] = b[2] + 1;
14 a[1] = b[0] + 2;
15 a[2] = b[1] + 3;
16 a[3] = b[1] + 4;
17 a[4] = b[3] * 3;
18 a[5] = b[0] * 4;
19 a[6] = b[2] * 5;
20 a[7] = b[1] * 7;
23 int
24 main (int argc, char **argv)
26 check_vect ();
28 for (int i = 0; i < 8; i++)
29 a[i] = 1;
30 for (int i = 0; i < 4; i++)
31 b[i] = i + 4;
32 __asm__ volatile ("" : : : "memory");
33 test (a, b);
34 __asm__ volatile ("" : : : "memory");
35 if ((a[0] != 7) || a[1] != 6 || (a[2] != 8) || (a[3] != 9)
36 || (a[4] != 21) || (a[5] != 16) || (a[6] != 30) || (a[7] != 35))
37 abort ();
38 return 0;
41 /* { dg-final { scan-tree-dump-times "Basic block will be vectorized using SLP" 1 "slp2" } } */
42 /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */