是否有英特尔SSE指令可以从(非连续的)均匀间隔的内存地址加载浮点数?
例如,给定一个数组A = {0, 1, 2, 3 .... n}
,我想一次加载到一个128位寄存器{A[0], A[4], A[8], A[12]}
,然后是
{A[5], A[9], A[13], A[17]}
答案 0 :(得分:2)
您需要加载多个连续的向量,然后使用例如将它们置换为所需的排列。 pshufd
或punpckldq
等。在Haswell及其他地方使用AVX2会产生负载感应,但在此之前,这是您可以做到的最佳选择。