我需要在没有AVX2的情况下实现类似vpgatherdd的机制。
说,我在xmm0中打包了4个i32偏移量。我将需要提取xmm0中的每个元素,以执行mov reg, [base + offset]
作业。
问题在于我应该如何提取元素?
有pextrd
,其等待时间为3.而且我不会像流一样这样做,每次动态计算偏移量为8或4。
还有psrldq
,其延迟为1,只有一个movd
,似乎我可以在2个周期内完成提取工作。
虽然1个周期不多,但我想知道哪个更好。 并且下一次8偏移提取会隐藏这种延迟吗?
是否存在选择长延迟指令与短延迟指令组的一般规则?