--reassociate_saturation--no_reassociate_saturation

これらのオプションは、サチュレート演算を使用するループ内でさらに強力な最適化を有効および無効にします。

Show/hide使用法

サチュレート加算には結合的なプロパティはありません。 したがって、デフォルトではコンパイラはサチュレート加算を再結合しません。 --reassociate_saturation は、サチュレート加算を再結合して最適化を実行するようにコンパイラに指示します。 --no_reassociate_saturation は、サチュレート加算の再結合を禁止するので、サチュレート演算に対する最適化のレベルを制限します。 --reassociate_saturation は、自動ベクトル化が --vectorize を使用して有効になっている場合に、コードのベクトル化などの最適化を有効にします。 また、--vectorize が指定されていない場合は、例えば -O3 -Otime を使用したコンパイル時などに他の最適化を有効にします。

Show/hide制約条件

サチュレート加算は結合的ではありません。そのため、--reassociate_saturation を有効にすると、式を縮小した結果の精度に影響が生じる可能性があります。

Show/hideデフォルト

デフォルトは --no_reassociate_saturation です。

Show/hide

次のコードはサチュレート加算を実行する関数 L_mac を含んでいます。 したがって、--reassociate_saturation--vectorize が指定されていない限り、コンパイラはこのコードをベクトル化しません。

#include <dspfns.h>
int f(short *a, short *b)
{
    int i;
    int r = 0;
    for (i = 0; i < 100; i++)
         r=L_mac(r,a[i],b[i]);
    return r;
}

Show/hide関連項目

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0491GJ
Non-ConfidentialID051612