WAVG2 - 2 畫素平均

語法

WAVG2length[R][condition] dest, op1, op2

其中:
length 所需的數據長度,可以由以下字元之一指定:
B -- 操作 8 位(位元組)SIMD 數據
H -- 操作 16 位(半字)SIMD 數據
R (可選)
對於使用 +1 的取整,此處放入字元 R。
其它情況則忽略,不進行取整
condition 可選。16 個條件之一。請參閱條件執行
dest 目標,“英特爾(R) 無線 MMX™”技術數據暫存器
op1 第一個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
op2 第二個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
 

說明

在允許選擇是否 +1 取整的 8 或 16 位數據無符號向量上執行 op1 與 op2 的 2 畫素平均計算,並將結果放入“目標”暫存器 dest。
取整指定在除以 2 之前,是否將中間結果加上 1。

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

編碼

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
1h0r
op1
dest
0000
000
0
op2
 

子欄位編碼

限定符
欄位
B
h
0
H
h
1
R
r
1
無 R
r
0

影響的 SIMD 標誌

如果為零,則清除 N、C、V,並設定 Z;不影響“飽和”標誌 (wCSSF)
標誌
操作
N
清除
Z
根據最終結果設定
C
清除
V
清除

操作

if R specified then Round = 1, Else Round = 0

if (B Specified) then

dest[byte 7] = (op1[byte 7] + op2[byte 7] + Round)/2

dest[byte 6] = (op1[byte 6] + op2[byte 6] + Round)/2

dest[byte 5] = (op1[byte 5] + op2[byte 5] + Round)/2

dest[byte 4] = (op1[byte 4] + op2[byte 4] + Round)/2

dest[byte 3] = (op1[byte 3] + op2[byte 3] + Round)/2

dest[byte 2] = (op1[byte 2] + op2[byte 2] + Round)/2

dest[byte 1] = (op1[byte 1] + op2[byte 1] + Round)/2

dest[byte 0] = (op1[byte 0] + op2[byte 0] + Round)/2

else if (H Specified) then

dest[half 3] = (op1[half 3] + op2[half 3] + Round)/2

dest[half 2] = (op1[half 2] + op2[half 2] + Round)/2

dest[half 1] = (op1[half 1] + op2[half 1] + Round)/2

dest[half 0] = (op1[half 0] + op2[half 0] + Round)/2

更多資訊

WACC
WADD

WMAX

WMIN

WMOV

WSAD

WSUB

WZERO