インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

比較組込み関数

ここでは、整数比較操作用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。

各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。RR0R1、... 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

_mm_cmpeq_epi8

__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

_mm_cmpeq_epi16

__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

_mm_cmpeq_epi32

__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

_mm_cmpgt_epi8

__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

_mm_cmpgt_epi16

__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

_mm_cmpgt_epi32

__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

_mm_cmplt_epi8

__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

_mm_cmplt_epi16

__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

_mm_cmplt_epi32

__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