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

比較組込み関数

比較演算用のインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) の組込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。

比較組込み関数は、ab の比較を実行します。パックド形式では、ab の 4 つの単精度浮動小数点値を比較して、128 ビット・マスクを返します。スカラー形式では、ab の下位の単精度浮動小数点値を比較して、32 ビット・マスクを返します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。マスクは、各要素について、比較の結果が真の場合は 0xffffffff に設定し、偽の場合は 0x0 に設定されます。

各組込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組込み関数ごとに R または R0 から R3 までを使用して示します。R0、R1、R2、および R3 はそれぞれ、結果レジスターの 4 つの 32 ビット部分を表します。

組込み関数名

演算

対応するインテル® SSE 命令

_mm_cmpeq_ss

等しい

CMPEQSS

_mm_cmpeq_ps

等しい

CMPEQPS

_mm_cmplt_ss

より小さい

CMPLTSS

_mm_cmplt_ps

より小さい

CMPLTPS

_mm_cmple_ss

以下

CMPLESS

_mm_cmple_ps

以下

CMPLEPS

_mm_cmpgt_ss

より大きい

CMPLTSS

_mm_cmpgt_ps

より大きい

CMPLTPS

_mm_cmpge_ss

以上

CMPLESS

_mm_cmpge_ps

以上

CMPLEPS

_mm_cmpneq_ss

等しくない

CMPNEQSS

_mm_cmpneq_ps

等しくない

CMPNEQPS

_mm_cmpnlt_ss

より小さくない

CMPNLTSS

_mm_cmpnlt_ps

より小さくない

CMPNLTPS

_mm_cmpnle_ss

以下でない

CMPNLESS

_mm_cmpnle_ps

以下でない

CMPNLEPS

_mm_cmpngt_ss

より大きくない

CMPNLTSS

_mm_cmpngt_ps

より大きくない

CMPNLTPS

_mm_cmpnge_ss

以上でない

CMPNLESS

_mm_cmpnge_ps

以上でない

CMPNLEPS

_mm_cmpord_ss

順序付けされている

CMPORDSS

_mm_cmpord_ps

順序付けされている

CMPORDPS

_mm_cmpunord_ss

順序付けされていない

CMPUNORDSS

_mm_cmpunord_ps

順序付けされていない

CMPUNORDPS

_mm_comieq_ss

等しい

COMISS

_mm_comilt_ss

より小さい

COMISS

_mm_comile_ss

以下

COMISS

_mm_comigt_ss

より大きい

COMISS

_mm_comige_ss

以上

COMISS

_mm_comineq_ss

等しくない

COMISS

_mm_ucomieq_ss

等しい

UCOMISS

_mm_ucomilt_ss

より小さい

UCOMISS

_mm_ucomile_ss

以下

UCOMISS

_mm_ucomigt_ss

より大きい

UCOMISS

_mm_ucomige_ss

以上

UCOMISS

_mm_ucomineq_ss

等しくない

UCOMISS

_mm_cmpeq_ss

__m128 __cdecl _mm_cmpeq_ss(__m128 a, __m128 b);

等しいかどうか比較します。

R0

R1

R2

R3

