While it is a construct, not a directive, it doesn't result in any code generated at that point, and especially in #pragma omp simd might be useful.
Consider
Code: Select all
int a[1024], b[1024];
void foo ()
{
int i;
#pragma omp simd safelen (8)
for (i = 0; i < 1024; i++)
{
#pragma omp declare simd simdlen (8) linear (b)
extern int bar (int, int b);
a[i] = bar (a[i], i) + b[i];
}