WSLL - 向量邏輯左移

語法

WSLLlength[Condition] dest, op1, op2
WSLLlengthG[Condition] dest, op1, op2C

其中:

length 所需的數據長度,可以由以下字元之一指定:
H -- 操作 16 位(半字)SIMD 數據
W -- 操作 32 位(字)SIMD 數據
D -- 操作 64 位(雙字)SIMD 數據
G -- op2 欄位指定要給移位值使用的通用暫存器
condition 可選。16 個條件之一。請參閱條件執行
dest 目標,“英特爾(R) 無線 MMX™”技術數據暫存器
op1 第一個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器
op2 第二個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器 -- 指定移位量
op2C 第二個源運算元,任何通用“控制暫存器”- 指定移位量
 

說明

按照 op2 或 op2C 指定的位數,在 op1 上執行向量邏輯“左移”,並將結果放入“目標”暫存器 dest。

移位可以在 16、32 或 64 位數據的向量上執行。零從右向內移。假設移位量 > 63(對於 D 限定符)、31(對於 W 限定符)或 15(對於 H 限定符),則“目標”暫存器包含的將全是零。

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

備註

使用限定符 G 時如果為 op2C 指定的值非法,則將導致未定義的指令異常。

編碼

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
ww01
op1
dest
000g
010
0
op2op2C
 

子欄位編碼

限定符
欄位
H
ww
01
W
ww
10
D
ww
11
保留
ww
00
G
g
1
無 G
g
0

影響的 SIMD 標誌

根據操作結果清除 C、V 標誌;設定 Z 與 N 標誌;不影響“飽和”標誌 (wCSSF)。
標誌
操作
N
根據最終結果設定
Z
根據最終結果設定
C
清除
V
清除

操作

if (H Specified) then

dest[half 3] = op1[half 3] << ((G Specified) ? op2C[7:0]:op2[7:0])

dest[half 2] = op1[half 2] << ((G Specified) ? op2C[7:0]:op2[7:0])

dest[half 1] = op1[half 1] << ((G Specified) ? op2C[7:0]:op2[7:0])

dest[half 0] = op1[half 0] << ((G Specified) ? op2C[7:0]:op2[7:0])

else if (W Specified) then

dest[word 1] = op1[word 1] << ((G Specified) ? op2C[7:0]:op2[7:0])

dest[word 0] = op1[word 0] << ((G Specified) ? op2C[7:0]:op2[7:0])

else if (D Specified) then

dest = op1 << ((G Specified) ? op2C[7:0]:op2[7:0])

更多資訊

WAND
WANDN

WCMPEQ

WCMPGT

WOR

WROR

WSRA

WSRL

WXOR