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 ()
29 bar(px
[i
], py
[i
], x1
+i
, z1
+i
);
32 __attribute__((noinline
, noclone
)) void foo2 ()
36 bar(px
[i
], py
[i
], x1
+i
, z1
+i
);
42 float *X
= (float*)malloc(N
* 8 * sizeof (float));
56 px
[i
] = (float) (i
+2);
57 tx
[i
] = (float) (i
+1);
58 py
[i
] = (float) (i
+4);
59 ty
[i
] = (float) (i
+3);
62 foo1 (); /* vector variant. */
65 t1
[i
] = x1
[i
]; x1
[i
] = 1.0f
;
66 t2
[i
] = z1
[i
]; z1
[i
] = 1.0f
;
68 foo2 (); /* scalar variant. */
71 if (x1
[i
] != t1
[i
] || z1
[i
] != t2
[i
])
75 /* { dg-final { scan-tree-dump "OUTER LOOP VECTORIZED" "vect" } } */