SMLALxy [condition] dest_lo, dest_hi, op1, op2
其中:
x |
B: T: |
y |
B: T: |
condition |
16 個條件之一。 |
dest_lo |
包含累加值的低 32 位的暫存器,也是低 32 位的目標暫存器 |
dest_hi |
包含累加值的高 32 位的暫存器,也是高 32 位的目標暫存器 |
SMLALxy 指令使用有符號 16 位運算元 op1 與 op2 執行乘法。乘法的 32 位結果加到 op3 中包含的 32 位值。乘法的 32 位結果進行符號擴充套件,並加到 dest_lo 與 dest_hi。和寫入 dest_lo 與 dest_hi。condition 必須是有效值;否則將指令當作 NOP。
N |
Z |
C |
V |
Q |
S |
I |
F |
T |
T |
T |
T |
T |
|
|
|
|
|
31 |
|
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
|
16 |
15 |
|
12 |
11 |
|
8 |
7 |
6 |
5 |
4 |
3 |
|
0 |
condition |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
dest_hi |
dest_lo |
op2 |
1 |
x |
y |
0 |
op1 |
1 @.text
2 @.globl funcsmlalxy
3 @.align 0
4
5 @ * * * SMLALxy * * *
6
7 AREA example, CODE, READONLY
8
9 00000000 E3A00000 MOV R0, #0xF00D
10 00000004 E3A01000 MOV R1, #0xBEEF
11
12 00000008 E5678086 SMLALBB R5, R6, R0, R1
13 00000012 E10710A8 SMLALBT R7, R8, R0, R1
14 00000016 E10910EA SMLALTT R9, R10, R0, R1
15
16 END