1 /* { dg-require-effective-target vect_double } */
2 /* { dg-additional-options "-ffast-math" } */
3 /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
7 extern long int lrint (double);
8 extern void abort (void);
12 __attribute__((noinline
, noclone
)) void
16 for (i
= 0; i
< n
; i
++)
18 a
[4 * i
+ 0] = lrint (b
[4 * i
+ 0]) + 1;
19 a
[4 * i
+ 1] = lrint (b
[4 * i
+ 1]) + 2;
20 a
[4 * i
+ 2] = lrint (b
[4 * i
+ 2]) + 3;
21 a
[4 * i
+ 3] = lrint (b
[4 * i
+ 3]) + 4;
25 __attribute__((noinline
, noclone
)) void
29 for (i
= 0; i
< 2 * n
; i
++)
31 a
[2 * i
+ 0] = lrint (b
[2 * i
+ 0]) + 1;
32 a
[2 * i
+ 1] = lrint (b
[2 * i
+ 1]) + 2;
36 __attribute__((noinline
, noclone
)) void
40 for (i
= 0; i
< 64; i
++)
41 a
[i
] = lrint (b
[i
]) + 1;
44 __attribute__((noinline
, noclone
)) void
48 for (i
= 0; i
< n
; i
++)
50 a
[4 * i
+ 0] = lrint (b
[4 * i
+ 0]);
51 a
[4 * i
+ 1] = lrint (b
[4 * i
+ 1]);
52 a
[4 * i
+ 2] = lrint (b
[4 * i
+ 2]);
53 a
[4 * i
+ 3] = lrint (b
[4 * i
+ 3]);
57 __attribute__((noinline
, noclone
)) void
61 for (i
= 0; i
< 2 * n
; i
++)
63 a
[2 * i
+ 0] = lrint (b
[2 * i
+ 0]);
64 a
[2 * i
+ 1] = lrint (b
[2 * i
+ 1]);
68 __attribute__((noinline
, noclone
)) void
72 for (i
= 0; i
< 64; i
++)
76 __attribute__((noinline
, noclone
)) int
81 for (i
= 0; i
< 64; i
++)
84 b
[i
] = ((i
& 1) ? -4 * i
: 4 * i
) + 0.25;
88 for (i
= 0; i
< 64; i
++)
89 if (a
[i
] != ((i
& 1) ? -4 * i
: 4 * i
) + 1 + (i
& 3))
95 for (i
= 0; i
< 64; i
++)
96 if (a
[i
] != ((i
& 1) ? -4 * i
: 4 * i
) + 1 + (i
& 1))
102 for (i
= 0; i
< 64; i
++)
103 if (a
[i
] != ((i
& 1) ? -4 * i
: 4 * i
) + 1)
109 for (i
= 0; i
< 64; i
++)
110 if (a
[i
] != ((i
& 1) ? -4 * i
: 4 * i
))
116 for (i
= 0; i
< 64; i
++)
117 if (a
[i
] != ((i
& 1) ? -4 * i
: 4 * i
))
123 for (i
= 0; i
< 64; i
++)
124 if (a
[i
] != ((i
& 1) ? -4 * i
: 4 * i
))
136 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 6 "vect" { target vect_call_lrint } } } */
137 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 6 "vect" { target vect_call_lrint } } } */