WMADD - 16 位向量乘法與求和

語法

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

影響的 SIMD 標誌

不影響 SIMD PSR 標誌 (wCASF) 或“飽和”標誌 (wCSSF)。

操作

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]);

更多資訊

WMAC
WMUL