i386: Adjust rtx cost for imulq and imulw [PR115749]
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / slp-48.c
blob6c611e6d39c9a06014d86d5d6998c5f30b9f94e3
1 /* { dg-require-effective-target vect_int } */
2 /* { dg-require-effective-target vect_perm } */
4 #include "tree-vect.h"
6 int x[1024], y[1024];
8 void __attribute__((noipa)) foo()
10 for (int i = 0; i < 512; ++i)
12 x[1023 - (2*i+1)] = y[2*i];
13 x[1023 - (2*i)] = y[2*i+1];
17 void __attribute__((noipa)) bar()
19 for (int i = 0; i < 512; ++i)
21 x[1023 - (2*i+1)] = y[2*i+1];
22 x[1023 - (2*i)] = y[2*i];
26 int
27 main ()
29 check_vect ();
31 for (int i = 0; i < 1024; ++i)
33 x[i] = 0;
34 y[i] = i;
35 __asm__ volatile ("");
38 foo ();
39 #pragma GCC novector
40 for (int i = 0; i < 1024; ++i)
41 if (x[i] != y[1023 - i^1])
42 abort ();
44 for (int i = 0; i < 1024; ++i)
46 x[i] = 0;
47 __asm__ volatile ("");
50 bar ();
51 #pragma GCC novector
52 for (int i = 0; i < 1024; ++i)
53 if (x[i] != y[1023 - i])
54 abort ();
56 return 0;
59 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" } } */