ここでは、整数論理演算用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル
emmintrin.h
内にあります。
これらの組込み関数を使用する場合、次のように
immintrin.h
ファイルをインクルードします。
#include <immintrin.h>
各組込み関数演算の結果は
R
レジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。
組込み関数名
|
対応するインテル® SSE2 命令
|
_mm_and_si128
|
AND (論理積) を計算する
|
_mm_andnot_si128
|
ANDNOT (論理積否定) を計算する
|
PANDN
|
_mm_or_si128
|
OR (論理和) を計算する
|
_mm_xor_si128
|
XOR (排他的論理和) を計算する
_mm_and_si128
__m128i _mm_and_si128(__m128i a, __m128i b);
a
の 128 ビット値と
b
の 128 ビット値について、ビット単位の AND (論理積) を計算します。
_mm_andnot_si128
__m128i _mm_andnot_si128(__m128i a, __m128i b);
a の 128 ビット値のビット単位の NOT (論理否定) を実行し、その結果と
b
の 128 ビット値について、ビット単位の
AND
(論理積) を計算します。
|
(~a) & b
_mm_or_si128
__m128i _mm_or_si128(__m128i a, __m128i b);
a
の 128 ビット値と
b
の 128 ビット値について、ビット単位の OR (論理和) を計算します。
|
a | b
_mm_xor_si128
__m128i _mm_xor_si128(__m128i a, __m128i b);
a
の 128 ビット値と
b
の 128 ビット値について、ビット単位の XOR (排他的論理和) を計算します。
|
a ^ b
|