これは、ベクトルの個々の要素を異なるメモリ位置にファンアウトすること(分散操作)に関して私が持っていた前の質問に便乗します。__m256d
私のコードは、「長い間」再びアクセスされない大量のデータをメモリに保存します。非一時的なヒントの指示を使用して、これらすべてのストアによって生成されるキャッシュ汚染の量を減らしたいと思います。しかし、私はこれを行うための良い方法を思い付くことができません。これが私のコードが今どのように見えるかの要約です:
__m256d src = ... // data
double *dst;
int dst_dist;
__m128d a = _mm256_extractf128_pd(src, 0);
__m128d b = _mm256_extractf128_pd(src, 1);
_mm_storel_pd(dst + 0*dst_dist, a);
_mm_storeh_pd(dst + 1*dst_dist, a);
_mm_storel_pd(dst + 2*dst_dist, b);
_mm_storeh_pd(dst + 3*dst_dist, b);
非テンポラルヒントを使用して64ビットストアを実行したいのですが、XMMレジスタから直接これを実行する方法はないようです。これを達成するための最良の方法は何でしょうか?