WROR - 向量邏輯循環右移

語法

WRORlength[condition] dest, op1, op2
WRORlengthG[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 位數據的向量上執行。
移出向量右側的位重新插入左側騰出的空位上。

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

備註

使用限定符 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
ww11
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] rotate_by ((G Specified) ?

op2C[7:0]:op2[7:0])

dest[half 2] = op1[half 2] rotate_by ((G Specified) ?

 op2C[7:0]:op2[7:0])

dest[half 1] = op1[half 1] rotate_by ((G Specified) ?

 op2C[7:0]:op2[7:0])

dest[half 0] = op1[half 0] rotate_by ((G Specified) ?

op2C[7:0]:op2[7:0])

else if (W Specified) then

 dest[word 1] = op1[word 1] rotate_by ((G Specified) ?

 op2C[7:0]:op2[7:0])

dest[word 0] = op1[word 0] rotate_by ((G Specified) ?

 op2C[7:0]:op2[7:0])

else if (D Specified) then

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

更多資訊

WAND
WANDN

WCMPEQ

WCMPGT

WOR

WSLL

WSRA

WSRL

WXOR