AVX2 組み込みドキュメントを見ると、次のようなロード命令が集められていますVPGATHERDD
。
__m128i _mm_i32gather_epi32 (int const * base, __m128i index, const int scale);
ドキュメントから明確でないのは、計算されたロード アドレスが 要素アドレスかバイトアドレスか、つまり要素のロード アドレスかどうかi
です。
load_addr = base + index[i] * scale; // (1) element addressing ?
また:
load_addr = (char *)base + index[i] * scale; // (2) byte addressing ?
Intel ドキュメントからは(2) のように見えますが、収集されたロードの最小要素サイズが 32 ビットであることを考えると、これはあまり意味がありません。 ) ?