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 | NOUNROLL | UNROLL |
LOOP COUNT | NOVECTOR1 | VECTOR ALIGNED1 |
NOPARALLEL | PARALLEL | VECTOR ALWAYS1 |
NOPREFETCH | PREFETCH | VECTOR NONTEMPORAL1 |
NOSWP2 | SWP2 | VECTOR UNALIGNED1 |
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.
Example
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