WCMPEQ - 向量相等比較

語法

WCMPEQlength[condition] dest, op1, op2

其中:
length 所需的數據長度,可以由以下字元之一指定:
B -- 操作 8 位(位元組)SIMD 數據
H -- 操作 16 位(半字)SIMD 數據
W -- 操作 32 位(字)SIMD 數據
condition 可選。16 個條件之一。請參閱條件執行
dest 目標,“英特爾(R) 無線 MMX™”技術數據暫存器
op1 第一個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
op2 第二個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
 

說明

對 8、16 或 32 位數據向量執行 op1 與 op2 的向量相等比較,如果這兩個源運算元相等,則 dest 中相應的數據元素全設為 1;否則全設為 0。

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

編碼

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
ww00
op1
dest
0000
011
0
op2
 

子欄位編碼

限定符
欄位
B
ww
00
H
ww
01
W
ww
10
保留
ww
11

影響的 SIMD 標誌

如果最終值上發生操作,則設定 SIMD 標誌;不影響“飽和”標誌 (wCSSF)。如果運算元相等(最終結果 = 0xFF),則清除 Z 標誌;如果不匹配(最終結果 = 0x00F),則設定 Z 標誌。
標誌
操作
N
根據最終結果設定
Z
根據最終結果設定
C
清除
V
清除

操作

if (B Specified) then

dest[byte 7] = (op1[byte 7] == op2[byte 7]) ?0xFF : 0x00

dest[byte 6] = (op1[byte 6] == op2[byte 6]) ?0xFF : 0x00

dest[byte 5] = (op1[byte 5] == op2[byte 5]) ?0xFF : 0x00

dest[byte 4] = (op1[byte 4] == op2[byte 4]) ?0xFF : 0x00

dest[byte 3] = (op1[byte 3] == op2[byte 3]) ?0xFF : 0x00

dest[byte 2] = (op1[byte 2] == op2[byte 2]) ?0xFF : 0x00

dest[byte 1] = (op1[byte 1] == op2[byte 1]) ?0xFF : 0x00

dest[byte 0] = (op1[byte 0] == op2[byte 0]) ?0xFF : 0x00

else if (H Specified) then

dest[half 3] = (op1[half 3] == op2[half 3]) ?0xFFFF : 0x0000

dest[half 2] = (op1[half 2] == op2[half 2]) ?0xFFFF : 0x0000

dest[half 1] = (op1[half 1] == op2[half 1]) ?0xFFFF : 0x0000

dest[half 0] = (op1[half 0] == op2[half 0]) ?0xFFFF : 0x0000

else if (W Specified) then

dest[word 1]=(op1[word 1] == op2[word 1]) ?0xFFFFFFFF:0x00000000

dest[word 0]=(op1[word 0] == op2[word 0]) ?0xFFFFFFFF:0x00000000

更多資訊

WAND
WANDN

WCMPGT

WOR

WROR

WSLL

WSRA

WSRL

WXOR