移動 | |
MOVD VMOVD | 32bit 整数値の移動 (ゼロ拡張) [SSE2] |
---|---|
MOVQ VMOVQ | 64bit 整数値の移動 (ゼロ拡張) [SSE2] |
MOVDQA VMOVDQA | パック整数値の移動 [SSE2] |
MOVSS VMOVSS | 単精度値 (32bit) の移動 [SSE] |
MOVSD VMOVSD | 倍精度値 (64bit) の移動 [SSE2] |
MOVAPS VMOVAPS | パック単精度の移動 [SSE] |
MOVAPD VMOVAPD | パック倍精度の移動 [SSE2] |
非アライメントの移動 | |
MOVDQU VMOVDQU | パック整数値の移動 (非アライメント) [SSE2] |
MOVUPS VMOVUPS | パック単精度の移動 (非アライメント) [SSE] |
MOVUPD VMOVUPD | パック倍精度の移動 (非アライメント) [SSE2] |
LDDQU VLDDQU | パック整数値のロード (非アライメント、最適化) [SSE3] |
非テンポラル移動 | |
MOVNTDQ VMOVNTDQ | 非テンポラルの移動 (パック整数) [SSE2] |
MOVNTDQA VMOVNTDQA | 非テンポラルの移動 (パック整数、ロード) [SSE4.1] |
MOVNTPS VMOVNTPS | 非テンポラルの移動 (パック単精度) [SSE] |
MOVNTPD VMOVNTPD | 非テンポラルの移動 (パック倍精度) [SSE2] |
マスク付き移動 | |
MASKMOVDQU VMASKMOVDQU | パック8bit整数のマスク付き移動 [SSE2] |
VPMASKMOVD | パック32bit整数のマスク付きロード/ストア [AVX2] |
VPMASKMOVQ | パック64bit整数のマスク付きロード/ストア [AVX2] |
VMASKMOVPS | パック単精度のマスク付きロード/ストア [AVX] |
VMASKMOVPD | パック倍精度のマスク付きロード/ストア [AVX] |
レジスタに同じ値を並べる | |
VBROADCASTF128 | 128bit 浮動小数点を、YMM の上位と下位にセット [AVX] |
VBROADCASTI128 | 128bit 整数を、YMM の上位と下位にセット [AVX2] |
VPBROADCASTB | 8bit 整数値をレジスタ全体に並べる [AVX2] |
VPBROADCASTW | 16bit 整数値をレジスタ全体に並べる [AVX2] |
VPBROADCASTD | 32bit 整数値をレジスタ全体に並べる [AVX2] |
VPBROADCASTQ | 64bit 整数値をレジスタ全体に並べる [AVX2] |
VBROADCASTSS | 単精度値をレジスタに並べる [AVX/AVX2] |
VBROADCASTSD | 倍精度値をレジスタに並べる [AVX/AVX2] |
選択コピー | |
VPERMD | パック32bit整数 選択コピー (位置) [AVX2] |
VPERMQ | パック64bit整数 選択コピー (位置) [AVX2] |
VPERMPS | パック単精度の選択コピー (位置) [AVX2] |
VPERMPD | パック倍精度の選択コピー (位置) [AVX2] |
VPERMILPS | パック単精度の選択コピー (128bit 単位) [AVX] |
VPERMILPD | パック倍精度の選択コピー (128bit 単位) [AVX] |
VPERM2F128 | 128bit 単位で、2つのソースか 0 の値をコピー (浮動小数点) [AVX] |
VPERM2I128 | 128bit 単位で、2つのソースか 0 の値をコピー (整数) [AVX2] |
128bit 抽出/挿入 | |
VEXTRACTF128 | 128bit の上位か下位を抽出 (浮動小数点) [AVX] |
VEXTRACTI128 | 128bit の上位か下位を抽出 (整数) [AVX2] |
VINSERTF128 | 128bit 挿入 (浮動小数点) [AVX] |
VINSERTI128 | 128bit 挿入 (整数) [AVX2] |
VSIB アドレス指定 | |
VGATHERDPS | VSIB アドレス指定でパック単精度をロード (DWORD) [AVX2] |
VGATHERDPD | VSIB アドレス指定でパック倍精度をロード (DWORD) [AVX2] |
VGATHERQPS | VSIB アドレス指定でパック単精度をロード (QWORD) [AVX2] |
VGATHERQPD | VSIB アドレス指定でパック倍精度をロード (QWORD) [AVX2] |
VPGATHERDD | VSIB アドレス指定でパック32bit整数をロード (DWORD) [AVX2] |
VPGATHERDQ | VSIB アドレス指定でパック64bit整数をロード (DWORD) [AVX2] |
VPGATHERQD | VSIB アドレス指定でパック32bit整数をロード (QWORD) [AVX2] |
VPGATHERQQ | VSIB アドレス指定でパック64bit整数をロード (QWORD) [AVX2] |
クリア | |
VZEROALL | すべての YMM レジスタをクリア [AVX] |
VZEROUPPER | すべての YMM レジスタの上位128bitをクリア [AVX] |
MXCSR | |
STMXCSR VSTMXCSR | MXCSR の値をメモリに保存 [SSE] |
LDMXCSR VLDMXCSR | メモリから MXCSR レジスタにロード [SSE] |
移動
MOVD xmm, reg32/mem32 | 66 (W0) 0F 6E /r | SSE2 MOVD reg32/mem32, xmm | 66 (W0) 0F 7E /r | SSE2 VMOVD xmm, reg32/mem32 | C4 RXB.00001 0.1111.0.01 6E /r | AVX *MOVQ の場合あり VMOVD reg32/mem32, xmm | C4 RXB.00001 0.1111.0.01 7E /r | AVX *MOVQ の場合あり
XMM レジスタと汎用レジスタ/メモリ間で、32bit 整数値を移動します。
宛先がレジスタの場合、ゼロ拡張されます。
VMOVD の場合、対応する YMM レジスタの上位 128bit はクリアされます。
宛先がレジスタの場合、ゼロ拡張されます。
VMOVD の場合、対応する YMM レジスタの上位 128bit はクリアされます。
MOVQ xmm, reg64/mem64 | 66 (W1) 0F 6E /r | SSE2 MOVQ reg64/mem64, xmm | 66 (W1) 0F 7E /r | SSE2 MOVQ xmm1, xmm2/mem64 | F3 0F 7E /r | SSE2 MOVQ xmm1/mem64, xmm2 | 66 0F D6 /r | SSE2 VMOVQ xmm, reg64/mem64 | C4 RXB.00001 1.1111.0.01 6E /r | AVX VMOVQ reg64/mem64, xmm | C4 RXB.00001 1.1111.0.01 7E /r | AVX VMOVQ xmm1, xmm2 | C4 RXB.00001 X.1111.0.10 7E /r | AVX VMOVQ xmm1, mem64 | C4 RXB.00001 X.1111.0.10 7E /r | AVX VMOVQ xmm1/mem64, xmm2 | C4 RXB.00001 X.1111.0.01 D6 /r | AVX
XMM レジスタと、XMM レジスタ/汎用レジスタ/メモリ間で、64bit 整数値を移動します。
宛先がレジスタの場合、ゼロ拡張されます。
宛先がレジスタの場合、ゼロ拡張されます。
MOVDQA xmm1, xmm2/mem128 | 66 0F 6F /r | SSE2 MOVDQA xmm1/mem128, xmm2 | 66 0F 7F /r | SSE2 VMOVDQA xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.01 6F /r | AVX VMOVDQA xmm1/mem128, xmm2 | C4 RXB.00001 X.1111.0.01 6F /r | AVX VMOVDQA ymm1, xmm2/mem256 | C4 RXB.00001 X.1111.1.01 7F /r | AVX VMOVDQA ymm1/mem256, ymm2 | C4 RXB.00001 X.1111.1.01 7F /r | AVX
パックされた整数値 (128/256bit) を移動します。
メモリがアライメントされていないと、一般保護例外が発生します。
メモリがアライメントされていないと、一般保護例外が発生します。
MOVSS xmm1, xmm2 | F3 0F 10 /r | SSE MOVSS xmm1, mem32 | F3 0F 10 /r | SSE MOVSS xmm2/mem32, xmm1 | F3 0F 11 /r | SSE VMOVSS xmm1, mem32 | C4 RXB.00001 X.1111.X.10 10 /r | AVX VMOVSS mem32, xmm1 | C4 RXB.00001 X.1111.X.10 11 /r | AVX VMOVSS xmm1, xmm2, xmm3 | C4 RXB.00001 X.src.X.10 10 /r | AVX VMOVSS xmm1, xmm2, xmm3 | C4 RXB.00001 X.src.X.10 11 /r | AVX
一つの単精度浮動小数点として、32bit 値を移動します。
ソースがレジスタの場合、SSE バージョンでは、宛先の bit 127:32 は変更されず、AVX バージョンでは、ソースオペランドの bit 127:32 がコピーされます。
ソースがメモリの場合、宛先レジスタのサイズにゼロ拡張されます。
ソースがレジスタの場合、SSE バージョンでは、宛先の bit 127:32 は変更されず、AVX バージョンでは、ソースオペランドの bit 127:32 がコピーされます。
ソースがメモリの場合、宛先レジスタのサイズにゼロ拡張されます。
MOVSD xmm1, xmm2/mem64 | F2 0F 10 /r | SSE2 MOVSD xmm1/mem64, xmm2 | F2 0F 11 /r | SSE2 VMOVSD xmm1, mem64 | C4 RXB.00001 X.1111.X.11 10 /r | AVX VMOVSD mem64, xmm1 | C4 RXB.00001 X.1111.X.11 11 /r | AVX VMOVSD xmm1, xmm2, xmm3 | C4 RXB.00001 X.src.X.11 10 /r | AVX VMOVSD xmm1, xmm2, xmm3 | C4 RXB.00001 X.src.X.11 11 /r | AVX
一つの倍精度浮動小数点として、64bit 値を移動します。
ソースがレジスタの場合、SSE バージョンでは、宛先の bit 127:64 は変更されず、AVX バージョンでは、ソースオペランドの bit 127:64 がコピーされます。
ソースがメモリの場合、宛先レジスタのサイズにゼロ拡張されます。
ソースがレジスタの場合、SSE バージョンでは、宛先の bit 127:64 は変更されず、AVX バージョンでは、ソースオペランドの bit 127:64 がコピーされます。
ソースがメモリの場合、宛先レジスタのサイズにゼロ拡張されます。
MOVAPS xmm1, xmm2/mem128 | 0F 28 /r | SSE MOVAPS xmm1/mem128, xmm2 | 0F 29 /r | SSE VMOVAPS xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.00 28 /r | AVX VMOVAPS xmm1/mem128, xmm2 | C4 RXB.00001 X.1111.0.00 29 /r | AVX VMOVAPS ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.00 28 /r | AVX VMOVAPS ymm1/mem256, ymm2 | C4 RXB.00001 X.1111.1.00 29 /r | AVX
パック倍精度浮動小数点値 (128/256bit) を移動します。
メモリがアライメントされていないと、一般保護例外が発生します。
MOVAPS の場合、対応する YMM レジスタの上位 128bit は変更されません。
VMOVAPS (XMM) の場合、対応する YMM レジスタの上位 128bit はクリアされます。
メモリがアライメントされていないと、一般保護例外が発生します。
MOVAPS の場合、対応する YMM レジスタの上位 128bit は変更されません。
VMOVAPS (XMM) の場合、対応する YMM レジスタの上位 128bit はクリアされます。
MOVAPD xmm1, xmm2/mem128 | 66 0F 28 /r | SSE2 MOVAPD xmm1/mem128, xmm2 | 66 0F 29 /r | SSE2 VMOVAPD xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.01 28 /r | AVX VMOVAPD xmm1/mem128, xmm2 | C4 RXB.00001 X.1111.0.01 29 /r | AVX VMOVAPD ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.01 28 /r | AVX VMOVAPD ymm1/mem256, ymm2 | C4 RXB.00001 X.1111.1.01 29 /r | AVX
パック倍精度浮動小数点値 (128/256bit) を移動します。
メモリがアライメントされていないと、一般保護例外が発生します。
MOVAPD の場合、対応する YMM レジスタの上位 128bit は変更されません。
VMOVAPD (XMM) の場合、対応する YMM レジスタの上位 128bit はクリアされます。
メモリがアライメントされていないと、一般保護例外が発生します。
MOVAPD の場合、対応する YMM レジスタの上位 128bit は変更されません。
VMOVAPD (XMM) の場合、対応する YMM レジスタの上位 128bit はクリアされます。
非アライメントの移動
MOVDQU xmm1, xmm2/mem128 | F3 0F 6F /r | SSE2 MOVDQU xmm1/mem128, xmm2 | F3 0F 7F /r | SSE2 VMOVDQU xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.10 6F /r | AVX VMOVDQU xmm1/mem128, xmm2 | C4 RXB.00001 X.1111.0.10 6F /r | AVX VMOVDQU ymm1, xmm2/mem256 | C4 RXB.00001 X.1111.1.10 7F /r | AVX VMOVDQU ymm1/mem256, ymm2 | C4 RXB.00001 X.1111.1.10 7F /r | AVX
アライメントされていない、パック整数値 (128/256bit) を移動します。
MOVUPS xmm1, xmm2/mem128 | 0F 10 /r | SSE MOVUPS xmm1/mem128, xmm2 | 0F 11 /r | SSE VMOVUPS xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.00 10 /r | AVX VMOVUPS xmm1/mem128, xmm2 | C4 RXB.00001 X.1111.0.00 11 /r | AVX VMOVUPS ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.00 10 /r | AVX VMOVUPS ymm1/mem256, ymm2 | C4 RXB.00001 X.1111.1.00 11 /r | AVX
アライメントされていない、パック単精度浮動小数点値 (128/256bit) を移動します。
MOVUPD xmm1, xmm2/mem128 | 66 0F 10 /r | SSE2 MOVUPD xmm1/mem128, xmm2 | 66 0F 11 /r | SSE2 VMOVUPD xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.01 10 /r | AVX VMOVUPD xmm1/mem128, xmm2 | C4 RXB.00001 X.1111.0.01 11 /r | AVX VMOVUPD ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.01 10 /r | AVX VMOVUPD ymm1/mem256, ymm2 | C4 RXB.00001 X.1111.1.01 11 /r | AVX
アライメントされていない、パック倍精度浮動小数点値 (128/256bit) を移動します。
LDDQU xmm1, mem128 | F2 0F F0 /r | SSE3 VLDDQU xmm1, mem128 | C4 RXB.00001 X.1111.0.11 F0 /r | AVX VLDDQU ymm1, mem256 | C4 RXB.00001 X.1111.1.11 F0 /r | AVX
アライメントされていないメモリから、パック整数値 (128bit/256bit) を、宛先レジスタにロードします。
メモリが実際にアライメントされていない場合のパフォーマンスを向上させるために、アライメントされた 16 or 32 byte 値を2回読み込み、値を調整して格納する場合があります (この動作は実装固有です)。
余分なバイトの読み込みによって問題が発生する可能性がある場合、代わりに (V)MOVUPD を使用してください。
メモリが実際にアライメントされていない場合のパフォーマンスを向上させるために、アライメントされた 16 or 32 byte 値を2回読み込み、値を調整して格納する場合があります (この動作は実装固有です)。
余分なバイトの読み込みによって問題が発生する可能性がある場合、代わりに (V)MOVUPD を使用してください。
非テンポラル移動
MOVNTDQ mem128, xmm | 66 0F E7 /r | SSE2 VMOVNTDQ mem128, xmm | C4 RXB.00001 X.1111.0.01 E7 /r | AVX VMOVNTDQ mem256, ymm | C4 RXB.00001 X.1111.1.01 E7 /r | AVX
パック整数値として、レジスタの値をメモリに移動します。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置にストアしようとすると、#GP 例外が発生します。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置にストアしようとすると、#GP 例外が発生します。
MOVNTDQA xmm, mem128 | 66 0F 38 2A /r | SSE4.1 VMOVNTDQA xmm, mem128 | C4 RXB.02 X.1111.0.01 2A /r | AVX VMOVNTDQA ymm, mem256 | C4 RXB.02 X.1111.1.01 2A /r | AVX2
アライメントされたメモリ位置から、パック整数値として、XMM/YMM レジスタに値をロードします。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置からロードしようとすると、#GP 例外が発生します。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置からロードしようとすると、#GP 例外が発生します。
MOVNTPS mem128, xmm | 0F 2B /r VMOVNTPS mem128, xmm | C4 RXB.00001 X.1111.0.00 2B /r VMOVNTPS mem256, ymm | C4 RXB.00001 X.1111.1.00 2B /r
パック単精度浮動小数点値として、レジスタの値をメモリに移動します。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置にストアしようとすると、#GP 例外が発生します。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置にストアしようとすると、#GP 例外が発生します。
MOVNTPD mem128, xmm | 66 0F 2B /r | SSE2 VMOVNTPD mem128, xmm | C4 RXB.00001 X.1111.0.01 2B /r | AVX VMOVNTPD mem256, ymm | C4 RXB.00001 X.1111.1.01 2B /r | AVX
パック倍精度浮動小数点値として、レジスタの値をメモリに移動します。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置にストアしようとすると、#GP 例外が発生します。
データが非一時的であり、すぐに再使用される可能性が低いことをプロセッサに示します。
アライメントされていないメモリ位置にストアしようとすると、#GP 例外が発生します。
マスク付き移動
MASKMOVDQU xmm1, xmm2 | 66 0F F7 /r | SSE2 VMASKMOVDQU xmm1, xmm2 | C4 RXB.00001 X.1111.0.01 F7 /r | AVX
第1オペランドのパックされた 8bit 整数値を、第2オペランドで指定されたマスクに従って、DS:rDI レジスタで指定されたメモリ位置に移動します。
マスクは、8bit 単位で第1オペランドに対応し、それぞれの最上位ビットで動作を指定します。
ビットが 1 の場合、対応するバイトがメモリに書き込まれ、ビットが 0 の場合は、書き込まれません。
書き込みに選択されていないデータの例外とトラップの動作は実装に依存します。
特定の実装では、実際には書き込まれていないバイトに対して、データブレークポイントまたはページフォールトを通知する場合があります。
マスクは、8bit 単位で第1オペランドに対応し、それぞれの最上位ビットで動作を指定します。
ビットが 1 の場合、対応するバイトがメモリに書き込まれ、ビットが 0 の場合は、書き込まれません。
書き込みに選択されていないデータの例外とトラップの動作は実装に依存します。
特定の実装では、実際には書き込まれていないバイトに対して、データブレークポイントまたはページフォールトを通知する場合があります。
VPMASKMOVD xmm1, xmm2, mem128 | C4 RXB.02 0.src1.0.01 8C /r | AVX2 VPMASKMOVD ymm1, ymm2, mem256 | C4 RXB.02 0.src1.1.01 8C /r | AVX2 VPMASKMOVD mem128, xmm1, xmm2 | C4 RXB.02 0.src1.0.01 8E /r | AVX2 VPMASKMOVD mem256, ymm1, ymm2 | C4 RXB.02 0.src1.1.01 8E /r | AVX2
宛先がレジスタになっているのがロードバージョン、宛先がメモリになっているのがストアバージョンです。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック 32bit 整数値の各要素を、宛先に移動します。
マスク値は、32bit 単位で各要素に対応し、それぞれの最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
この命令は、非テンポラルアクセスのヒントを提供しません。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック 32bit 整数値の各要素を、宛先に移動します。
マスク値は、32bit 単位で各要素に対応し、それぞれの最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
この命令は、非テンポラルアクセスのヒントを提供しません。
VPMASKMOVQ xmm1, xmm2, mem128 | C4 RXB.02 1.src1.0.01 8C /r | AVX2 VPMASKMOVQ ymm1, ymm2, mem256 | C4 RXB.02 1.src1.1.01 8C /r | AVX2 VPMASKMOVQ mem128, xmm1, xmm2 | C4 RXB.02 1.src1.0.01 8E /r | AVX2 VPMASKMOVQ mem256, ymm1, ymm2 | C4 RXB.02 1.src1.1.01 8E /r | AVX2
宛先がレジスタになっているのがロードバージョン、宛先がメモリになっているのがストアバージョンです。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック 64bit 整数値の各要素を、宛先に移動します。
マスク値は、64bit 単位で各要素に対応し、その最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
この命令は、非テンポラルアクセスのヒントを提供しません。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック 64bit 整数値の各要素を、宛先に移動します。
マスク値は、64bit 単位で各要素に対応し、その最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
この命令は、非テンポラルアクセスのヒントを提供しません。
VMASKMOVPS xmm1, xmm2, mem128 | C4 RXB.02 0.src1.0.01 2C /r | AVX VMASKMOVPS ymm1, ymm2, mem256 | C4 RXB.02 0.src1.1.01 2C /r | AVX VMASKMOVPS mem128, xmm1, xmm2 | C4 RXB.02 0.src1.0.01 2E /r | AVX VMASKMOVPS mem256, ymm1, ymm2 | C4 RXB.02 0.src1.1.01 2E /r | AVX
宛先がレジスタになっているのがロードバージョン、宛先がメモリになっているのがストアバージョンです。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック単精度の各要素を、宛先に移動します。
マスク値は、32bit 単位で各要素に対応し、その最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック単精度の各要素を、宛先に移動します。
マスク値は、32bit 単位で各要素に対応し、その最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
VMASKMOVPD xmm1, xmm2, mem128 | C4 RXB.02 0.src1.0.01 2D /r | AVX VMASKMOVPD ymm1, ymm2, mem256 | C4 RXB.02 0.src1.1.01 2D /r | AVX VMASKMOVPD mem128, xmm1, xmm2 | C4 RXB.02 0.src1.0.01 2F /r | AVX VMASKMOVPD mem256, ymm1, ymm2 | C4 RXB.02 0.src1.1.01 2F /r | AVX
宛先がレジスタになっているのがロードバージョン、宛先がメモリになっているのがストアバージョンです。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック倍精度の各要素を、宛先に移動します。
マスク値は、64bit 単位で各要素に対応し、その最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
2つ目のレジスタオペランド (xmm2/ymm2) のマスクの指定に従って、ソースのパック倍精度の各要素を、宛先に移動します。
マスク値は、64bit 単位で各要素に対応し、その最上位ビットで、コピーするかクリアするか (または変更しない) を指定します。
ビットが 1 の場合、ソースの対応する位置から、値がコピーされます。
ビットが 0 の場合、ロード時はその要素の値が 0 になり、ストア時はメモリに書き込まれません。
レジスタに同じ値を並べる
VBROADCASTF128 ymm1, mem128 | C4 RXB.02 0.1111.1.01 1A /r | AVX
メモリから 128bit の浮動小数点値を読み込み、YMM レジスタの上位と下位に書き込みます。
VBROADCASTI128 ymm1, mem128 | VEX C4 RXB.02 0.1111.1.01 5A /r | AVX2
メモリから 128bit の整数値を読み込み、YMM レジスタの上位と下位に書き込みます。
VPBROADCASTB xmm1, xmm2/mem8 | C4 RXB.02 0.1111.0.01 78 /r | AVX2 VPBROADCASTB ymm1, xmm2/mem8 | C4 RXB.02 0.1111.1.01 78 /r | AVX2
レジスタまたはメモリの 8bit 整数値を、XMM または YMM レジスタ全体に 16 or 32 個並べます。
VPBROADCASTW xmm1, xmm2/mem16 | C4 RXB.02 0.1111.0.01 79 /r | AVX2 VPBROADCASTW ymm1, xmm2/mem16 | C4 RXB.02 0.1111.1.01 79 /r | AVX2
レジスタまたはメモリの 16bit 整数値を、XMM または YMM レジスタ全体に 8 or 16 個並べます。
VPBROADCASTD xmm1, xmm2/mem32 | C4 RXB.02 0.1111.0.01 58 /r | AVX2 VPBROADCASTD ymm1, xmm2/mem32 | C4 RXB.02 0.1111.1.01 58 /r | AVX2
レジスタまたはメモリの 32bit 整数値を、XMM または YMM レジスタ全体に 4 or 8 個並べます。
VPBROADCASTQ xmm1, xmm2/mem64 | C4 RXB.02 0.1111.0.01 59 /r | AVX2 VPBROADCASTQ ymm1, xmm2/mem64 | C4 RXB.02 0.1111.1.01 59 /r | AVX2
レジスタまたはメモリの 64bit 整数値を、XMM または YMM レジスタ全体に 2 or 4 個並べます。
VBROADCASTSS xmm1, xmm2/mem32 | C4 RXB.02 0.1111.0.01 18 /r | mem=AVX, xmm=AVX2 VBROADCASTSS ymm1, xmm2/mem32 | C4 RXB.02 0.1111.1.01 18 /r | mem=AVX, xmm=AVX2
レジスタまたはメモリの単精度浮動小数点値 (32bit) を、XMM または YMM レジスタ全体に 4 or 8 個並べます。
VBROADCASTSD ymm1, xmm2/mem64 | C4 RXB.02 0.1111.1.01 19 /r | mem=AVX, xmm=AVX2
レジスタまたはメモリの倍精度浮動小数点値 (64bit) を、YMM レジスタ全体に4個並べます。
選択コピー
VPERMD ymm1, ymm2, ymm3/mem256 | C4 RXB.02 0.src1.1.01 36 /r | AVX2
第3オペランドの、パックされた 32bit 整数値から、コピーするソース位置を選択して、順に宛先にコピーします。
第2オペランドは、32bit 単位で宛先の各要素に対応し、第3オペランドからコピーする値の、インデックス位置を指定します。
第2オペランドは、32bit 単位で宛先の各要素に対応し、第3オペランドからコピーする値の、インデックス位置を指定します。
VPERMQ ymm1, ymm2/mem256, imm8 | C4 RXB.03 1.1111.1.01 00 /r ib | AVX2
第3オペランドの、パックされた 64bit 整数値から、コピーするソース位置を選択して、順に宛先にコピーします。
即値バイトは、2bit x 4 の値で、第2オペランドからコピーする値の、インデックス位置 (0〜3) を指定します。
即値バイトは、2bit x 4 の値で、第2オペランドからコピーする値の、インデックス位置 (0〜3) を指定します。
VPERMPS ymm1, ymm2, ymm3/mem256 | C4 RXB.02 0.src1.1.01 16 /r | AVX2
第3オペランドの、パックされた 32bit (単精度) 値から、コピーするソース位置を選択して、順に宛先にコピーします。
第2オペランドは、32bit 単位で宛先の各要素に対応し、第3オペランドからコピーする値の、インデックス位置を指定します。
第2オペランドは、32bit 単位で宛先の各要素に対応し、第3オペランドからコピーする値の、インデックス位置を指定します。
VPERMPD ymm1, ymm2/mem256, imm8 | C4 RXB.03 1.1111.1.01 01 /r ib | AVX2
第3オペランドの、パックされた 64bit 値から、コピーするソース位置を選択して、順に宛先にコピーします。
即値バイトは、2bit x 4 で、コピーするソースの位置 (0〜3) を指定します。
即値バイトは、2bit x 4 で、コピーするソースの位置 (0〜3) を指定します。
VPERMILPS xmm1, xmm2, xmm3/mem128 | C4 RXB.02 0.src1.0.01 0C /r | AVX VPERMILPS ymm1, ymm2, ymm3/mem256 | C4 RXB.02 0.src1.1.01 0C /r | AVX VPERMILPS xmm1, xmm2/mem128, imm8 | C4 RXB.03 0.1111.0.01 04 /r ib | AVX VPERMILPS ymm1, ymm2/mem256, imm8 | C4 RXB.03 0.1111.1.01 04 /r ib | AVX
パック単精度の各要素を、128bit 単位の位置で、ソースから宛先にコピーします。
第3オペランドがレジスタまたはメモリの場合、32bit 単位で宛先の各要素に対応し、下位 2bit のみが使用されます。
即値バイトの場合、各 2bit が宛先の各要素に対応します。
値は、0〜3 で、128bit 単位でのソースの位置を指定します。
宛先の上位 128bit は、ソースの上位 128bit の位置を対象とした値になります。
第3オペランドがレジスタまたはメモリの場合、32bit 単位で宛先の各要素に対応し、下位 2bit のみが使用されます。
即値バイトの場合、各 2bit が宛先の各要素に対応します。
値は、0〜3 で、128bit 単位でのソースの位置を指定します。
宛先の上位 128bit は、ソースの上位 128bit の位置を対象とした値になります。
VPERMILPD xmm1, xmm2, xmm3/mem128 | C4 RXB.02 0.src1.0.01 0D /r | AVX VPERMILPD ymm1, ymm2, ymm3/mem256 | C4 RXB.02 0.src1.1.01 0D /r | AVX VPERMILPD xmm1, xmm2/mem128, imm8 | C4 RXB.03 0.1111.0.01 05 /r ib | AVX VPERMILPD ymm1, ymm2/mem256, imm8 | C4 RXB.03 0.1111.1.01 05 /r ib | AVX
パック倍精度の各要素を、128bit 単位の位置で、ソースから宛先にコピーします。
第3オペランドがレジスタまたはメモリの場合、64bit 単位で宛先の各要素に対応し、bit 1 のみが使用されます (bit0, bit63:2 は使用されない)。
即値バイトの場合、各 1 ビットが宛先の各要素に対応します。
ビットが 0 の場合、ソースの対応する位置の値がコピーされ、1 の場合、ソースの対応する位置の一つ上位の値がコピーされます。
第3オペランドがレジスタまたはメモリの場合、64bit 単位で宛先の各要素に対応し、bit 1 のみが使用されます (bit0, bit63:2 は使用されない)。
即値バイトの場合、各 1 ビットが宛先の各要素に対応します。
ビットが 0 の場合、ソースの対応する位置の値がコピーされ、1 の場合、ソースの対応する位置の一つ上位の値がコピーされます。
VPERM2F128 ymm1, ymm2, ymm3/mem256, imm8 | C4 RXB.03 0.src1.1.01 06 /r ib | AVX
即値バイトの指定に従って、2つのソースオペランドのいずれかの上位または下位の 128bit、もしくは値 0 を、宛先の各 128bit 要素にコピーします。
即値バイトの bit 1:0 で、宛先の下位 128bit にコピーする値を指定します。
00b は src1 の下位 128bit、01b は src1 の上位 128bit、10b は src2 の下位 128bit、11b は src2 の上位 128bit。
bit 3 が 1 の場合、宛先の下位 128bit は 0 になります。
bit 5:4 で、宛先の上位 128bit にコピーする値を指定します。値は下位 128bit の場合と同じです。
bit 7 が 1 の場合、宛先の上位 128bit は 0 になります。
即値バイトの bit 1:0 で、宛先の下位 128bit にコピーする値を指定します。
00b は src1 の下位 128bit、01b は src1 の上位 128bit、10b は src2 の下位 128bit、11b は src2 の上位 128bit。
bit 3 が 1 の場合、宛先の下位 128bit は 0 になります。
bit 5:4 で、宛先の上位 128bit にコピーする値を指定します。値は下位 128bit の場合と同じです。
bit 7 が 1 の場合、宛先の上位 128bit は 0 になります。
VPERM2I128 ymm1, ymm2, ymm3/mem256, imm8 | C4 RXB.03 0.src1.1.01 46 /r ib | AVX2
即値バイトの指定に従って、2つのソースオペランドのいずれかの上位または下位の 128bit、もしくは値 0 を、宛先の各 128bit 要素にコピーします。
即値バイトの bit 1:0 で、宛先の下位 128bit にコピーする値を指定します。
00b は src1 の下位 128bit、01b は src1 の上位 128bit、10b は src2 の下位 128bit、11b は src2 の上位 128bit。
bit 3 が 1 の場合、宛先の下位 128bit は 0 になります。
bit 5:4 で、宛先の上位 128bit にコピーする値を指定します。値は下位 128bit の場合と同じです。
bit 7 が 1 の場合、宛先の上位 128bit は 0 になります。
即値バイトの bit 1:0 で、宛先の下位 128bit にコピーする値を指定します。
00b は src1 の下位 128bit、01b は src1 の上位 128bit、10b は src2 の下位 128bit、11b は src2 の上位 128bit。
bit 3 が 1 の場合、宛先の下位 128bit は 0 になります。
bit 5:4 で、宛先の上位 128bit にコピーする値を指定します。値は下位 128bit の場合と同じです。
bit 7 が 1 の場合、宛先の上位 128bit は 0 になります。
128bit 抽出/挿入
VEXTRACTF128 xmm/mem128, ymm, imm8 | C4 RXB.03 0.1111.1.01 19 /r ib | AVX
即値バイトの指定に従って、YMM レジスタから上位 or 下位の 128bit データ (浮動小数点) を抽出し、宛先に書き込みます。
即値バイトは、bit 0 で、下位 128bit (0) か上位 128bit (1) のどちらを抽出するかを指定します。
即値バイトは、bit 0 で、下位 128bit (0) か上位 128bit (1) のどちらを抽出するかを指定します。
VEXTRACTI128 xmm1/mem128, ymm2, imm8 | C4 RXB.03 0.1111.1.01 39 /r ib | AVX2
即値バイトの指定に従って、YMM レジスタから上位 or 下位の 128bit データ (整数) を抽出し、宛先に書き込みます。
即値バイトは、bit 0 で、下位 128bit (0) か上位 128bit (1) のどちらを抽出するかを指定します。
即値バイトは、bit 0 で、下位 128bit (0) か上位 128bit (1) のどちらを抽出するかを指定します。
VINSERTF128 ymm1, ymm2, xmm3/mem128, imm8 | C4 RXB.03 0.src.1.01 18 /r ib | AVX
第2オペランドをソースとして、上位 128bit か下位 128bit に、第3オペランドの値をコピーして、宛先に書き込みます (浮動小数点)。
即値バイトの bit 0 が 0 の場合、第2オペランドの上位 128bit を宛先の上位 128bit にコピーし、第2オペランドの下位 128bit を宛先の下位 128bit にコピーします。
bit 0 が 1 の場合、第2オペランドの下位 128bit を宛先の下位 128bit にコピーし、第2オペランドの下位 128bit を宛先の上位 128bit にコピーします。
即値バイトの bit 0 が 0 の場合、第2オペランドの上位 128bit を宛先の上位 128bit にコピーし、第2オペランドの下位 128bit を宛先の下位 128bit にコピーします。
bit 0 が 1 の場合、第2オペランドの下位 128bit を宛先の下位 128bit にコピーし、第2オペランドの下位 128bit を宛先の上位 128bit にコピーします。
VINSERTI128 ymm1, ymm2, xmm3/mem128, imm8 | C4 RXB.03 0.src1.1.01 38 /r ib | AVX2
第2オペランドをソースとして、上位 128bit か下位 128bit に、第3オペランドの値をコピーして、宛先に書き込みます (整数)。
即値バイトの bit 0 が 0 の場合、第2オペランドの上位 128bit を宛先の上位 128bit にコピーし、第2オペランドの下位 128bit を宛先の下位 128bit にコピーします。
bit 0 が 1 の場合、第2オペランドの下位 128bit を宛先の下位 128bit にコピーし、第2オペランドの下位 128bit を宛先の上位 128bit にコピーします。
即値バイトの bit 0 が 0 の場合、第2オペランドの上位 128bit を宛先の上位 128bit にコピーし、第2オペランドの下位 128bit を宛先の下位 128bit にコピーします。
bit 0 が 1 の場合、第2オペランドの下位 128bit を宛先の下位 128bit にコピーし、第2オペランドの下位 128bit を宛先の上位 128bit にコピーします。
VSIB アドレス指定
VGATHERDPS xmm1, vm32x, xmm2 | C4 RXB.02 0.src2.0.01 92 /r | AVX2 VGATHERDPS ymm1, vm32y, ymm2 | C4 RXB.02 0.src2.1.01 92 /r | AVX2
DWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから単精度値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
VGATHERDPD xmm1, vm32x, xmm2 | C4 RXB.02 1.src2.0.01 92 /r | AVX2 VGATHERDPD ymm1, vm32x, ymm2 | C4 RXB.02 1.src2.1.01 92 /r | AVX2
DWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから倍精度値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
マスクは、64bit 単位で、宛先のレジスタに対応します。
各要素の最上位ビットが 1 の場合、VSIB アドレッシングを使用して計算された有効アドレスの配列の i 番目のアドレスを使用して、メモリからロードされます。
この場合、インデックスレジスタは、符号付き 32bit 値の配列として扱われます。
最上位ビットが 0 の場合、宛先の要素は変更されません。
例外が発生しない場合、第3オペランドの値は 0 になります。
ロードされた右端の要素以外の要素によって、例外がトリガーされた場合、命令の実行は、例外によって一時停止されることがあります。
これが起こると、第1オペランドと第3オペランドが部分的に変更された状態になります。
正しくロードされた要素のマスク値は 0 に設定されます。
ロードされた要素から、トラップまたはフォールトが保留されている場合、それらは例外の代わりに配信されます。
この場合、命令の実行が再開されたときに、命令ブレークポイントが再トリガーされないように、RF フラグが設定されます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
マスクは、64bit 単位で、宛先のレジスタに対応します。
各要素の最上位ビットが 1 の場合、VSIB アドレッシングを使用して計算された有効アドレスの配列の i 番目のアドレスを使用して、メモリからロードされます。
この場合、インデックスレジスタは、符号付き 32bit 値の配列として扱われます。
最上位ビットが 0 の場合、宛先の要素は変更されません。
例外が発生しない場合、第3オペランドの値は 0 になります。
ロードされた右端の要素以外の要素によって、例外がトリガーされた場合、命令の実行は、例外によって一時停止されることがあります。
これが起こると、第1オペランドと第3オペランドが部分的に変更された状態になります。
正しくロードされた要素のマスク値は 0 に設定されます。
ロードされた要素から、トラップまたはフォールトが保留されている場合、それらは例外の代わりに配信されます。
この場合、命令の実行が再開されたときに、命令ブレークポイントが再トリガーされないように、RF フラグが設定されます。
VGATHERQPS xmm1, vm64x, xmm2 | C4 RXB.02 0.src2.0.01 93 /r | AVX2 VGATHERQPS xmm1, vm64y, xmm2 | C4 RXB.02 0.src2.1.01 93 /r | AVX2
QWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから単精度値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
VGATHERQPD xmm1, vm64x, xmm2 | C4 RXB.02 1.src2.0.01 93 /r | AVX2 VGATHERQPD ymm1, vm64y, ymm2 | C4 RXB.02 1.src2.1.01 93 /r | AVX2
QWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから倍精度値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
VPGATHERDD xmm1, vm32x, xmm2 | C4 RXB.02 0.src2.0.01 90 /r | AVX2 VPGATHERDD ymm1, vm32y, ymm2 | C4 RXB.02 0.src2.1.01 90 /r | AVX2
DWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから 32bit 整数値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
VPGATHERDQ xmm1, vm32x, xmm2 | C4 RXB.02 1.src2.0.01 90 /r | AVX2 VPGATHERDQ ymm1, vm32x, ymm2 | C4 RXB.02 1.src2.1.01 90 /r | AVX2
DWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから 64bit 整数値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
VPGATHERQD xmm1, vm64x, xmm2 | C4 RXB.02 0.src2.0.01 91 /r | AVX2 VPGATHERQD xmm1, vm64y, xmm2 | C4 RXB.02 0.src2.1.01 91 /r | AVX2
QWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから 32bit 整数値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
VPGATHERQQ xmm1, vm64x, xmm2 | C4 RXB.02 1.src2.0.01 91 /r | AVX2 VPGATHERQQ ymm1, vm64y, ymm2 | C4 RXB.02 1.src2.1.01 91 /r | AVX2
QWORD インデックスを使用した VSIB アドレス指定を使用して、メモリから 64bit 整数値を条件付きでロードします。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
第3オペランドのマスクの値に応じて、条件付きで、宛先レジスタの各要素に値がロードされます。
クリア
VZEROALL | C4 RXB.01 X.1111.1.00 77 | AVX
すべての YMM レジスタをクリアします。
64bit モードでは、YMM0〜15 がすべてクリアされます (値が 0 になる)。
レガシー/互換モードでは、YMM0〜7 のみがクリアされます。
MXCSR の内容は影響を受けません。
64bit モードでは、YMM0〜15 がすべてクリアされます (値が 0 になる)。
レガシー/互換モードでは、YMM0〜7 のみがクリアされます。
MXCSR の内容は影響を受けません。
VZEROUPPER | C4 RXB.01 X.1111.0.00 77 | AVX
すべての YMM レジスタの上位 128bit をクリアします。
対応する XMM レジスタ (下位 128bit) は影響を受けません。
64bit モードでは、YMM0〜15 が対象です。
レガシー/互換モードでは、YMM0〜7 のみが対象です。
MXCSR の内容は影響を受けません。
対応する XMM レジスタ (下位 128bit) は影響を受けません。
64bit モードでは、YMM0〜15 が対象です。
レガシー/互換モードでは、YMM0〜7 のみが対象です。
MXCSR の内容は影響を受けません。
MXCSR
STMXCSR mem32 | 0F AE /3 | SSE VSTMXCSR mem32 | C4 RXB.01 X.1111.0.00 AE /3 | AVX
MXCSR レジスタの内容を、32bit メモリ位置に保存します。
予約ビットは 0 として保存されます。
予約ビットは 0 として保存されます。
LDMXCSR mem32 | 0F AE /2 | SSE VLDMXCSR mem32 | C4 RXB.00001 X.1111.0.00 AE /2 | AVX
32bit のメモリから値を読み込み、MXCSR レジスタにロードします。
MXCSR のロードによって SIMD 浮動小数点例外マスクビットがクリアされ、対応する例外フラグビットが設定された場合、SIMD 浮動小数点例外はすぐには生成されません。
例外は、XMM または YMM レジスタ オペランドを操作し、その特定の SIMD 浮動小数点例外が報告される、次の命令が実行される場合にのみ生成されます。
予約された MXCSR ビットにゼロ以外の値をロードしようとすると、一般保護例外が発生します。
MXCSR のロードによって SIMD 浮動小数点例外マスクビットがクリアされ、対応する例外フラグビットが設定された場合、SIMD 浮動小数点例外はすぐには生成されません。
例外は、XMM または YMM レジスタ オペランドを操作し、その特定の SIMD 浮動小数点例外が報告される、次の命令が実行される場合にのみ生成されます。
予約された MXCSR ビットにゼロ以外の値をロードしようとすると、一般保護例外が発生します。