ベクトル化ループの種類

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

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