アンパック (128bit 中の下位64bit) | |
PUNPCKLBW VPUNPCKLBW | アンパック8bit→16bit (下位) [SSE2] |
---|---|
PUNPCKLWD VPUNPCKLWD | アンパック16bit→32bit (下位) [SSE2] |
PUNPCKLDQ VPUNPCKLDQ | アンパック32bit→64bit (下位) [SSE2] |
PUNPCKLQDQ VPUNPCKLQDQ | アンパック64bit→128bit (下位) [SSE2] |
アンパック (128bit 中の上位64bit) | |
PUNPCKHBW VPUNPCKHBW | アンパック8bit→16bit (上位) [SSE2] |
PUNPCKHWD VPUNPCKHWD | アンパック16bit→32bit (上位) [SSE2] |
PUNPCKHDQ VPUNPCKHDQ | アンパック32bit→64bit (上位) [SSE2] |
PUNPCKHQDQ VPUNPCKHQDQ | アンパック64bit→128bit (上位) [SSE2] |
パック | |
PACKSSWB VPACKSSWB | パック符号付き16bit整数→符号付き8bit整数 (飽和) [SSE2] |
PACKUSWB VPACKUSWB | パック符号付き16bit整数→符号なし8bit整数 (飽和) [SSE2] |
PACKSSDW VPACKSSDW | パック符号付き32bit整数→符号付き16bit整数 (飽和) [SSE2] |
PACKUSDW VPACKUSDW | パック符号付き32bit整数→符号なし16bit整数 (飽和) [SSE4.1] |
ブレンドコピー | |
PBLENDVB VPBLENDVB | パック8bitのブレンドコピー [SSE4.1] |
PBLENDW VPBLENDW | パック16bitのブレンドコピー [SSE4.1] |
VPBLENDD | パック32bitのブレンドコピー [AVX2] |
シャッフルコピー | |
PSHUFB VPSHUFB | パック8bitのシャッフルコピー [SSSE3] |
PSHUFLW VPSHUFLW | パック16bitのシャッフルコピー (下位64bit) [SSE2] |
PSHUFHW VPSHUFHW | パック16bitのシャッフルコピー (上位64bit) [SSE2] |
PSHUFD VPSHUFD | パック32bitのシャッフルコピー [SSE2] |
パック抽出 | |
PEXTRB VPEXTRB | パック8bitから抽出 [SSE4.1] |
PEXTRW VPEXTRW | パック16bitから抽出 [SSE2/SSE4.1] |
PEXTRD VPEXTRD | パック32bitから抽出 [SSE4.1] |
PEXTRQ VPEXTRQ | パック64bitから抽出 [SSE4.1] |
パック挿入 | |
PINSRB VPINSRB | パック8bit挿入 [SSE4.1] |
PINSRW VPINSRW | パック16bit挿入 [SSE2] |
PINSRD VPINSRD | パック32bit挿入 [SSE4.1] |
PINSRQ VPINSRQ | パック64bit挿入 [SSE4.1] |
ゼロ拡張 | |
PMOVZXBW VPMOVZXBW | パック符号なし8bit整数を16bitにゼロ拡張 [SSE4.1] |
PMOVZXBD VPMOVZXBD | パック符号なし8bit整数を32bitにゼロ拡張 [SSE4.1] |
PMOVZXBQ VPMOVZXBQ | パック符号なし8bit整数を64bitにゼロ拡張 [SSE4.1] |
PMOVZXWD VPMOVZXWD | パック符号なし16bit整数を32bitにゼロ拡張 [SSE4.1] |
PMOVZXWQ VPMOVZXWQ | パック符号なし16bit整数を64bitにゼロ拡張 [SSE4.1] |
PMOVZXDQ VPMOVZXDQ | パック符号なし32bit整数を64bitにゼロ拡張 [SSE4.1] |
符号拡張 | |
PMOVSXBW VPMOVSXBW | パック符号付き8bit整数を16bitに符号拡張 [SSE4.1] |
PMOVSXBD VPMOVSXBD | パック符号付き8bit整数を32bitに符号拡張 [SSE4.1] |
PMOVSXBQ VPMOVSXBQ | パック符号付き8bit整数を64bitに符号拡張 [SSE4.1] |
PMOVSXWD VPMOVSXWD | パック符号付き16bit整数を32bitに符号拡張 [SSE4.1] |
PMOVSXWQ VPMOVSXWQ | パック符号付き16bit整数を64bitに符号拡張 [SSE4.1] |
PMOVSXDQ VPMOVSXDQ | パック符号付き32bit整数を64bitに符号拡張 [SSE4.1] |
符号抽出 | |
PMOVMSKB VPMOVMSKB | パック8bit整数の符号抽出 [SSE2] |
符号評価 | |
PSIGNB VPSIGNB | パック符号付き8bitの符号評価 [SSSE3] |
PSIGNW VPSIGNW | パック符号付き16bitの符号評価 [SSSE3] |
PSIGND VPSIGND | パック符号付き32bitの符号評価 [SSSE3] |
アンパック (128bit 中の下位64bit)
PUNPCKLBW xmm1, xmm2/mem128 | 66 0F 60 /r | SSE2 VPUNPCKLBW xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 60 /r | AVX VPUNPCKLBW ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 60 /r | AVX2
128bit 単位で行い、128bit 中の下位 64bit の8つの各 8bit 整数を、2つのソースから順に取り出して、交互に並べます。
src1 = x, src2 = y * 128bit dst |y7|x7|..|y1|x1|y0|x0| * 256bit dst |y31|x31|..|y16|x16|y7|x7|..|y0|x0|
PUNPCKLWD xmm1, xmm2/mem128 | 66 0F 61 /r | SSE2 VPUNPCKLWD xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 61 /r | AVX VPUNPCKLWD ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 61 /r | AVX2
128bit 単位で行い、128bit 中の下位 64bit の4つの 16bit 整数を、2つのソースから順に取り出して、交互に並べます。
PUNPCKLDQ xmm1, xmm2/mem128 | 66 0F 62 /r | SSE2 VPUNPCKLDQ xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 62 /r | AVX VPUNPCKLDQ ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 62 /r | AVX2
128bit 単位で行い、128bit 中の下位 64bit の2つの各 32bit 整数を、2つのソースから順に取り出して、交互に並べます。
PUNPCKLQDQ xmm1, xmm2/mem128 | 66 0F 6C /r | SSE2 VPUNPCKLQDQ xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 6C /r | AVX VPUNPCKLQDQ ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 6C /r | AVX2
128bit 単位で行い、128bit 中の下位 64bit 整数を、2つのソースから順に取り出して、交互に並べます。
アンパック (128bit 中の上位64bit)
PUNPCKHBW xmm1, xmm2/mem128 | 66 0F 68 /r | SSE2 VPUNPCKHBW xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 68 /r | AVX VPUNPCKHBW ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 68 /r | AVX2
128bit 単位で行い、128bit 中の上位 64bit の8つの各 8bit 整数を、2つのソースから順に取り出して、交互に並べます。
PUNPCKHWD xmm1, xmm2/mem128 | 66 0F 69 /r | SSE2 VPUNPCKHWD xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 69 /r | AVX VPUNPCKHWD ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 69 /r | AVX
128bit 単位で行い、128bit 中の上位 64bit の4つの各 16bit 整数を、2つのソースから順に取り出して、交互に並べます。
PUNPCKHDQ xmm1, xmm2/mem128 | 66 0F 6A /r | SSE2 VPUNPCKHDQ xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 6A /r | AVX VPUNPCKHDQ ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 6A /r | AVX2
128bit 単位で行い、128bit 中の上位 64bit の2つの各 32bit 整数を、2つのソースから順に取り出して、交互に並べます。
PUNPCKHQDQ xmm1, xmm2/mem128 | 66 0F 6D /r | SSE2 VPUNPCKHQDQ xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 6D /r | AVX VPUNPCKHQDQ ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 6D /r | AVX
128bit 単位で行い、128bit 中の上位 64bit 整数を、2つのソースから順に取り出して、交互に並べます。
パック
PACKSSWB xmm1, xmm2/mem128 | 66 0F 63 /r | SSE2 VPACKSSWB xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 63 /r | AVX VPACKSSWB ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 63 /r | AVX2
2つのソースの、パックされた符号付き 16bit 整数を、それぞれ符号付き 8bit 整数に飽和付きで変換し、結果をパックして宛先に格納します。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
src1 = x, src2 = y * 128bit dst |y7..y0|x7..x0| * 256bit dst |y15..y8|x15..x8|y7..y0|x7..x0|
PACKUSWB xmm1, xmm2/mem128 | 66 0F 67 /r | SSE2 VPACKUSWB xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 67 /r | AVX VPACKUSWB ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 67 /r | AVX2
2つのソースの、パックされた符号付き 16bit 整数を、それぞれ符号なし 8bit 整数に飽和付きで変換し、結果をパックして宛先に格納します。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
PACKSSDW xmm1, xmm2/mem128 | 66 0F 6B /r | SSE2 VPACKSSDW xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 6B /r | AVX VPACKSSDW ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 6B /r | AVX2
2つのソースの、パックされた符号付き 32bit 整数を、符号付き 16bit 整数に飽和付きで変換し、結果をパックして宛先に格納します。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
src1 = x, src2 = y * 128bit dst |y3..y0|x3..x0| * 256bit dst |y7..y4|x7..x4|y3..y0|x3..x0|
PACKUSDW xmm1, xmm2/mem128 | 66 0F 38 2B /r | SSE4.1 VPACKUSDW xmm1, xmm2, xmm3/mem128 | C4 RXB.02 X.src1.0.01 2B /r | AVX VPACKUSDW ymm1, ymm2, ymm3/mem256 | C4 RXB.02 X.src1.0.01 2B /r | AVX2
2つのソースの、パックされた符号付き 32bit 整数を、符号なし 16bit 整数に飽和付きで変換し、結果をパックして宛先に格納します。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
変換後のソースは、64bit を一単位として、下位から順に交互に並びます。
ブレンドコピー
PBLENDVB xmm1, xmm2/mem128 | 66 0F 38 10 /r | SSE4.1 VPBLENDVB xmm1, xmm2, xmm3/mem128, xmm4 | C4 RXB.03 0.src1.0.01 4C /r is4 | AVX VPBLENDVB ymm1, ymm2, ymm3/mem256, ymm4 | C4 RXB.03 0.src1.1.01 4C /r is4 | AVX2
2つのソースの、パックされた 8bit 整数のうち、要素ごとにいずれかの値を宛先にコピーします。
マスクは、最後のオペランド (PBLENDVB の場合は XMM0 レジスタで固定) で指定します。
8bit 単位で、宛先の各位置に対応し、それぞれの最上位ビットよって、どちらをコピーするかを指定します。
ビットが 0 の場合、第1ソースの値、ビットが 1 の場合、第2ソースの値がコピーされます。
マスクは、最後のオペランド (PBLENDVB の場合は XMM0 レジスタで固定) で指定します。
8bit 単位で、宛先の各位置に対応し、それぞれの最上位ビットよって、どちらをコピーするかを指定します。
ビットが 0 の場合、第1ソースの値、ビットが 1 の場合、第2ソースの値がコピーされます。
PBLENDW xmm1, xmm2/mem128, imm8 | 66 0F 3A 0E /r ib | SSE4.1 VPBLENDW xmm1, xmm2, xmm3/mem128, imm8 | C4 RXB.03 X.src1.0.01 0E /r /ib | AVX VPBLENDW ymm1, ymm2, ymm3/mem256, imm8 | C4 RXB.03 X.src1.1.01 0E /r /ib | AVX2
2つのソースの、パックされた 16bit 整数のうち、要素ごとにいずれかの値を宛先にコピーします。
マスクは、8bit 即値で指定し、1bit 単位で、宛先の各位置に対応します。
ビットが 0 の場合、第1ソースの値、ビットが 1 の場合、第2ソースの値がコピーされます。
マスクは、8bit 即値で指定し、1bit 単位で、宛先の各位置に対応します。
ビットが 0 の場合、第1ソースの値、ビットが 1 の場合、第2ソースの値がコピーされます。
VPBLENDD xmm1, xmm2, xmm3/mem128, imm8 | C4 RXB.03 0.src1.0.01 02 /r /ib | AVX2 VPBLENDD ymm1, ymm2, ymm3/mem256, imm8 | C4 RXB.03 0.src1.1.01 02 /r /ib | AVX2
2つのソースの、パックされた 32bit 整数のうち、要素ごとにいずれかの値を宛先にコピーします。
マスクは、8bit 即値で指定し、1bit 単位で、宛先の各位置に対応します。
ビットが 0 の場合、第1ソースの値、ビットが 1 の場合、第2ソースの値がコピーされます。
マスクは、8bit 即値で指定し、1bit 単位で、宛先の各位置に対応します。
ビットが 0 の場合、第1ソースの値、ビットが 1 の場合、第2ソースの値がコピーされます。
シャッフルコピー
PSHUFB xmm1, xmm2/mem128 | 66 0F 38 00 /r | SSSE3 VPSHUFB xmm1, xmm2, xmm3/mem128 | C4 RXB.02 X.src1.0.01 00 /r | AVX VPSHUFB ymm1, ymm2, ymm3/mem256 | C4 RXB.02 X.src1.1.01 00 /r | AVX2
最後のオペランドの制御値に従って、宛先の各 8bit 整数を、ソースの任意の位置からコピーするか、0 にします。
PSHUFB の場合、ソースと宛先は同じレジスタです。
制御値は、8bit 単位で宛先の各位置に対応します。
それぞれの最上位ビットは、値をクリアするかのフラグで、それ以下のビットは、コピーする値のインデックス位置です。
最上位ビットが 1 の場合、宛先の 8bit 値を 0 にします。ビットが 0 の場合、指定位置のソースから値をコピーします。
256bit の場合、128bit 単位で処理されます。インデックス値は、上位 128bit と下位 128bit のそれぞれの位置に対応します。
PSHUFB の場合、ソースと宛先は同じレジスタです。
制御値は、8bit 単位で宛先の各位置に対応します。
それぞれの最上位ビットは、値をクリアするかのフラグで、それ以下のビットは、コピーする値のインデックス位置です。
最上位ビットが 1 の場合、宛先の 8bit 値を 0 にします。ビットが 0 の場合、指定位置のソースから値をコピーします。
256bit の場合、128bit 単位で処理されます。インデックス値は、上位 128bit と下位 128bit のそれぞれの位置に対応します。
PSHUFLW xmm1, xmm2/mem128, imm8 | F2 0F 70 /r ib | SSE2 VPSHUFLW xmm1, xmm2/mem128, imm8 | C4 RXB.01 X.1111.0.11 70 /r ib | AVX VPSHUFLW ymm1, ymm2/mem256, imm8 | C4 RXB.01 X.1111.1.11 70 /r ib | AVX2
即値バイトの値に従って、宛先の下位 64bit 中の各 16bit 整数を、第2オペランドの下位 64bit 中の任意の位置からコピーします。
即値バイトは、2bit x 4 で、それぞれ宛先の各位置に対応し、コピーするソースの位置 (0〜3) を指定します。
128bit の場合、ソースの上位 64bit は、宛先の上位 64bit にコピーされます。
256bit の場合、上位 128bit 中の下位 64 bit は、同じ即値バイトを使って、同じように処理されます。
即値バイトは、2bit x 4 で、それぞれ宛先の各位置に対応し、コピーするソースの位置 (0〜3) を指定します。
128bit の場合、ソースの上位 64bit は、宛先の上位 64bit にコピーされます。
256bit の場合、上位 128bit 中の下位 64 bit は、同じ即値バイトを使って、同じように処理されます。
PSHUFHW xmm1, xmm2/mem128, imm8 | F3 0F 70 /r ib | SSE2 VPSHUFHW xmm1, xmm2/mem128, imm8 | C4 RXB.01 X.1111.0.10 70 /r ib | AVX VPSHUFHW ymm1, ymm2/mem256, imm8 | C4 RXB.01 X.1111.1.10 70 /r ib | AVX2
即値バイトの値に従って、宛先の上位 64bit の各 16bit 整数を、第2オペランドの上位 64bit 中の任意の位置からコピーします。
即値バイトは、2bit x 4 で、それぞれ宛先の各位置に対応し、コピーするソースの位置 (0〜3) を指定します。
※実際は、64bit 分の位置が加算され、上位 64bit の位置を指定することになります。
128bit の場合、ソースの下位 64bit は、宛先の下位 64bit にコピーされます。
256bit の場合、上位 128bit 中の上位 64 bit は、同じ即値バイトを使って、同じように処理されます。
即値バイトは、2bit x 4 で、それぞれ宛先の各位置に対応し、コピーするソースの位置 (0〜3) を指定します。
※実際は、64bit 分の位置が加算され、上位 64bit の位置を指定することになります。
128bit の場合、ソースの下位 64bit は、宛先の下位 64bit にコピーされます。
256bit の場合、上位 128bit 中の上位 64 bit は、同じ即値バイトを使って、同じように処理されます。
PSHUFD xmm1, xmm2/mem128, imm8 | 66 0F 70 /r ib | SSE2 VPSHUFD xmm1, xmm2/mem128, imm8 | C4 RXB.01 X.1111.0.01 70 /r ib | AVX VPSHUFD ymm1, ymm2/mem256, imm8 | C4 RXB.01 X.1111.1.01 70 /r ib | AVX2
即値バイトの値に従って、宛先の各 32bit 整数を、第2オペランドの任意の位置からコピーします。
即値バイトは、2bit x 4 で、それぞれ宛先の各位置に対応し、コピーするソースの位置 (0〜3) を指定します。
即値バイトは、2bit x 4 で、それぞれ宛先の各位置に対応し、コピーするソースの位置 (0〜3) を指定します。
パック抽出
PEXTRB reg/m8, xmm, imm8 | 66 0F 3A 14 /r ib VPEXTRB reg/mem8, xmm, imm8 | C4 RXB.03 X.1111.0.01 14 /r ib
第2オペランド内の指定位置から 8bit 整数を抽出し、宛先にゼロ拡張して格納します。
位置は、即値オペランドで指定します。
位置は、即値オペランドで指定します。
PEXTRW reg, xmm, imm8 | 66 0F C5 /r ib | SSE2 PEXTRW reg/m16, xmm, imm8 | 66 0F 3A 15 /r ib | SSE4.1 VPEXTRW reg, xmm, imm8 | C4 RXB.01 X.1111.0.01 C5 /r ib | AVX VPEXTRW reg/mem16, xmm, imm8 | C4 RXB.03 X.1111.0.01 15 /r ib | AVX
第2オペランド内の指定位置から 16bit 整数を抽出し、宛先にゼロ拡張して格納します。
位置は、即値オペランドで指定します。
位置は、即値オペランドで指定します。
PEXTRD reg32/mem32, xmm, imm8 | 66 (W0) 0F 3A 16 /r ib | SSE4.1 VPEXTRD reg32/mem32, xmm, imm8 | C4 RXB.03 0.1111.0.01 16 /r ib | AVX
第2オペランド内の指定位置から 32bit 整数を抽出し、宛先に格納します。
位置は、即値オペランドで指定します。
位置は、即値オペランドで指定します。
PEXTRQ reg64/mem64, xmm, imm8 | 66 (W1) 0F 3A 16 /r ib | SSE4.1 VPEXTRQ reg64/mem64, xmm, imm8 | C4 RXB.03 1.1111.0.01 16 /r ib | AVX
第2オペランド内の指定位置から 64bit 整数を抽出し、宛先に格納します。
位置は、即値オペランドで指定します。
位置は、即値オペランドで指定します。
パック挿入
PINSRB xmm, reg32/mem8, imm8 | 66 0F 3A 20 /r ib | SSE4.1 VPINSRB xmm1, xmm2, reg32/mem8, imm8 | C4 RXB.03 X.1111.0.01 20 /r ib | AVX
宛先の、即値オペランドで指定された位置に、8bit メモリまたは 32bit 汎用レジスタの下位 8bit の値を挿入します。
PINSRW xmm, reg32/mem16, imm8 | 66 0F C4 /r ib | SSE2 VPINSRW xmm, reg32/mem16, xmm, imm8 | C4 RXB.01 X.1111.0.01 C4 /r ib | AVX
宛先の、即値オペランドで指定された位置に、16bit メモリまたは 32bit 汎用レジスタの下位 16bit の値を挿入します。
PINSRD xmm, reg32/mem32, imm8 | 66 (W0) 0F 3A 22 /r ib | SSE4.1 VPINSRD xmm1, xmm2, reg32/mem32, imm8 | C4 RXB.03 0.1111.0.01 22 /r ib | AVX
宛先の、即値オペランドで指定された位置に、32bit メモリまたは 32bit 汎用レジスタの値を挿入します。
PINSRQ xmm, reg64/mem64, imm8 | 66 (W1) 0F 3A 22 /r ib | SSE4.1 VPINSRQ xmm1, xmm2, reg64/mem64, imm8 | C4 RXB.03 1.1111.0.01 22 /r ib | AVX
宛先の、即値オペランドで指定された位置に、64bit メモリまたは 64bit 汎用レジスタの値を挿入します。
ゼロ拡張
PMOVZXBW xmm1, xmm2/mem64 | 66 0F 38 30 /r | SSE4.1 VPMOVZXBW xmm1, xmm2/mem64 | C4 RXB.02 X.1111.0.01 30 /r | AVX VPMOVZXBW ymm1, xmm2/mem128 | C4 RXB.02 X.1111.1.01 30 /r | AVX2
第2オペランドの、パックされた符号なし 8bit 整数を、それぞれ 16bit にゼロ拡張し、結果を宛先にパックして格納します。
PMOVZXBD xmm1, xmm2/mem32 | 66 0F 38 31 /r | SSE4.1 VPMOVZXBD xmm1, xmm2/mem32 | C4 RXB.02 X.1111.0.01 31 /r | AVX VPMOVZXBD ymm1, xmm2/mem64 | C4 RXB.02 X.1111.1.01 31 /r | AVX2
第2オペランドの、パックされた符号なし 8bit 整数を、それぞれ 32bit にゼロ拡張し、結果を宛先にパックして格納します。
PMOVZXBQ xmm1, xmm2/mem16 | 66 0F 38 32 /r | SSE4.1 VPMOVZXBQ xmm1, xmm2/mem16 | C4 RXB.02 X.1111.0.01 32 /r | AVX VPMOVZXBQ ymm1, xmm2/mem32 | C4 RXB.02 X.1111.1.01 32 /r | AVX2
第2オペランドの、パックされた符号なし 8bit 整数を、それぞれ 64bit にゼロ拡張し、結果を宛先にパックして格納します。
PMOVZXWD xmm1, xmm2/mem64 | 66 0F 38 33 /r | SSE4.1 VPMOVZXWD xmm1, xmm2/mem64 | C4 RXB.02 X.1111.0.01 33 /r | AVX VPMOVZXWD ymm1, xmm2/mem128 | C4 RXB.02 X.1111.1.01 33 /r | AVX2
第2オペランドの、パックされた符号なし 16bit 整数を、それぞれ 32bit にゼロ拡張し、結果を宛先にパックして格納します。
PMOVZXWQ xmm1, xmm2/mem32 | 66 0F 38 34 /r | SSE4.1 VPMOVZXWQ xmm1, xmm2/mem32 | C4 RXB.02 X.1111.0.01 34 /r | AVX VPMOVZXWQ ymm1, xmm2/mem64 | C4 RXB.02 X.1111.1.01 34 /r | AVX2
第2オペランドの、パックされた符号なし 16bit 整数を、それぞれ 64bit にゼロ拡張し、結果を宛先にパックして格納します。
PMOVZXDQ xmm1, xmm2/mem64 | 66 0F 38 35 /r | SSE4.1 VPMOVZXDQ xmm1, xmm2/mem64 | C4 RXB.02 X.1111.0.01 35 /r | AVX VPMOVZXDQ ymm1, xmm2/mem128 | C4 RXB.02 X.1111.1.01 35 /r | AVX2
第2オペランドの、パックされた符号なし 32bit 整数を、それぞれ 64bit にゼロ拡張し、結果を宛先にパックして格納します。
符号拡張
PMOVSXBW xmm1, xmm2/mem64 | 66 0F 38 20 /r | SSE4.1 VPMOVSXBW xmm1, xmm2/mem64 | C4 RXB.02 X.1111.0.01 20 /r | AVX VPMOVSXBW ymm1, xmm2/mem128 | C4 RXB.02 X.1111.1.01 20 /r | AVX2
第2オペランドの、パックされた符号付き 8bit 整数を、それぞれ 16bit に符号拡張し、結果を宛先にパックして格納します。
PMOVSXBD xmm1, xmm2/mem32 | 66 0F 38 21 /r | SSE4.1 VPMOVSXBD xmm1, xmm2/mem32 | C4 RXB.02 X.1111.0.01 21 /r | AVX VPMOVSXBD ymm1, xmm2/mem64 | C4 RXB.02 X.1111.1.01 21 /r | AVX2
第2オペランドの、パックされた符号付き 8bit 整数を、それぞれ 32bit に符号拡張し、結果を宛先にパックして格納します。
PMOVSXBQ xmm1, xmm2/mem16 | 66 0F 38 22 /r | SSE4.1 VPMOVSXBQ xmm1, xmm2/mem16 | C4 RXB.02 X.1111.0.01 22 /r | AVX VPMOVSXBQ ymm1, xmm2/mem32 | C4 RXB.02 X.1111.1.01 22 /r | AVX2
第2オペランドの、パックされた符号付き 8bit 整数を、それぞれ 64bit に符号拡張し、結果を宛先にパックして格納します。
PMOVSXWD xmm1, xmm2/mem64 | 66 0F 38 23 /r | SSE4.1 VPMOVSXWD xmm1, xmm2/mem64 | C4 RXB.02 X.1111.0.01 23 /r | AVX VPMOVSXWD ymm1, xmm2/mem128 | C4 RXB.02 X.1111.1.01 23 /r | AVX2
第2オペランドの、パックされた符号付き 16bit 整数を、それぞれ 32bit に符号拡張し、結果を宛先にパックして格納します。
PMOVSXWQ xmm1, xmm2/mem32 | 66 0F 38 24 /r | SSE4.1 VPMOVSXWQ xmm1, xmm2/mem32 | C4 RXB.02 X.1111.0.01 24 /r | AVX VPMOVSXWQ ymm1, xmm2/mem64 | C4 RXB.02 X.1111.1.01 24 /r | AVX2
第2オペランドの、パックされた符号付き 16bit 整数を、それぞれ 64bit に符号拡張し、結果を宛先にパックして格納します。
PMOVSXDQ xmm1, xmm2/mem64 | 66 0F 38 25 /r | SSE4.1 VPMOVSXDQ xmm1, xmm2/mem64 | C4 RXB.02 X.1111.0.01 25 /r | AVX VPMOVSXDQ ymm1, xmm2/mem128 | C4 RXB.02 X.1111.1.01 25 /r | AVX2
第2オペランドの、パックされた符号付き 32bit 整数を、それぞれ 64bit に符号拡張し、結果を宛先にパックして格納します。
符号抽出
PMOVMSKB reg32, xmm1 | 66 0F D7 /r | SSE2 VMOVMSKB reg64, xmm1 | C4 RXB.01 X.1111.0.01 D7 /r | AVX VMOVMSKB reg64, ymm1 | C4 RXB.01 X.1111.1.01 D7 /r | AVX2
第2オペランドの各 8bit 整数の最上位ビットから、16bit または 32bit のマスクを作成し、値をゼロ拡張して宛先に書き込みます。
符号評価
PSIGNB xmm1, xmm2/mem128 | 66 0F 38 08 /r | SSSE3 VPSIGNB xmm1, xmm2, xmm2/mem128 | C4 RXB.02 X.src1.0.01 08 /r | AVX VPSIGNB ymm1, ymm2, ymm2/mem256 | C4 RXB.02 X.src1.1.01 08 /r | AVX2
第2ソースのパックされた符号付き 8bit 整数値を評価して、以下のように処理します。
- 負の場合、第1ソースの対応するバイトのビットを反転して、宛先に書き込みます。
- 正の場合、第1ソースの対応するバイトを、宛先にコピーします。
- 0 の場合、宛先の対応するバイトを 0 にします。
PSIGNW xmm1, xmm2/mem128 | 66 0F 38 09 /r | SSSE3 VPSIGNW xmm1, xmm2, xmm3/mem128 | C4 RXB.02 X.src1.0.01 09 /r | AVX VPSIGNW ymm1, ymm2, ymm3/mem256 | C4 RXB.02 X.src1.1.01 09 /r | AVX2
第2ソースのパックされた符号付き 16bit 整数値を評価して、以下のように処理します。
- 負の場合、第1ソースの対応する 16bit 値のビットを反転して、宛先に書き込みます。
- 正の場合、第1ソースの対応する 16bit 値を、宛先にコピーします。
- 0 の場合、宛先の対応する 16bit 値を 0 にします。
PSIGND xmm1, xmm2/mem128 | 66 0F 38 0A /r | SSSE3 VPSIGND xmm1, xmm2, xmm3/mem128 | C4 RXB.02 X.src1.0.01 0A /r | AVX VPSIGND ymm1, ymm2, ymm3/mem256 | C4 RXB.02 X.src1.1.01 0A /r | AVX
第2ソースのパックされた符号付き 32bit 整数値を評価して、以下のように処理します。
- 負の場合、第1ソースの対応する 32bit 値のビットを反転して、宛先に書き込みます。
- 正の場合、第1ソースの対応する 32bit 値を、宛先にコピーします。
- 0 の場合、宛先の対応する 32bit 値を 0 にします。