Rules for Loop Directives that Affect Array Assignment Statements

When certain loop directives precede an array assignment statement, they affect the implicit loops that are generated by the compiler.

The following loop directives can affect array assignment statements:

IVDEP

NOVECTOR1

VECTOR ALIGNED

LOOP COUNT

PARALLEL

VECTOR ALWAYS

NOPARALLEL

PREFETCH

VECTOR NONTEMPORAL1

NOPREFETCH

SWP2

VECTOR NOVECTOR1

NOSWP2

UNROLL

VECTOR TEMPORAL1

NOUNROLL

UNROLL_AND_JAM

VECTOR UNALIGNED

1 i32, i64em

2 i64 only

Only one of the above directives can precede the array assignment statement (one-dimensional-array = expression) to affect it.

Other rules may apply to these directives. For more information, see the description of each directive.

Examples

Consider the following:

REAL A(10), B(10)

...

!DEC$ IVDEP

A = B + 3

This has the same effect as writing the following explicit loop:

!DEC$ IVDEP

DO I = 1, 10

A (I) = B (I) + 3

END DO