Itanium® ベース・アプリケーションのパイプライン化

swp および noswp ディレクティブは、ループにソフトウェアのパイプライン化を行うかどうかを指示します。swp ディレクティブは、データ依存性を使用しません。しかし、プロファイル・カウントまたは lop-sided コントロール・フローに基づいた手法を上書きします。このディレクティブの構文は次のとおりです:

#pragma swp

#pragma noswp

swp ディレクティブの例

#pragma swp

for (i=0; i<m ; i++)

{

   if (a[i]==0)

   {

      b[i]=a[i]+1;

   }

   else

   {

      b[i]=a[i]*2;

   }

}

swp ディレクティブで起動されるソフトウェアのパイプライン化の最適化は、最も内側のループをスケジューリングする命令を適用します。また、ループ内で命令が異なるステージに分割され、増大した命令レベルの並列処理を許可します。これで、長い待ち時間の演算による影響を減らし、結果として、より速いループを実行します。ソフトウェアのパイプライン化に選択されるループは、インライン化されないプロシージャ呼び出しを含まない、常に最も内側のループです。最適化は、完全にアンロールされたループを最も内側のループとしてもはや認識しないため、完全にアンロールするループは、追加のループを最も内側のループにすることができます。最適化のレポートをリクエスト、および表示して、ソフトウェアのパイプライン化が適用されたかどうかを確認できます (「最適化レポートの生成」を参照してください)。