ベクトル化ループの種類

整数ループの場合、MMX® テクノロジ命令およびストリーミング SIMD 拡張命令は、32 ビット、16 ビット、および 8 ビットの整数データ型での算術演算と論理演算のほとんどに各種 SIMD 命令を提供しています。整数丸め演算の最終的な精度を保持するのであればベクトル化できるときがあります。例えば、最終的に保存された値が 16 ビット整数の場合は、32 ビット右シフト演算子はベクトル化されません。また、MMX 命令セットとストリーミング SIMD 拡張命令セットは完全には直交していないため (例えば、バイトシフトに対応していない)、実際にはすべての整数演算がベクトル化できるわけではありません。

32 ビット単精度および 64 ビット倍精度の浮動小数点数を使用して演算を行うループの場合、ストリーミング SIMD 拡張命令は、+-*/ という算術演算子に SIMD 命令を提供しています。また、ストリーミング SIMD 拡張命令は、MINMAX という二項演算子、および SQRT という単項演算子に SIMD 命令を提供しています。その他いくつかの算術演算子 (三角関数 SINCOSTAN など) の SIMD 版は、インテル® C++ コンパイラに付属しているベクトル算術演算用ランタイム・ライブラリ収録のソフトウェアで対応しています。