ベクトル化されるループの種類

整数ループの場合、64 ビットの MMX(R) テクノロジーおよび 128 ビットのストリーミング SIMD 拡張命令 (SSE) は 32 ビット、16 ビット、および 8 ビットの整数データ型を使用するほとんどの算術演算子と論理演算子に対して SIMD 命令を提供します。

整数丸め演算の最終的な精度を保持するのであればベクトル化できるときがあります。例えば、最後に格納された値が 16 ビット整数である場合には、32 ビットの右シフト演算子は 16 ビット・モードではベクトル化されません。また、MMX テクノロジー、および SSE 命令セットは完全に直交型ではない (例えば、バイト・オペランドのシフトはサポートされていない) ため、実際にはすべての整数演算をベクトル化ができないので注意してください。

32 ビット単精度および 64 ビット倍精度の浮動小数点数を操作するループの場合、SSE/SSE2 は算術演算子 (加算 (+)、減算 (-)、乗算 (*)、除算 (/)) に対して SIMD 命令を提供します。

また、ストリーミング SIMD 拡張命令は、MINMAX という二項演算子、および SQRT という単項演算子に SIMD 命令を提供しています。これ以外の複数の数値演算子の SIMD バージョン (三角関数 SINCOSTAN など) は、インテル(R) コンパイラーに添付されているベクトル数値ランタイム・ライブラリー内のソフトウェアでサポートしています。