IntelのAVX命令用のC組み込み関数を使用してコードを書いています。パックされた二重ベクトル(a __m256d
)がある場合、それぞれをメモリ内の異なる場所に格納するための最も効率的な方法(つまり、操作の数が最も少ない)は何でしょうか(つまり、次のような異なる場所にファンアウトする必要があります)彼らはもう詰め込まれていません)?擬似コード:
__m256d *src;
double *dst;
int dst_dist;
dst[0] = src[0];
dst[dst_dist] = src[1];
dst[2 * dst_dist] = src[2];
dst[3 * dst_dist] = src[3];
SSEを使用すると、および組み込み関数__m128
を使用する型でこれを行うことができます。個々の64ビット部分をメモリに保存できるAVXに類似したものを見つけることができませんでした。存在しますか?_mm_storel_pi
_mm_storeh_pi