MMX® テクノロジのパックド算術演算組込み関数

MMX® テクノロジの組込み関数のプロトタイプは、ヘッダファイル mmintrin.h 内にあります。

パックド算術演算組込み関数 (1)

組込み関数
別名 対応する
命令
操作 符号
_m_paddb _mm_add_pi8 PADDB 加算 --
_m_paddw _mm_add_pi16 PADDW 加算 --
_m_paddd _mm_add_pi32 PADDD 加算 --
_m_paddsb _mm_adds_pi8 PADDSB 加算 サポート
_m_paddsw _mm_adds_pi16 PADDSW 加算 サポート
_m_paddusb _mm_adds_pu8 PADDUSB 加算 非サポート
_m_paddusw _mm_adds_pu16 PADDUSW 加算 非サポート
_m_psubb _mm_sub_pi8 PSUBB 減算 --
_m_psubw _mm_sub_pi16 PSUBW 減算 --
_m_psubd _mm_sub_pi32 PSUBD 減算 --
_m_psubsb _mm_subs_pi8 PSUBSB 減算 サポート
_m_psubsw _mm_subs_pi16 PSUBSW 減算 サポート
_m_psubusb _mm_subs_pu8 PSUBUSB 減算 非サポート
_m_psubusw _mm_subs_pu16 PSUBUSW 減算 非サポート
_m_pmaddwd _mm_madd_pi16 PMADDWD 乗算 --
_m_pmulhw _mm_mulhi_pi16 PMULHW 乗算 サポート
_m_pmullw _mm_mullo_pi16 PMULLW 乗算 --

パックド算術演算組込み関数 (2)

組込み関数
別名 対応する
命令
引数
値の数/ビット数
結果
値の数/ビット数
_m_paddb _mm_add_pi8 PADDB 8/8 8/8
_m_paddw _mm_add_pi16 PADDW 4/16 4/16
_m_paddd _mm_add_pi32 PADDD 2/32 2/32
_m_paddsb _mm_adds_pi8 PADDSB 8/8 8/8
_m_paddsw _mm_adds_pi16 PADDSW 4/16 4/16
_m_paddusb _mm_adds_pu8 PADDUSB 8/8 8/8
_m_paddusw _mm_adds_pu16 PADDUSW 4/16 4/16
_m_psubb _mm_sub_pi8 PSUBB 8/8 8/8
_m_psubw _mm_sub_pi16 PSUBW 4/16 4/16
_m_psubd _mm_sub_pi32 PSUBD 2/32 2/32
_m_psubsb _mm_subs_pi8 PSUBSB 8/8 8/8
_m_psubsw _mm_subs_pi16 PSUBSW 4/16 4/16
_m_psubusb _mm_subs_pu8 PSUBUSB 8/8 8/8
_m_psubusw _mm_subs_pu16 PSUBUSW 4/16 4/16
_m_pmaddwd _mm_madd_pi16 PMADDWD 4/16 2/32
_m_pmulhw _mm_mulhi_pi16 PMULHW 4/16 4/16 (上位)
_m_pmullw _mm_mullo_pi16 PMULLW 4/16 4/16 (下位)

 

__m64 _m_paddb(__m64 m1, __m64 m2)

m1 の 8 つの 8 ビット値を、m2 の 8 つの 8 ビット値に加算します。

__m64 _m_paddw(__m64 m1, __m64 m2)

m1 の 4 つの 16 ビット値を、m2 の 4 つの 16 ビット値に加算します。

__m64 _m_paddd(__m64 m1, __m64 m2)

m1 の 2 つの 32 ビット値を、m2 の 2 つの 32 ビット値に加算します。

__m64 _m_paddsb(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 8 つの符号付き 8 ビット値を、m2 の 8 つの符号付き 8 ビット値に加算します。

__m64 _m_paddsw(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 4 つの符号付き 16 ビット値を、m2 の 4 つの符号付き 16 ビット値に加算します。

__m64 _m_paddusb(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 8 つの符号なし 8 ビット値を、m2 の 8 つの符号なし 8 ビット値に加算します。

__m64 _m_paddusw(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 4 つの符号なし 16 ビット値を、m2 の 4 つの符号なし 16 ビット値に加算します。

__m64 _m_psubb(__m64 m1, __m64 m2)

m1 の 8 つの 8 ビット値から、m2 の 8 つの 8 ビット値を引きます。

__m64 _m_psubw(__m64 m1, __m64 m2)

m1 の 4 つの 16 ビット値から、m2 の 4 つの 16 ビット値を引きます。

__m64 _m_psubd(__m64 m1, __m64 m2)

m1 の 2 つの 32 ビット値から、m2 の 2 つの 32 ビット値を引きます。

__m64 _m_psubsb(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 8 つの符号付き 8 ビット値から、m2 の 8 つの符号付き 8 ビット値を引きます。

__m64 _m_psubsw(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 4 つの符号付き 16 ビット値から、m2 の 4 つの符号付き 16 ビット値を引きます。

__m64 _m_psubusb(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 8 つの符号なし 8 ビット値から、m2 の 8 つの符号なし 8 ビット値を引きます。

__m64 _m_psubusw(__m64 m1, __m64 m2)

飽和演算を使用して、m1 の 4 つの符号なし 16 ビット値から、m2 の 4 つの符号なし 8 ビット値を引きます。

__m64 _m_pmaddwd(__m64 m1, __m64 m2)

m1 の 4 つの 16 ビット値に m2 の 4 つの 16 ビット値を掛けて、4 つの 32 ビット即値を求め、それらを 2 つずつ合計して 2 つの 32 ビットの結果を求めます。

__m64 _m_pmulhw(__m64 m1, __m64 m2)

m1 の 4 つの符号付き 16 ビット値に m2 の 4 つの符号付き 16 ビット値を掛けて、4 つの結果の上位 16 ビットを求めます。

__m64 _m_pmullw(__m64 m1, __m64 m2)

m1 の 4 つの 16 ビット値に m2 の 4 つの 16 ビット値を掛けて、4 つの結果の下位 16 ビットを求めます。