swpおよびnoswp ディレクティブは、ループにソフトウェアのパイプライン処理を行うかどうかを指示します。swp ディレクティブは、データ依存性を使用しません。しかし、プロファイル・カウントまたはlop-sidedコントロール・フローに基づいた手法を上書きします。このディレクティブの構文は次のとおりです。
#pragma swp
#pragma noswp
#pragma swp
for (i=0; i<m ; i++)
{
if (a[i]==0)
{
b[i]=a[i]+1;
}
else
{
b[i]=a[i]*2;
}
}
swp ディレクティブで起動されるソフトウェアによるパイプライン処理の最適化は、最も内側のループをスケジューリングする命令を適用します。また、ループ内で命令が異なるステージに分割され、増大した命令レベルの並列処理を許可します。これで、長い待ち時間の演算による影響を減らし、結果として、より速いループを実行します。ソフトウェアのパイプライン処理に選択されるループは、インライン化されないプロシージャ呼出しを含まない、常に最も内側のループです。最適化は、完全にアンロールされたループを最も内側のループとしてもはや認識しないため、完全にアンロールするループは、追加のループを最も内側のループにすることができます。最適化のレポートをリクエスト、および表示して、ソフトウェアのパイプライン処理が適用されたかどうかを確認できます。(「最適化機構レポートの作成」を参照してください。)