SMULxy、SMLAxy

符号付き乗算命令と積和命令です(16 ビット× 16 ビットを実行し、32 ビットの積算値と結果を返します)。

Show/hide構文

SMUL<x><y>{cond} {Rd}, Rn, Rm
SMLA<x><y>{cond} Rd, Rn, Rm, Ra

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

<x>

B または T を指定します。Rn の下位ビット(ビット [15:0])を使用する場合は B を、Rn の上位ビット(ビット [31:16])を使用する場合は T を指定します。

<y>

B または T を指定します。Rm の下位ビット(ビット [15:0])を使用する場合は B を、Rm の上位ビット(ビット [31:16])を使用する場合は T を指定します。

cond

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

Rd

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

Rn、Rm

乗算する値を保持するレジスタを指定します。

Ra

加算する値を保持するレジスタを指定します。

Show/hide使用法

SMULxy 命令は、RnRm の指定された上位半分または下位半分の 16 ビット符号付き整数を乗算し、32 ビットの演算結果を Rd に返します。

SMLAxy 命令は、RnRm の指定された上位半分または下位半分の 16 ビット符号付き整数を乗算し、32 ビットの演算結果を Ra の 32 ビット値に加算し、その結果を Rd に返します。

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

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

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

Show/hide条件フラグ

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

累算中にオーバーフローが発生した場合、SMLAxy によって Q フラグが設定されます。Q フラグの状態を読み出すには、MRS 命令を使用します。

Note

SMLAxy によって Q フラグがクリアされることはありません。Q フラグをクリアするには、MSR 命令を使用します。

Show/hideアーキテクチャ

これらの ARM 命令は、ARMv6 以降、および ARMv5T の E バリアントで使用できます。

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

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

Show/hide

    SMULTBEQ    r8, r7, r9
    SMLABBNE    r0, r2, r1, r10
    SMLABT      r0, r0, r3, r5

Show/hide関連項目

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