操作
DEST[31-0] ← (SRC >> (ORDER[1-0] ∗ 32) )[31-0]
DEST[63-32] ← (SRC >> (ORDER[3-2] ∗ 32) )[31-0]
DEST[95-64] ← (SRC >> (ORDER[5-4] ∗ 32) )[31-0]
DEST[127-96] ← (SRC >> (ORDER[7-6] ∗ 32) )[31-0]
同等のインテル® C/C++コンパイラ組み込み関数
PSHUFD __m128i _mm_shuffle_epi32(__m128i a, int n) 影響を受けるフラグ
なし。
保護モード例外
#GP(0) メモリ・オペランドの実効アドレスが、CS、DS、ES、FS、またはGS セグメントの範囲外の場合。
セグメントに関係なく、メモリ・オペランドのアライメントが16バ イトに合っていない場合。
#SS(0) メモリ・オペランドの実効アドレスがSSセグメントの範囲外の場合。
#UD CR0のEMがセットされた場合。
CR4のOSFXSRが0の場合。
CPUID機能フラグSSE2が0の場合。
#NM CR0のTSがセットされた場合。
#PF(フォルトコード) ページフォルトが発生した場合。
実アドレスモード例外
#GP(0) セグメントに関係なく、メモリ・オペランドのアライメントが16バ
イトに合っていない場合。
オペランドの一部が0~FFFFHの実効アドレス空間の範囲外の場合。
#UD CR0のEMがセットされた場合。
CR4のOSFXSRが0の場合。
CPUID機能フラグSSE2が0の場合。
#NM CR0のTSがセットされた場合。
仮想8086モード例外
実アドレスモードと同じ例外。
#PF(フォルトコード) ページフォルトが発生した場合。
PSHUFD—Shuffle Packed Doublewords(続き)
数値例外 なし。
説明
ソース・オペランド(第2オペランド)の上位クワッドワードからワードをコピーし て、オーダー・オペランド(第3オペランド)で選択された、デスティネーション・
オペランド(第1オペランド)の上位クワッドワード内のワード位置に挿入する。こ の操作は、図4-6.に示したPSHUFD命令の操作とよく似ている。PSHUFHW命令では、
オーダー・オペランドのそれぞれの2ビット・フィールドは、デスティネーション・
オペランドの上位クワッドワード内の1つのワード位置の内容を指定する。オーダー・
オペランドの各フィールドの2進エンコーディングによって、ソース・オペランドの 上位クワッドワードからデスティネーション・オペランドにコピーされるワード(0、 1、2、または3、4)が選択される。ソース・オペランドの下位のクワッドワードがデ スティネーション・オペランドの下位のクワッドワードにコピーされる。
ソース・オペランドは、XMMレジスタまたは128ビットのメモリ・ロケーションで ある。デスティネーション・オペランドはXMMレジスタである。オーダー・オペラ ンドは8ビットの即値である。
この命令は、ソース・オペランドの上位のクワッドワードのワードを、デスティネー ション・オペランドの上位のクワッドワード内の2つ以上のワード位置にコピーする ことができる。
操作
DEST[63-0] ← (SRC[63-0]
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]
同等のインテル® C/C++コンパイラ組み込み関数
PSHUFHW __m128i _mm_shufflehi_epi16(__m128i a, int n) 影響を受けるフラグ
なし。
オペコード 命令 説明
F3 0F 70 /r ib PSHUFHW xmm1,
xmm2/m128, imm8 imm8のエンコーディングに基づいて、xmm2/m128の上 位ワードをシャッフルし、結果をxmm1に格納する。