並列加算と並列減算

バイト単位およびハーフワード単位のさまざまな加算と減算です。

Show/hide構文

<prefix>op{cond} {Rd}, Rn, Rm

各パラメータには以下の意味があります。

<prefix>

次のいずれかを指定します。

S

符号付き余り算術演算 28 または 216 です。APSR の GE フラグが設定されます。

Q

符号付きサチュレート算術演算です。

SH

符号付き算術演算を行い、結果を半分にします。

U

符号なし余り算術演算 28 または 216 です。APSR の GE フラグが設定されます。

UQ

符号なしサチュレート算術演算です。

UH

符号なし算術演算を行い、結果を半分にします。

op

次のいずれかを指定します。

ADD8

バイト単位の加算。

ADD16

ハーフワード単位の加算。

SUB8

バイト単位の減算。

SUB16

ハーフワード単位の減算。

ASX

Rm のハーフワードを交換し、上位ハーフワードの加算と下位ハーフワードの減算を行います。

SAX

Rm のハーフワードを交換し、上位ハーフワードの減算と下位ハーフワードの加算を行います。

cond

任意の条件コードを指定します。

Rd

デスティネーションレジスタを指定します。

Rm、Rn

は、オペランドを保持する ARM レジスタを指定します。

Show/hide演算

これらの命令は、オペランドのバイトまたはハーフワードに対し、個別に算術演算を実行します。2 つか 4 つの加算または減算、あるいは 1 つの算と 1 つの減算を実行します。

以下のようなさまざまな種類の演算を選択できます。

  • 28 または 216 の符号付き/符号なし余りの算術演算。これにより APSR の GE フラグが設定されます。

  • 符号付き範囲 -215x ≤ 215 -1 または -27x ≤ 27 -1 のいずれかに対する符号付きサチュレート算術演算。これらの演算がサチュレートする場合でも Q フラグへの影響はありません。

  • 符号なし範囲 0 ≤ x ≤ 216 -1 または 0 ≤ x ≤ 28 -1 のいずれかに対する符号なしサチュレート算術演算。これらの演算がサチュレートする場合でも Q フラグへの影響はありません。

  • 符号付き/符号なし算術演算。結果は二分されます。これによってオーバーフローが発生することはありません。

Show/hideレジスタの制約条件

レジスタには PC は使用できません。

SP は ARM 命令で使用できますが、これらは ARMv6T2 以降では非推奨です。Thumb 命令では SP は使用できません。

Show/hide条件フラグ

これらの命令による N、Z、C、V、または Q フラグへの影響はありません。

これらの命令に接頭文字 QSHUQ、および UH を使用した場合でも、フラグへの影響はありません。

これらの命令に接頭文字 SU を使用した場合は、APSR の GE フラグが以下のように設定されます。

  • バイト単位の演算では、GE フラグは 32 ビットの SUB および ADD 命令における C(キャリー)フラグと同様の方法で使用されます。

    GE[0]

    結果のビット [7:0] に対応します。

    GE[1]

    結果のビット [15:8] に対応します。

    GE[2]

    結果のビット [23:16] に対応します。

    GE[3]

    結果のビット [31:24] に対応します。

  • ハーフワード単位の演算では、GE フラグは通常のワード単位の SUB 命令および ADD 命令における C(キャリー)フラグと同様の方法で使用されます。

    GE[1:0]

    結果のビット [15:0] に対応します。

    GE[3:2]

    結果のビット [31:16] に対応します。

これらのフラグを使用して、次に続く SEL 命令を制御できます。

Note

ハーフワード単位の演算では、GE[1:0] が同時にセットまたはクリアされ、GE[3:2] が同時にセットまたはクリアされます。

Show/hideアーキテクチャ

これらの ARM 命令は、ARMv6 以降で使用できます。

これらの 32 ビット Thumb 命令は、ARMv6T2 以降で使用できます。ARMv7-M アーキテクチャでは、これらは ARMv7E-M 実装でだけ使用できます。

これらの命令の 16 ビット Thumb バージョンはありません。

Show/hide

    SHADD8      r4, r3, r9
    USAXNE      r0, r0, r2

Show/hide誤用例

    QHADD       r2, r9, r3    ; このような命令は存在しない。QHADD8 または QHADD16 を使用する必要がある。
    SAX         r10, r8, r5   ; 接頭文字が必要。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0489FJ
Non-ConfidentialID111211