インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
ここでは、整数比較操作用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。R、R0、R1、... R15 は、結果が配置されるレジスターを表します。
組込み関数名 |
演算 |
対応するインテル® SSE2 命令 |
---|---|---|
_mm_cmpeq_epi8 |
等しい |
PCMPEQB |
_mm_cmpeq_epi16 |
等しい |
PCMPEQW |
_mm_cmpeq_epi32 |
等しい |
PCMPEQD |
_mm_cmpgt_epi8 |
より大きい |
PCMPGTB |
_mm_cmpgt_epi16 |
より大きい |
PCMPGTW |
_mm_cmpgt_epi32 |
より大きい |
PCMPGTD |
_mm_cmplt_epi8 |
より小さい |
PCMPGTBr |
_mm_cmplt_epi16 |
より小さい |
PCMPGTWr |
_mm_cmplt_epi32 |
より小さい |
PCMPGTDr |
__m128i _mm_cmpeq_epi8(__m128i a, __m128i b);
a の 16 の符号付きまたは符号なし 8 ビット整数と、b の 16 の符号付きまたは符号なし 8 ビット整数が等しいかどうか比較します。
R0 |
R1 |
... |
R15 |
---|---|---|---|
(a0 == b0) ? 0xff : 0x0 |
(a1 == b1) ? 0xff : 0x0 |
... |
(a15 == b15) ? 0xff : 0x0 |
__m128i _mm_cmpeq_epi16(__m128i a, __m128i b);
a の 8 つの符号付きまたは符号なし 16 ビット整数と、b の 8 つの符号付きまたは符号なし 16 ビット整数が等しいかどうか比較します。
R0 |
R1 |
... |
R7 |
---|---|---|---|
(a0 == b0) ? 0xffff : 0x0 |
(a1 == b1) ? 0xffff : 0x0 |
... |
(a7 == b7) ? 0xffff : 0x0 |
__m128i _mm_cmpeq_epi32(__m128i a, __m128i b);
a の 4 つの符号付きまたは符号なし 32 ビット整数と、b の 4 つの符号付きまたは符号なし 32 ビット整数が等しいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 == b0) ? 0xffffffff : 0x0 |
(a1 == b1) ? 0xffffffff : 0x0 |
(a2 == b2) ? 0xffffffff : 0x0 |
(a3 == b3) ? 0xffffffff : 0x0 |
__m128i _mm_cmpgt_epi8(__m128i a, __m128i b);
a の 16 の符号付き 8 ビット整数が、b の 16 の符号付き 8 ビット整数より大きいかどうか比較します。
R0 |
R1 |
... |
R15 |
---|---|---|---|
(a0 > b0) ? 0xff : 0x0 |
(a1 > b1) ? 0xff : 0x0 |
... |
(a15 > b15) ? 0xff : 0x0 |
__m128i _mm_cmpgt_epi16(__m128i a, __m128i b);
a の 8 つの符号付き 16 ビット整数が、b の 8 つの符号付き 16 ビット整数より大きいかどうか比較します。
R0 |
R1 |
... |
R7 |
---|---|---|---|
(a0 > b0) ? 0xffff : 0x0 |
(a1 > b1) ? 0xffff : 0x0 |
... |
(a7 > b7) ? 0xffff : 0x0 |
__m128i _mm_cmpgt_epi32(__m128i a, __m128i b);
a の 4 つの符号付き 32 ビット整数が、b の 4 つの符号付き 32 ビット整数より大きいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 > b0) ? 0xffffffff : 0x0 |
(a1 > b1) ? 0xffffffff : 0x0 |
(a2 > b2) ? 0xffffffff : 0x0 |
(a3 > b3) ? 0xffffffff : 0x0 |
__m128i _mm_cmplt_epi8( __m128i a, __m128i b);
a の 16 の符号付き 8 ビット整数が、b の 16 の符号付き 8 ビット整数より小さいかどうか比較します。
R0 |
R1 |
... |
R15 |
---|---|---|---|
(a0 < b0) ? 0xff : 0x0 |
(a1 < b1) ? 0xff : 0x0 |
... |
(a15 < b15) ? 0xff : 0x0 |
__m128i _mm_cmplt_epi16( __m128i a, __m128i b);
a の 8 つの符号付き 16 ビット整数が、b の 8 つの符号付き 16 ビット整数より小さいかどうか比較します。
R0 |
R1 |
... |
R7 |
---|---|---|---|
(a0 < b0) ? 0xffff : 0x0 |
(a1 < b1) ? 0xffff : 0x0 |
... |
(a7 < b7) ? 0xffff : 0x0 |
__m128i _mm_cmplt_epi32( __m128i a, __m128i b);
a の 4 つの符号付き 32 ビット整数が、b の 4 つの符号付き 32 ビット整数より小さいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 < b0) ? 0xffffffff : 0x0 |
(a1 < b1) ? 0xffffffff : 0x0 |
(a2 < b2) ? 0xffffffff : 0x0 |
(a3 < b3) ? 0xffffffff : 0x0 |