同等のインテル® C/C++コンパイラ組み込み関数 PAVGB __m64_mm_avg_pu8 (__m64 a, __m64 b) PAVGW __m64_mm_avg_pu16 (__m64 a, __m64 b) PAVGB __m128i _mm_avg_epu8 ( __m128i a, __m128i b) PAVGW __m128i _mm_avg_epu16 ( __m128i a, __m128i b) 影響を受けるフラグ
なし。
保護モード例外
#GP(0) メモリ・オペランドの実効アドレスがCS、DS、ES、FS、またはGS
セグメントの範囲外の場合。
(128 ビット操作のみ)セグメントに関係なく、メモリ・オペランド のアライメントが16バイトに合っていない場合。
#SS(0) メモリ・オペランドの実効アドレスがSSセグメントの範囲外の場合。
#UD CR0のEMがセットされた場合。
(128ビット操作のみ)CR4のOSFXSRが0の場合。
(128ビット操作のみ)CPUID機能フラグSSE2が0の場合。
#NM CR0のTSがセットされた場合。
#MF (64ビット操作のみ)未処理のx87 FPU例外がある場合。
#PF(フォルトコード) ページフォルトが発生した場合。
#AC(0) (64ビット操作のみ)現行特権レベルが3のときに、アライメント・
チェックがイネーブルにされていて、アライメントが合わないメモリ 参照が行われた場合。
実アドレスモード例外
#GP(0) (128 ビット操作のみ)セグメントに関係なく、メモリ・オペランド
のアライメントが16バイトに合っていない場合。
オペランドの一部が0~FFFFHの実効アドレス空間の範囲外の場合。
#UD CR0のEMがセットされた場合。
(128ビット操作のみ)CR4のOSFXSRが0の場合。
(128ビット操作のみ)CPUID機能フラグSSE2が0の場合。
#NM CR0のTSがセットされた場合。
#MF (64ビット操作のみ)未処理のx87 FPU例外がある場合。
PAVGB/PAVGW—Average Packed Integers(続き)
仮想8086モード例外
実アドレスモードと同じ例外。
#PF(フォルトコード) ページフォルトが発生した場合。
#AC(0) (64ビット操作のみ)アライメント・チェックがイネーブルにされて
いて、アライメントが合わないメモリ参照が行われた場合。
数値例外 なし。
説明
デスティネーション・オペランド(第1オペランド)とソース・オペランド(第2オ ペランド)のパックドバイト/ワード/ダブルワードが等しいかどうかのSIMD比較を 実行する。データ要素のペアが等しい場合は、デスティネーション・オペランドの対 応するデータ要素はすべて1に設定される。そうでない場合は、すべてゼロに設定さ れる。ソース・オペランドは、MMX®テクノロジ・レジスタまたは64ビットのメモ リ・ロケーション、XMMレジスタまたは128ビットのメモリ・ロケーションを使用 できる。デスティネーション・オペランドには、MMXテクノロジ・レジスタまたは XMMレジスタを使用できる。
PCMPEQB命令は、デスティネーション・オペランドおよびソース・オペランドの対
応するバイトを比較する。PCMPEQW命令は、デスティネーション・オペランドおよ びソース・オペランドの対応するワードを比較する。PCMPEQD命令は、デスティネー ション・オペランドおよびソース・オペランドの対応するダブルワードを比較する。
操作
PCMPEQB instruction with 64-bit operands:
IF DEST[7..0] = SRC[7..0]
THEN DEST[7 0) ← FFH;
ELSE DEST[7..0] ← 0;
* Continue comparison of 2nd through 7th bytes in DEST and SRC * IF DEST[63..56] = SRC[63..56]
THEN DEST[63..56] ← FFH;
ELSE DEST[63..56] ← 0;
PCMPEQB instruction with 128-bit operands:
IF DEST[7..0] = SRC[7..0]
THEN DEST[7 0) ← FFH;
ELSE DEST[7..0] ← 0;
オペコード 命令 説明
0F 74 /r PCMPEQB mm, mm/m64 mm/m64とmmのパックドバイトを等しいか比
較する。
66 0F 74 /r PCMPEQB xmm1, xmm2/m128 xmm2/m128とxmm1のパックドバイトを等しい か比較する。
0F 75 /r PCMPEQW mm, mm/m64 mm/m64とmmのパックドワードを等しいか比
較する。
66 0F 75 /r PCMPEQW xmm1, xmm2/m128 xmm2/m128とxmm1のパックドワードを等しい か比較する。
0F 76 /r PCMPEQD mm, mm/m64 mm/m64とmmのパックド・ダブルワードを等
しいか比較する。
66 0F 76 /r PCMPEQD xmm1, xmm2/m128 xmm2/m128とxmm1のパックド・ダブルワード を等しいか比較する。