Это совмещение по предыдущему вопросу , который у меня был относительно разнесения отдельных элементов вектора __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.Как лучше всего это сделать?