論理演算 (整数) | |
POR VPOR | OR [SSE2] |
---|---|
PAND VPAND | AND [SSE2] |
PANDN VPANDN | NOT AND [SSE2] |
PXOR VPXOR | XOR [SSE2] |
左シフト | |
PSLLW VPSLLW | パック16bit 左シフト [SSE2] |
PSLLD VPSLLD | パック32bit 左シフト [SSE2] |
PSLLQ VPSLLQ | パック64bit 左シフト [SSE2] |
PSLLDQ VPSLLDQ | パック128bit 左シフト [SSE2] |
VPSLLVD | パック32bit 左シフト (個別) [AVX2] |
VPSLLVQ | パック64bit 左シフト (個別) [AVX2] |
右シフト | |
PSRLW VPSRLW | パック16bit 右シフト (符号なし) [SSE2] |
PSRAW VPSRAW | パック16bit 右シフト (符号付き) [SSE2] |
PSRLD VPSRLD | パック32bit 右シフト (符号なし) [SSE2] |
PSRAD VPSRAD | パック32bit 右シフト (符号付き) [SSE2] |
PSRLQ VPSRLQ | パック64bit 右シフト (符号なし) [SSE2] |
PSRLDQ VPSRLDQ | パック128bit 右シフト (符号なし) [SSE2] |
PALIGNR VPALIGNR | 128bit を2つ連結して右シフト [SSE3] |
VPSRLVD | パック32bit 右シフト (符号なし、個別) [AVX2] |
VPSRAVD | パック32bit 右シフト (符号付き、個別) [AVX2] |
VPSRLVQ | パック64bit 右シフト (符号なし、個別) [AVX2] |
論理演算 (整数)
POR xmm1, xmm2/mem128 | 66 0F EB /r | SSE2 VPOR xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 EB /r | AVX VPOR ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 EB /r | AVX2
2つのソースでビット単位の OR を行って、結果を宛先に書き込みます。
PAND xmm1, xmm2/mem128 | 66 0F DB /r | SSE2 VPAND xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 DB /r | AVX VPAND ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 DB /r | AVX2
2つのソースでビット単位の AND を行って、結果を宛先に書き込みます。
PANDN xmm1, xmm2/mem128 | 66 0F DF /r | SSE2 VPANDN xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src.0.01 DF /r | AVX VPANDN ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src.1.01 DF /r | AVX2
第1ソースの値をビット反転した後、第2ソースの値と AND を行い、結果を宛先に書き込みます。
PXOR xmm1, xmm2/mem128 | 66 0F EF /r | SSE2 VPXOR xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 EF /r | AVX VPXOR ymm1, ymm2, ymm3/mem256 | C4 RXB.01 X.src1.1.01 EF /r | AVX2
2つのソースでビット単位の XOR を行って、結果を宛先に書き込みます。
左シフト
PSLLW xmm1, xmm2/mem128 | 66 0F F1 /r | SSE2 PSLLW xmm, imm8 | 66 0F 71 /6 ib | SSE2 VPSLLW xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 F1 /r | AVX VPSLLW xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 71 /6 ib | AVX VPSLLW ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 F1 /r | AVX2 VPSLLW ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 71 /6 ib | AVX2
パックされた各 16bit 整数を、それぞれ、最後のオペランドで指定された値の数、左にシフトし、結果を宛先に書き込みます。
シフト後の最下位ビットはクリアされます。
シフト後の最下位ビットはクリアされます。
PSLLD xmm1, xmm2/mem128 | 66 0F F2 /r | SSE2 PSLLD xmm, imm8 | 66 0F 72 /6 ib | SSE2 VPSLLD xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 F2 /r | AVX VPSLLD xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 72 /6 ib | AVX VPSLLD ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 F2 /r | AVX2 VPSLLD ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 72 /6 ib | AVX2
パックされた各 32bit 整数を、それぞれ、最後のオペランドで指定された値の数、左にシフトし、結果を宛先に書き込みます。
シフト後の最下位ビットはクリアされます。
シフト後の最下位ビットはクリアされます。
PSLLQ xmm1, xmm2/mem128 | 66 0F F3 /r | SSE2 PSLLQ xmm, imm8 | 66 0F 73 /6 ib | SSE2 VPSLLQ xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 F3 /r | AVX VPSLLQ xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 73 /6 ib | AVX VPSLLQ ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 F3 /r | AVX2 VPSLLQ ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 73 /6 ib | AVX2
パックされた各 64bit 整数を、それぞれ、最後のオペランドで指定された値の数、左にシフトし、結果を宛先に書き込みます。
シフト後の最下位ビットはクリアされます。
シフト後の最下位ビットはクリアされます。
PSLLDQ xmm, imm8 | 66 0F 73 /7 ib | SSE2 VPSLLDQ xmm1, xmm2, imm8 | C4 RXB.01 0.dest.0.01 73 /7 ib | AVX VPSLLDQ ymm1, ymm2, imm8 | C4 RXB.01 0.dest.1.01 73 /7 ib | AVX2
パックされた各 128bit 整数を、それぞれ、最後のオペランドで指定された値の数、左にシフトし、結果を宛先に書き込みます。
シフト後の最下位ビットはクリアされます。
シフト数が 15 より大きい場合、結果は 0 になります。
シフト後の最下位ビットはクリアされます。
シフト数が 15 より大きい場合、結果は 0 になります。
VPSLLVD xmm1, xmm2, xmm3/mem128 | C4 RXB.02 0.src1.0.01 47 /r | AVX2 VPSLLVD ymm1, ymm2, ymm3/mem256 | C4 RXB.02 0.src1.1.01 47 /r | AVX2
第2オペランドのパックされた各 32bit 整数を、それぞれ、第3オペランドで指定された値の数、左シフトし、結果を宛先に書き込みます。
第3オペランドの値は、32bit 単位で各位置に対応し、それぞれの要素のシフト数を、個別に指定することができます。
第3オペランドの値は、32bit 単位で各位置に対応し、それぞれの要素のシフト数を、個別に指定することができます。
VPSLLVQ xmm1, xmm2, xmm3/mem128 | C4 RXB.02 1.src1.0.01 47 /r | AVX2 VPSLLVQ ymm1, ymm2, ymm3/mem256 | C4 RXB.02 1.src1.1.01 47 /r | AVX2
第2オペランドのパックされた各 64bit 整数を、それぞれ、第3オペランドで指定された値の数、左シフトし、結果を宛先に書き込みます。
第3オペランドの値は、64bit 単位で各位置に対応し、それぞれの要素のシフト数を、個別に指定することができます。
第3オペランドの値は、64bit 単位で各位置に対応し、それぞれの要素のシフト数を、個別に指定することができます。
右シフト
PSRLW xmm1, xmm2/mem128 | 66 0F D1 /r | SSE2 PSRLW xmm, imm8 | 66 0F 71 /2 ib | SSE2 VPSRLW xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 D1 /r | AVX VPSRLW xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 71 /2 ib | AVX VPSRLW ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 D1 /r | AVX2 VPSRLW ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 71 /2 ib | AVX2
パックされた各 16bit 整数を、それぞれ、最後のオペランドで指定された値の数、右にシフトし、結果を宛先に書き込みます。
シフト後の最上位ビットはクリアされます。
シフト後の最上位ビットはクリアされます。
PSRAW xmm1, xmm2/mem128 | 66 0F E1 /r | SSE2 PSRAW xmm, imm8 | 66 0F 71 /4 ib | SSE2 VPSRAW xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 E1 /r | AVX VPSRAW xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 71 /4 ib | AVX VPSRAW ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 E1 /r | AVX2 VPSRAW ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 71 /4 ib | AVX2
パックされた各 16bit 整数を、それぞれ、最後のオペランドで指定された値の数、右にシフトし、結果を宛先に書き込みます。
シフト後の最上位ビットは、元の符号ビットがコピーされます。
シフト後の最上位ビットは、元の符号ビットがコピーされます。
PSRLD xmm1, xmm2/mem128 | 66 0F D2 /r | SSE2 PSRLD xmm, imm8 | 66 0F 72 /2 ib | SSE2 VPSRLD xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 D2 /r | AVX VPSRLD xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 72 /2 ib | AVX VPSRLD ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 D2 /r | AVX2 VPSRLD ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 72 /2 ib | AVX2
パックされた各 32bit 整数を、それぞれ、最後のオペランドで指定された値の数、右にシフトし、結果を宛先に書き込みます。
シフト後の最上位ビットはクリアされます。
シフト後の最上位ビットはクリアされます。
PSRAD xmm1, xmm2/mem128 | 66 0F E2 /r PSRAD xmm, imm8 | 66 0F 72 /4 ib VPSRAD xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 E2 /r VPSRAD xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 72 /4 ib VPSRAD ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 E2 /r VPSRAD ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 72 /4 ib
パックされた各 32bit 整数を、それぞれ、最後のオペランドで指定された値の数、右にシフトし、結果を宛先に書き込みます。
シフト後の最上位ビットは、元の符号ビットがコピーされます。
シフト後の最上位ビットは、元の符号ビットがコピーされます。
PSRLQ xmm1, xmm2/mem128 | 66 0F D3 /r | SSE2 PSRLQ xmm, imm8 | 66 0F 73 /2 ib | SSE2 VPSRLQ xmm1, xmm2, xmm3/mem128 | C4 RXB.01 X.src1.0.01 D3 /r | AVX VPSRLQ xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 73 /2 ib | AVX VPSRLQ ymm1, ymm2, xmm3/mem128 | C4 RXB.01 X.src1.1.01 D3 /r | AVX2 VPSRLQ ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 73 /2 ib | AVX2
パックされた各 64bit 整数を、それぞれ、最後のオペランドで指定された値の数、右にシフトし、結果を宛先に書き込みます。
シフト後の最上位ビットはクリアされます。
シフト後の最上位ビットはクリアされます。
PSRLDQ xmm, imm8 | 66 0F 73 /3 ib | SSE2 VPSRLDQ xmm1, xmm2, imm8 | C4 RXB.01 X.dest.0.01 73 /3 ib | AVX VPSRLDQ ymm1, ymm2, imm8 | C4 RXB.01 X.dest.1.01 73 /3 ib | AVX2
パックされた各 128bit 整数を、それぞれ、最後のオペランドで指定された値の数、右にシフトし、結果を宛先に書き込みます。
シフト後の最上位ビットはクリアされます。
シフト数が 15 より大きい場合、結果は 0 になります。
シフト後の最上位ビットはクリアされます。
シフト数が 15 より大きい場合、結果は 0 になります。
PALIGNR xmm1, xmm2/mem128, imm8 | 66 0F 3A 0F /r ib | SSE3 VPALIGNR xmm1, xmm2, xmm3/mem128, imm8 | C4 RXB.03 X.src1.0.01 0F /r ib | AVX VPALIGNR ymm1, ymm2, ymm3/mem256, imm8 | C4 RXB.03 X.src1.1.01 0F /r ib | AVX2
[128bit]
第1オペランドが上位 128bit、第2オペランドが下位 128bit となり、それを連結した 256bit 値を、即値バイトの数だけ右シフトして、結果の下位 128bit を宛先に書き込みます。
[256bit]
上記と同じように、128bit 単位で src1 と src2 の 128bit を連結し、ソースの下位 128bit と上位 128bit で形成された、2つの 256bit 値を、それぞれ右シフトして、結果のそれぞれの下位 128bit を宛先に書き込みます。
シフト後の最上位ビットは 0 になります。
第1オペランドが上位 128bit、第2オペランドが下位 128bit となり、それを連結した 256bit 値を、即値バイトの数だけ右シフトして、結果の下位 128bit を宛先に書き込みます。
[256bit]
上記と同じように、128bit 単位で src1 と src2 の 128bit を連結し、ソースの下位 128bit と上位 128bit で形成された、2つの 256bit 値を、それぞれ右シフトして、結果のそれぞれの下位 128bit を宛先に書き込みます。
シフト後の最上位ビットは 0 になります。
VPSRLVD xmm1, xmm2, xmm3/mem128 | C4 RXB.02 0.src1.0.01 45 /r | AVX2 VPSRLVD ymm1, ymm2, ymm3/mem256 | C4 RXB.02 0.src1.1.01 45 /r | AVX2
第2オペランドのパックされた各 32bit 整数を、それぞれ、第3オペランドで指定された値の数、右シフトし、結果を宛先に書き込みます。
シフト後の最上位ビットは 0 になります。
第3オペランドの値は、32bit 単位で各位置に対応し、それぞれの要素のシフト数を個別に指定することができます。
シフト後の最上位ビットは 0 になります。
第3オペランドの値は、32bit 単位で各位置に対応し、それぞれの要素のシフト数を個別に指定することができます。