1 /* PR tree-optimization/60823 */
3 /* { dg-require-effective-target vect_simd_clones } */
4 /* { dg-options "-O2 -fopenmp-simd" } */
7 #pragma omp declare simd simdlen(2) notinbranch
9 #pragma omp declare simd simdlen(4) notinbranch
11 __attribute__((noinline
)) int
12 foo (double c1
, double c2
)
14 double z1
= c1
, z2
= c2
;
17 for (i
= 0; i
< 5; i
++)
19 res
= (z1
* z1
+ z2
* z2
> 4.0) ? (i
< res
? i
: res
) : res
;
20 z1
= c1
+ z1
* z1
- z2
* z2
;
21 z2
= c2
+ 2.0 * z1
* z2
;
28 __attribute__((noinline
, noclone
)) void
29 bar (double *x
, double *y
)
31 asm volatile ("" : : "rm" (x
), "rm" (y
) : "memory");
38 double c
[4] = { 0.0, 1.0, 0.0, 1.0 };
39 double d
[4] = { 0.0, 1.0, 2.0, 0.0 };
42 #pragma omp simd safelen(4)
43 for (i
= 0; i
< 4; i
++)
44 e
[i
] = foo (c
[i
], d
[i
]);
45 if (e
[0] != 3 || e
[1] != 1 || e
[2] != 1 || e
[3] != 2)