WMADDsign[condition] dest, op1, op2
其中:
sign | 確定進行“有符號”還是“無符號”算術運算: S -- 有符號 U -- 無符號 |
condition | 可選。16 個條件之一。請參閱條件執行 |
dest | 目標,“英特爾(R) 無線 MMX™”技術數據暫存器 |
op1 | 第一個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器 |
op2 | 第二個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器 |
將 op1 與 op2 中的四個 16 位半字相乘,產生四個 32 位中間結果。然後,將兩個低 16 位乘積的中間結果相加,並將結果放入目標暫存器 dest 的低 32 位字中。將兩個高 16 位乘積的中間結果相加,並將結果放入目標暫存器 dest 的高 32 位字中。這既可以在有符號數據上執行,也可以在無符號數據上執行。
指令中指定的任何條件必須與條件程式碼狀態匹配,否則不執行指令。
如果兩個中間結果相加后的結果大於 32 位欄位,則截斷該值;它不會發生飽和(與 MMX™ 技術 PMADDWM 指令的行為相同);上溢可通過預先調整輸入參數防止發生。
31
|
30
|
29
|
28
|
27
|
26
|
25
|
24
|
23
|
22
|
21
|
20
|
19
|
18
|
17
|
16
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Cond
|
1110
|
10s0
|
op1
|
dest
|
0001
|
000
|
0
|
op2
|
限定符
|
欄位
|
值
|
---|---|---|
S
|
s
|
1
|
U
|
s
|
0
|
dest[31:0] = (op1[15:0]*op2[15:0]) + (op1[31:16]*op2[31:16]);
dest[63:32] = (op1[47:32]*op2[47:32]) + (op1[63:48]*op2[63:48]);