WSUB - 向量減法

語法

WSUBlengthsign[condition] dest, op1, op2

其中:

length 所需的數據長度,可以由以下字元之一指定:
B -- 操作 8 位(位元組)SIMD 欄位
H -- 操作 16 位(半字)SIMD 欄位
W -- 操作 32 位(字)SIMD 欄位
sign 飽和選項。如果應用:
US -- 無符號飽和
SS -- 有符號飽和
其它情況則不應用“飽和”選項
condition 可選。16 個條件之一。請參閱條件執行
dest 目標,“英特爾(R) 無線 MMX™”技術數據暫存器
op1 第一個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
op2 第二個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
 

說明

對 8、16 或 32 位有符號或無符號數據的向量執行從 op1 減去 op2 的向量減法運算,並將結果放入 dest。飽和算術是可選項,可以按有符號或無符號方式指定。

指令中指定的任何條件必須與條件程式碼狀態匹配,否則不執行指令。

編碼

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
wwss
op1
dest
0001
101
0
op2
 

子欄位編碼

限定符
欄位
B
ww
00
H
ww
01
W
ww
10
保留
ww
11
US
ss
01
SS
ss
11
無飽和
ss
00
保留
ss
10

影響的 SIMD 標誌

根據 op1-op2 的減法運算結果設定 SIMD 標誌 (wCASF)。如果指定 US/SS 且發生飽和,則根據飽和處理之後的值(最終結果)設定 SIMD 標誌 (wCASF)。如果指定 US/SS 限定符,且相應的欄位發生飽和,則設定“飽和”標誌 (wCSSF)。
標誌
未指定飽和
指定 US/SS 但未產生飽和
指定 US/SS 且產生飽和
N
根據最終結果設定
根據最終結果設定
根據最終結果設定
Z
根據最終結果設定
根據最終結果設定
根據最終結果設定
C
根據最終結果設定
根據最終結果設定
清除
V
根據最終結果設定
根據最終結果設定
清除

操作

if (B Specified) then

dest[byte 7] = saturate(op1[byte 7] - op2[byte 7], {US,SS}, 8)

dest[byte 6] = saturate(op1[byte 6] - op2[byte 6], {US,SS}, 8)

dest[byte 5] = saturate(op1[byte 5] - op2[byte 5], {US,SS}, 8)

dest[byte 4] = saturate(op1[byte 4] - op2[byte 4], {US,SS}, 8)

dest[byte 3] = saturate(op1[byte 3] - op2[byte 3], {US,SS}, 8)

dest[byte 2] = saturate(op1[byte 2] - op2[byte 2], {US,SS}, 8)

dest[byte 1] = saturate(op1[byte 1] - op2[byte 1], {US,SS}, 8)

dest[byte 0] = saturate(op1[byte 0] - op2[byte 0], {US,SS}, 8)

else if (H Specified) then

dest[half 3] = saturate(op1[half 3] - op2[half 3], {US,SS}, 16)

dest[half 2] = saturate(op1[half 2] - op2[half 2], {US,SS}, 16)

dest[half 1] = saturate(op1[half 1] - op2[half 1], {US,SS}, 16)

dest[half 0] = saturate(op1[half 0] - op2[half 0], {US,SS}, 16)

else if (W Specified) then

dest[word 1] = saturate(op1[word 1] - op2[word 1], {US,SS}, 32)

dest[word 0] = saturate(op1[word 0] - op2[word 0], {US,SS}, 32)

更多資訊

WACC
WADD
WAVG2
WMAX

WMIN

WMOV

WSAD

WZERO