WMAX - 向量最大值

語法

WMAXsignlength[condition] dest, op1, op2

其中:

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

說明

在 op1 與 op2 內的每個“向量”中選擇最大值,並將產生的最大值放入目標暫存器 dest。此指令可以在有符號或無符號的 8 位、16 位或 32 位數據值上執行。

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

編碼

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
wws0
op1
dest
0001
011
0
op2
 

子欄位編碼

限定符
欄位
B
ww
00
H
ww
01
W
ww
10
保留
ww
11
S
s
1
U
s
0

影響的 SIMD 標誌

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

操作

if (B Specified)then

dest[byte 7] = (op1[byte 7] > op2[byte 7]) ? op1[byte 7] : op2[byte 7]

dest[byte 6] = (op1[byte 6] > op2[byte 6]) ? op1[byte 6] : op2[byte 6]

dest[byte 5] = (op1[byte 5] > op2[byte 5]) ? op1[byte 5] : op2[byte 5]

dest[byte 4] = (op1[byte 4] > op2[byte 4]) ? op1[byte 4] : op2[byte 4]

dest[byte 3] = (op1[byte 3] > op2[byte 3]) ? op1[byte 3] : op2[byte 3]

dest[byte 2] = (op1[byte 2] > op2[byte 2]) ? op1[byte 2] : op2[byte 2]

dest[byte 1] = (op1[byte 1] > op2[byte 1]) ? op1[byte 1] : op2[byte 1]

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

else if (H Specified)then

dest[half 3] = (op1[half 3] > op2[half 3]) ? op1[half 3] : op2[half 3]

dest[half 2] = (op1[half 2] > op2[half 2]) ? op1[half 2] : op2[half 2]

dest[half 1] = (op1[half 1] > op2[half 1]) ? op1[half 1] : op2[half 1]

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

else if (W Specified) then

dest[word 1] = (op1[word 1] > op2[word 1]) ? op1[word 1] : op2[word 1]

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

更多資訊

WACC
WADD
WAVG2
WMIN

WMOV

WSAD

WSUB

WZERO