我在内存中连续存储了四个双精度数组double x[4]
。
使用AVX指令集准备四个寄存器(例如,ymm0,ymm1,ymm2,ymm3)的最快(在高效率方面)方式是这样的:
ymm0 = { x[0], x[0], x[0], x[0] }
ymm1 = { x[1], x[1], x[1], x[1] }
ymm2 = { x[2], x[2], x[2], x[2] }
ymm3 = { x[3], x[3], x[3], x[3] }
我可以这样做:
ymm0 = _mm256_set1_pd(x[0]);
ymm1 = _mm256_set1_pd(x[1]);
ymm2 = _mm256_set1_pd(x[2]);
ymm3 = _mm256_set1_pd(x[3]);
但是如果有一个_mm256_load_pd
会有更好的方法吗?