MMX® テクノロジの一般的な組込み関数

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

組込み関数名 別名 対応する
命令
操作 符号 飽和
_m_empty _mm_empty EMMS MMステートを空にする -- --
_m_from_int _mm_cvtsi32_si64 MOVD intからの変換 -- --
_m_to_int _mm_cvtsi64_si32 MOVD intからの変換 -- --
_m_packsswb _mm_packs_pi16 PACKSSWB パック
_m_packssdw _mm_packs_pi32 PACKSSDW パック
_m_packuswb _mm_packs_pu16 PACKUSWB パック 符号なし
_m_punpckhbw _mm_unpackhi_pi8 PUNPCKHBW インターリーブ -- --
_m_punpckhwd _mm_unpackhi_pi16 PUNPCKHWD インターリーブ -- --
_m_punpckhdq _mm_unpackhi_pi32 PUNPCKHDQ インターリーブ -- --
_m_punpcklbw _mm_unpacklo_pi8 PUNPCKLBW インターリーブ -- --
_m_punpcklwd _mm_unpacklo_pi16 PUNPCKLWD インターリーブ -- --
_m_punpckldq _mm_unpacklo_pi32 PUNPCKLDQ インターリーブ -- --
 
void   _m_empty(void)

マルチメディア・ステートを空にします。
詳細は、「EMMS命令: 必要な理由」の図を参照してください。

__m64 _m_from_int(int i)

整数オブジェクトiを、64ビットの__m64オブジェクトに変換します。整数値は0で拡張して64ビットに変換します。

int   _m_to_int(__m64 m)

__m64オブジェクトmの下位32ビットを、整数に変換します。

__m64 _m_packsswb(__m64 m1, __m64 m2)

符号付き飽和処理を使用して、m1の4個の16ビット値を、結果の下位4個の8ビット値にパックします。 符号付き飽和処理を使用して、m2の4個の16ビット値を、結果の上位4個の8ビット値にパックします。

__m64 _m_packssdw(__m64 m1, __m64 m2)

符号付き飽和処理を使用して、m1の2個の32ビット値を、結果の下位2個の16ビット値にパックします。 符号付き飽和処理を使用して、m2の2個の32ビット値を、結果の上位2個の16ビット値にパックします。

__m64 _m_packuswb(__m64 m1, __m64 m2)

符号なし飽和処理を使用して、m1の4個の16ビット値を、結果の下位4個の8ビット値にパックします。 符号なし飽和処理を使用して、m2の4個の16ビット値を、結果の上位4個の8ビット値にパックします。

__m64 _m_punpckhbw(__m64 m1, __m64 m2)

m1の上位半分の4個の8ビット値と、m2の上位半分の4個の値をインターリーブ(交互に配置)します。インターリーブはm1のデータから始めます。

__m64 _m_punpckhwd(__m64 m1, __m64 m2)

m1の上位半分の2個の16ビット値と、m2の上位半分の2個の値をインターリーブします。インターリーブはm1のデータから始めます。

__m64 _m_punpckhdq(__m64 m1, __m64 m2)

m1の上位半分の32ビット値と、m2の上位半分の32ビット値をインターリーブします。インターリーブはm1のデータから始めます。

__m64 _m_punpcklbw(__m64 m1, __m64 m2)

m1の下位半分の4個の8ビット値と、m2の下位半分の4個の値をインターリーブします。インターリーブはm1のデータから始めます。

__m64 _m_punpcklwd(__m64 m1, __m64 m2)

m1の下位半分の2個の16ビット値と、m2の下位半分の2個の値をインターリーブします。インターリーブはm1のデータから始めます。

__m64 _m_punpckldq(__m64 m1, __m64 m2)

m1の下位半分の32ビット値と、m2の下位半分の32ビット値をインターリーブします。インターリーブはm1のデータから始めます。