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 ALIGNED1

LOOP COUNT

PARALLEL

VECTOR ALWAYS1

NOPARALLEL

PREFETCH

VECTOR NONTEMPORAL1

NOPREFETCH

SWP2

VECTOR TEMPORAL1

NOSWP2

UNROLL

VECTOR UNALIGNED1

NOUNROLL

UNROLL_AND_JAM

 

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