WALIGNR - 提取

語法

WALIGNRreg[condition] dest, op1Lo, op2Hi

其中:
reg 要用作 3 位值偏移量的暫存器:
0 - 使用通用協處理器暫存器 wCGR0 進行對齊
1 - 使用通用協處理器暫存器 wCGR1 進行對齊
2 - 使用通用協處理器暫存器 wCGR2 進行對齊
3 - 使用通用協處理器暫存器 wCGR3 進行對齊
condition 可選。16 個條件之一。請參閱條件執行
dest 目標,“英特爾(R) 無線 MMX™”技術數據暫存器
op1Lo 第一個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器。源運算元的低 64 位
op2Hi 第二個源運算元,“英特爾(R) 無線 MMX™”技術數據暫存器。源運算元的高 64 位
 

說明

從兩個 64 位源暫存器 op1Lo 與 op2Hi 提取 64 位值,並將結果放入“目標”暫存器 dest。指令使用特定的通用暫存器中儲存的 3 位值指定要提取的值的偏移位元組數。

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

備註

指定的通用暫存器中的偏移量以位元組為單位。

編碼

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
10vv
op1Lo
dest
0000
001
0
op2Hi
 

子欄位編碼

限定符
欄位
0
vv
00
1
vv
01
2
vv
10
3
vv
11

影響的 SIMD 標誌

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

操作

if (0 Specified) then

 dest = Low_DB_word((op2Hi,op1Lo) >> (Reg0[2:0] * 8))

else if (1 Specified) then

 dest = Low_DB_word((op2Hi,op1Lo) >> (Reg1[2:0] * 8))

else if (2 Specified) then

 dest = Low_DB_word((op2Hi,op1Lo) >> (Reg2[2:0] * 8))

else if (3 Specified) then

 dest = Low_DB_word((op2Hi,op1Lo) >> (Reg3[2:0] * 8))

更多資訊

WALIGNI

WPACK

WSHUFH

WUNPCKEH

WUNPCKIH

WUNPCKEL

WUNPCKIL