SWP と NOSWP ディレクティブは、ループに対してソフトウェアのパイプライン化を行うかどうかを指示します。SWP ディレクティブは、データ依存性を使用しません。しかし、プロファイル・カウントまたは lop-sided コントロール・フローに基づいたヒューリスティックを上書きします。
SWP ディレクティブで起動されるソフトウェアのパイプライン化の最適化は、最も内側のループをスケジューリングする命令を適用します。また、ループ内で命令が異なるステージに分割され、増大した命令レベルの並列処理を許可します。これで、長い待ち時間の演算による影響を減らし、結果として、より速いループを実行します。ソフトウェアのパイプライン化に選択されるループは、インライン化されないプロシージャ呼び出しを含まない、常に最も内側のループです。最適化は、完全にアンロールされたループを最も内側のループとしてもはや認識しないため、完全にアンロールするループは、追加のループを最も内側のループにすることができます (-unroll[n] を参照してください)。最適化のレポートをリクエスト、および表示して、ソフトウェアのパイプライン化が適用されたかどうかを確認できます (「最適化機構レポートの作成」を参照してください)。
!DEC$ SWP
do i = 1, m
if (a(i) .eq.0) then
b(i) = a(i) + 1
else
b(i) = a(i)/c(i)
endif
enddo
これらのディレクティブの詳細は、『Intel® Fortran Language Reference』 (英語) の「General Directives」にある「Directive Enhanced Compilation」を参照してください。