(a0 == b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpeq_ps

__m128 _mm_cmpeq_ps(__m128 a, __m128 b);

等しいかどうか比較します。

R0

R1

R2

R3

(a0 == b0) ? 0xffffffff : 0x0

(a1 == b1) ? 0xffffffff : 0x0

(a2 == b2) ? 0xffffffff : 0x0

(a3 == b3) ? 0xffffffff : 0x0

_mm_cmplt_ss

__m128 _mm_cmplt_ss(__m128 a, __m128 b);

より小さいかどうか比較します。

R0

R1

R2

R3

(a0 < b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmplt_ps

__m128 _mm_cmplt_ps(__m128 a, __m128 b);

より小さいかどうか比較します。

R0

R1

R2

R3

(a0 < b0) ? 0xffffffff : 0x0

(a1 < b1) ? 0xffffffff : 0x0

(a2 < b2) ? 0xffffffff : 0x0

(a3 < b3) ? 0xffffffff : 0x0

_mm_cmple_ss

__m128 _mm_cmple_ss(__m128 a, __m128 b);

以下かどうか比較します。

R0

R1

R2

R3

(a0 <= b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmple_ps

__m128 _mm_cmple_ps(__m128 a, __m128 b);

以下かどうか比較します。

R0

R1

R2

R3

(a0 <= b0) ? 0xffffffff : 0x0

(a1 <= b1) ? 0xffffffff : 0x0

(a2 <= b2) ? 0xffffffff : 0x0

(a3 <= b3) ? 0xffffffff : 0x0

_mm_cmpgt_ss

__m128 _mm_cmpgt_ss(__m128 a, __m128 b);

より大きいかどうか比較します。

R0

R1

R2

R3

(a0 > b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpgt_ps

__m128 _mm_cmpgt_ps(__m128 a, __m128 b);

より大きいかどうか比較します。

R0

R1

R2

R3

(a0 > b0) ? 0xffffffff : 0x0

(a1 > b1) ? 0xffffffff : 0x0

(a2 > b2) ? 0xffffffff : 0x0

(a3 > b3) ? 0xffffffff : 0x0

_mm_cmpge_ss

__m128 _mm_cmpge_ss(__m128 a, __m128 b);

以上かどうか比較します。

R0

R1

R2

R3

(a0 >= b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpge_ps

__m128 _mm_cmpge_ps(__m128 a, __m128 b);

以上かどうか比較します。

R0

R1

R2

R3

(a0 >= b0) ? 0xffffffff : 0x0

(a1 >= b1) ? 0xffffffff : 0x0

(a2 >= b2) ? 0xffffffff : 0x0

(a3 >= b3) ? 0xffffffff : 0x0

_mm_cmpneq_ss

__m128 _mm_cmpneq_ss(__m128 a, __m128 b);

等しくないかどうか比較します。

R0

R1

R2

R3

(a0 != b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpneq_ps

__m128 _mm_cmpneq_ps(__m128 a, __m128 b);

等しくないかどうか比較します。

R0

R1

R2

R3

(a0 != b0) ? 0xffffffff : 0x0

(a1 != b1) ? 0xffffffff : 0x0

(a2 != b2) ? 0xffffffff : 0x0

(a3 != b3) ? 0xffffffff : 0x0

_mm_cmpnlt_ss

__m128 _mm_cmpnlt_ss(__m128 a, __m128 b);

より小さくないかどうか比較します。

R0

R1

R2

R3

!(a0 < b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpnlt_ps

__m128 _mm_cmpnlt_ps(__m128 a, __m128 b);

より小さくないかどうか比較します。

R0

R1

R2

R3

!(a0 < b0) ? 0xffffffff : 0x0

!(a1 < b1) ? 0xffffffff : 0x0

!(a2 < b2) ? 0xffffffff : 0x0

!(a3 < b3) ? 0xffffffff : 0x0

_mm_cmpnle_ss

__m128 _mm_cmpnle_ss(__m128 a, __m128 b);

以下でないかどうか比較します。

R0

R1

R2

R3

!(a0 <= b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpnle_ps

__m128 _mm_cmpnle_ps(__m128 a, __m128 b);

以下でないかどうか比較します。

R0

R1

R2

R3

!(a0 <= b0) ? 0xffffffff : 0x0

!(a1 <= b1) ? 0xffffffff : 0x0

!(a2 <= b2) ? 0xffffffff : 0x0

!(a3 <= b3) ? 0xffffffff : 0x0

_mm_cmpngt_ss

__m128 _mm_cmpngt_ss(__m128 a, __m128 b);

より大きくないかどうか比較します。

R0

R1

R2

R3

!(a0 > b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpngt_ps

__m128 _mm_cmpngt_ps(__m128 a, __m128 b);

より大きくないかどうか比較します。

R0

R1

R2

R3

!(a0 > b0) ? 0xffffffff : 0x0

!(a1 > b1) ? 0xffffffff : 0x0

!(a2 > b2) ? 0xffffffff : 0x0

!(a3 > b3) ? 0xffffffff : 0x0

_mm_cmpnge_ss

__m128 _mm_cmpnge_ss(__m128 a, __m128 b);

以上でないかどうか比較します。

R0

R1

R2

R3

!(a0 >= b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpnge_ps

__m128 _mm_cmpnge_ps(__m128 a, __m128 b);

以上でないかどうか比較します。

R0

R1

R2

R3

!(a0 >= b0) ? 0xffffffff : 0x0

!(a1 >= b1) ? 0xffffffff : 0x0

!(a2 >= b2) ? 0xffffffff : 0x0

!(a3 >= b3) ? 0xffffffff : 0x0

_mm_cmpord_ss

__m128 _mm_cmpord_ss(__m128 a, __m128 b);

順序付けされているかどうか判定します。

R0

R1

R2

R3

(a0 ord? b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpord_ps

__m128 _mm_cmpord_ps(__m128 a, __m128 b);

順序付けされているかどうか判定します。

R0

R1

R2

R3

(a0 ord? b0) ? 0xffffffff : 0x0

(a1 ord? b1) ? 0xffffffff : 0x0

(a2 ord? b2) ? 0xffffffff : 0x0

(a3 ord? b3) ? 0xffffffff : 0x0

_mm_cmpunord_ss

__m128 _mm_cmpunord_ss(__m128 a, __m128 b);

順序付けされていないかどうか判定します。

R0

R1

R2

R3

(a0 unord? b0) ? 0xffffffff : 0x0

a1

a2

a3

_mm_cmpunord_ps

__m128 _mm_cmpunord_ps(__m128 a, __m128 b);

順序付けされていないかどうか判定します。

R0

R1

R2

R3

(a0 unord? b0) ? 0xffffffff : 0x0

(a1 unord? b1) ? 0xffffffff : 0x0

(a2 unord? b2) ? 0xffffffff : 0x0

(a3 unord? b3) ? 0xffffffff : 0x0

_mm_comieq_ss

int _mm_comieq_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab が等しいかどうか比較します。ab が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 == b0) ? 0x1 : 0x0

_mm_comilt_ss

int _mm_comilt_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab より小さいかどうか比較します。ab より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 < b0) ? 0x1 : 0x0

_mm_comile_ss

int _mm_comile_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab 以下かどうか比較します。ab 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 <= b0) ? 0x1 : 0x0

_mm_comigt_ss

int _mm_comigt_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab より大きいかどうか比較します。ab より大きい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 > b0) ? 0x1 : 0x0

_mm_comige_ss

int _mm_comige_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab 以上かどうか比較します。ab 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 >= b0) ? 0x1 : 0x0

_mm_comineq_ss

int _mm_comineq_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab が等しくないかどうか比較します。ab が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 != b0) ? 0x1 : 0x0

_mm_ucomieq_ss

int _mm_ucomieq_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab が等しいかどうか比較します。ab が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 == b0) ? 0x1 : 0x0

_mm_ucomilt_ss

int _mm_ucomilt_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab より小さいかどうか比較します。ab より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 < b0) ? 0x1 : 0x0

_mm_ucomile_ss

int _mm_ucomile_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab 以下かどうか比較します。ab 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 <= b0) ? 0x1 : 0x0

_mm_ucomigt_ss

int _mm_ucomigt_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab より大きいかどうか比較します。ab 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 > b0) ? 0x1 : 0x0

_mm_ucominge_ss

int _mm_ucomige_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab 以上かどうか比較します。ab 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 >= b0) ? 0x1 : 0x0

_mm_ucomineq_ss

int _mm_ucomineq_ss(__m128 a, __m128 b);

ab の下位の単精度浮動小数点値について、ab が等しくないかどうか比較します。ab が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。

R

r := (a0 != b0) ? 0x1 : 0x0