--reassociate_saturation--no_reassociate_saturation

これらのオプションは、サチュレート算術を使用したループ内でより積極的な最適化を有効または無効にします。

Show/hide使用法

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

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-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711