将AVX寄存器解复用为四个寄存器,每个寄存器包含相同的值

时间:2016-09-02 16:04:44

标签: c simd intrinsics avx

我在内存中连续存储了四个双精度数组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会有更好的方法吗?

0 个答案:

没有答案