1 /* { dg-require-effective-target vect_double } */
2 /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
6 double x
[1024], y
[1024];
8 void __attribute__((noipa
)) foo()
10 for (int i
= 0; i
< 512; ++i
)
17 void __attribute__((noipa
)) bar()
19 for (int i
= 0; i
< 512; ++i
)
26 void __attribute__((noipa
)) baz()
28 for (int i
= 0; i
< 512; ++i
)
35 void __attribute__((noipa
)) boo()
37 for (int i
= 0; i
< 512; ++i
)
39 x
[2*i
] = y
[2*(511-i
)];
40 x
[2*i
+1] = y
[2*(511-i
)];
49 for (int i
= 0; i
< 1024; ++i
)
53 __asm__
volatile ("");
58 for (int i
= 0; i
< 1024; ++i
)
62 for (int i
= 0; i
< 1024; ++i
)
65 __asm__
volatile ("");
70 for (int i
= 0; i
< 1024; ++i
)
71 if (x
[i
] != y
[2*(i
/2)])
74 for (int i
= 0; i
< 1024; ++i
)
77 __asm__
volatile ("");
82 for (int i
= 0; i
< 1024; ++i
)
83 if (x
[i
] != y
[511 - i
/2])
86 for (int i
= 0; i
< 1024; ++i
)
89 __asm__
volatile ("");
94 for (int i
= 0; i
< 1024; ++i
)
95 if (x
[i
] != y
[2*(511 - i
/2)])
101 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" } } */