1 /* PR tree-optimization/60823 */
3 /* { dg-require-effective-target vect_simd_clones } */
4 /* { dg-options "-O2 -fopenmp-simd" } */
6 #pragma omp declare simd simdlen(4) notinbranch
7 __attribute__((noinline
)) int
8 foo (double c1
, double c2
)
10 double z1
= c1
, z2
= c2
;
13 for (i
= 0; i
< 5; i
++)
15 res
= (z1
* z1
+ z2
* z2
> 4.0) ? (i
< res
? i
: res
) : res
;
16 z1
= c1
+ z1
* z1
- z2
* z2
;
17 z2
= c2
+ 2.0 * z1
* z2
;
24 __attribute__((noinline
, noclone
)) void
25 bar (double *x
, double *y
)
27 asm volatile ("" : : "rm" (x
), "rm" (y
) : "memory");
34 double c
[4] = { 0.0, 1.0, 0.0, 1.0 };
35 double d
[4] = { 0.0, 1.0, 2.0, 0.0 };
38 #pragma omp simd safelen(4)
39 for (i
= 0; i
< 4; i
++)
40 e
[i
] = foo (c
[i
], d
[i
]);
41 if (e
[0] != 3 || e
[1] != 1 || e
[2] != 1 || e
[3] != 2)