インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
ここでは、インテル® MMX® テクノロジーのパックド算術演算組込み関数について説明します。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
組込み関数名 |
演算 |
対応する インテル® MMX® 命令 |
---|---|---|
_mm_add_pi8 |
加算 |
PADDB |
_mm_add_pi16 |
加算 |
PADDW |
_mm_add_pi32 |
加算 |
PADDD |
_mm_adds_pi8 |
加算 |
PADDSB |
_mm_adds_pi16 |
加算 |
PADDSW |
_mm_adds_pu8 |
加算 |
PADDUSB |
_mm_adds_pu16 |
加算 |
PADDUSW |
_mm_sub_pi8 |
減算 |
PSUBB |
_mm_sub_pi16 |
減算 |
PSUBW |
_mm_sub_pi32 |
減算 |
PSUBD |
_mm_subs_pi8 |
減算 |
PSUBSB |
_mm_subs_pi16 |
減算 |
PSUBSW |
_mm_subs_pu8 |
減算 |
PSUBUSB |
_mm_subs_pu16 |
減算 |
PSUBUSW |
_mm_madd_pi16 |
積和 |
PMADDWD |
_mm_mulhi_pi16 |
乗算 |
PMULHW |
_mm_mullo_pi16 |
乗算 |
PMULLW |
__m64 _mm_add_pi8(__m64 m1, __m64 m2);
m1 の 8 つの 8 ビット値を、m2 の 8 つの 8 ビット値に加算します。
__m64 _mm_add_pi16(__m64 m1, __m64 m2);
m1 の 4 つの 16 ビット値を、m2 の 4 つの 16 ビット値に加算します。
__m64 _mm_add_pi32(__m64 m1, __m64 m2);
m1 の 2 つの 32 ビット値を、m2 の 2 つの 32 ビット値に加算します。
__m64 _mm_adds_pi8(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 8 つの符号付き 8 ビット値を、m2 の 8 つの符号付き 8 ビット値に加算します。
__m64 _mm_adds_pi16(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 4 つの符号付き 16 ビット値を、m2 の 4 つの符号付き 16 ビット値に加算します。
__m64 _mm_adds_pu8(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 8 つの符号なし 8 ビット値を、m2 の 8 つの符号なし 8 ビット値に加算します。
__m64 _mm_adds_pu16(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 4 つの符号なし 16 ビット値を、m2 の 4 つの符号なし 16 ビット値に加算します。
__m64 _mm_sub_pi8(__m64 m1, __m64 m2);
m1 の 8 つの 8 ビット値から、m2 の 8 つの 8 ビット値を引きます。
__m64 _mm_sub_pi16(__m64 m1, __m64 m2);
m1 の 4 つの 16 ビット値から、m2 の 4 つの 16 ビット値を引きます。
__m64 _mm_sub_pi32(__m64 m1, __m64 m2);
m1 の 2 つの 32 ビット値から、m2 の 2 つの 32 ビット値を引きます。
__m64 _mm_subs_pi8(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 8 つの符号付き 8 ビット値から、m2 の 8 つの符号付き 8 ビット値を引きます。
__m64 _mm_subs_pi16(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 4 つの符号付き 16 ビット値から、m2 の 4 つの符号付き 16 ビット値を引きます。
__m64 _mm_subs_pu8(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 8 つの符号なし 8 ビット値から、m2 の 8 つの符号なし 8 ビット値を引きます。
__m64 _mm_subs_pu16(__m64 m1, __m64 m2);
飽和演算を使用して、m1 の 4 つの符号なし 16 ビット値から、m2 の 4 つの符号なし 16 ビット値を引きます。
__m64 _mm_madd_pi16(__m64 m1, __m64 m2);
m1 の 4 つの 16 ビット値に m2 の 4 つの 16 ビット値を掛けて、4 つの 32 ビット即値を求め、それらを 2 つずつ合計して 2 つの 32 ビットの結果を求めます。
__m64 _mm_mulhi_pi16(__m64 m1, __m64 m2);
m1 の 4 つの符号付き 16 ビット値に m2 の 4 つの符号付き 16 ビット値を掛けて、4 つの結果の上位 16 ビットを求めます。
__m64 _mm_mullo_pi16(__m64 m1, __m64 m2);
m1 の 4 つの 16 ビット値に m2 の 4 つの 16 ビット値を掛けて、4 つの結果の下位 16 ビットを求めます。