1 /* { dg-require-effective-target vect_simd_clones } */
2 /* { dg-additional-options "-fopenmp-simd -ffast-math" } */
9 float *x1
, *z1
, *t1
, *t2
;
11 static void inline bar (const float cx
, float cy
,
15 for (j
= 0; j
< N
; ++j
)
17 const float dx
= cx
- px
[j
];
18 const float dy
= cy
- py
[j
];
24 __attribute__((noinline
, noclone
)) void foo1 (int n
)
29 bar (px
[i
], py
[i
], x1
+i
, z1
+i
);
32 __attribute__((noinline
, noclone
)) void foo2 (int n
)
36 bar (px
[i
], py
[i
], x1
+i
, z1
+i
);
42 float *X
= (float*)malloc (N
* 8 * sizeof (float));
57 px
[i
] = (float) (i
+2);
58 tx
[i
] = (float) (i
+1);
59 py
[i
] = (float) (i
+4);
60 ty
[i
] = (float) (i
+3);
63 foo1 (n
); /* vector variant. */
66 t1
[i
] = x1
[i
]; x1
[i
] = 1.0f
;
67 t2
[i
] = z1
[i
]; z1
[i
] = 1.0f
;
69 foo2 (n
); /* scalar variant. */
72 if (x1
[i
] != t1
[i
] || z1
[i
] != t2
[i
])
76 /* { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" } } */