• 検索結果がありません。

PSHUFD—Shuffle Packed Doublewords(続き)

操作

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に格納する。