PSHUFHW - 壓縮高位字亂序

操作碼

指令

說明

F3 0F 70 /r ib

PSHUFHW xmm1, xmm2/m128, imm8

按照 imm8 中的編碼對 xmm2/m128 中的高位字執行亂序處理,結果儲存到 xmm1

說明

從源運算元(第二個運算元)的高位四字中複製字,按照順序運算元(第三個運算元)選擇的字位置,將它們插入目標運算元(第一個運算元)的高位四字。此操作同 PSHUFD 指令使用的操作相似,如圖 3-10 所示。對於 PSHUFHW 指令,順序運算元中的每 2 個位欄位選擇目標運算元的高位四字中一個字位置的內容。順序運算元欄位的編碼從源運算元的高位四字中選擇要複製到目標運算元的字。

源運算元可以是 XMM 暫存器或 128 位記憶體位置。目標運算元是 XMM 暫存器。順序運算元是 8 位立即數。

請注意,此指令允許將源運算元中的一個字複製到目標運算元中的多個字位置。

操作

DEST[79-64] (SRC >> (ORDER[1-0] * 16) )[79-64]
DEST[95-80] (SRC >> (ORDER[3-2] * 16) )[79-64]
DEST[111-96] (SRC >> (ORDER[5-4] * 16) )[79-64]
DEST[127-112] (SRC >> (ORDER[7-6] * 16) )[79-64]

英特爾(R) C++ 編譯器等價內部函式

PSHUFHW __m128i _mm_shufflehi_epi16(__m128i a, int n)

影響的標誌

無。

保護模式異常

#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果記憶體運算元未對齊 16 位元組邊界,不論是哪一段。

#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。

#UD - 如果 CR0 中的 EM 設定為 1。如果 CR4 中的 OSFXSR 是 0。如果 CPUID 功能標誌 SSE-2 是 0。

#NM - 如果 CR0 中的 TS 設定為 1。

#PF(錯誤程式碼) - 如果發生頁錯誤。

實地址模式異常

#GP(0) - 如果記憶體運算元未對齊 16 位元組邊界,不論是哪一段。如果運算元的任何部分出現在 0 到 FFFFH 的有效地址空間之外。

#UD - 如果 CR0 中的 EM 設定為 1。如果 CR4 中的 OSFXSR 是 0。如果 CPUID 功能標誌 SSE-2 是 0。

#NM - 如果 CR0 中的 TS 設定為 1。

虛 8086 模式異常

與“實地址模式”中的異常相同。

#PF(錯誤程式碼) - 頁錯誤。

數值異常

無。