(連続していない) 等間隔のメモリアドレスから float をロードできる Intel SSE 命令はありますか?
たとえば、配列が与えられた場合A = {0, 1, 2, 3 .... n}
、一度に 128 ビットのレジスタにロードし{A[0], A[4], A[8], A[12]}
、その後に
{A[5], A[9], A[13], A[17]}
この種の使用例では、通常、複数の連続したベクトルをロードし、egpshufd
またはpunpckldq
etcを使用して必要な配置に並べ替えます。
Haswell 以降の AVX2 では、収集されたロード命令 (例: _mm_i32gather_ps ) があることに注意してください。これも考慮する価値があります。