説明
OCCURRENCE プラグマまたは指示子では、関数やループをパイプライン処理する際に次を指定します。パイプライン処理された関数やループ内で呼び出されるパイプライン処理された関数のコードは、外側の関数やループよりも低いレートで実行されます。低いレートで実行することで、そのパイプライン処理された呼び出しは、より低いレートでパイプライン処理され、最上位のパイプライン内で共有される可能性があります。次に例を示します。
- ループは N 回反復する。
- ループの一部は条件文で有効になり、M 回しか実行されない (N は M の整数倍)。
- 条件文で有効になるコードの実行頻度は N/M。
領域に実行頻度を指定すると、その領域内の関数およびループがそれを含む関数またはループよりも遅い開始間隔でパイプライン処理されます。
構文
syn.directive.occurrence=[OPTIONS] <location>
-
<location>: 実行速度が遅いパイプライン処理された関数呼び出しを含むコード ブロックを指定します。
オプション
-
cycle=<int> - N/M の実行頻度を指定します。
- N: 領域を含む関数/ループの実行回数。
- M: 条件文領域の実行回数。
重要: N は M の整数倍数である必要があります。 -
off=true - 指定された関数の発生を無効にします。
例
関数 foo の領域 Cond_Region の実行頻度を 4 に指定します。この領域は、それを含むコードよりも 4 倍低速で実行されます。
syn.directive.occurrence=cycle=4 foo/Cond_Region