ARM Neon:性能 vld4.u8 对比 4x vld1.u8

ARM Neon: Performance vld4.u8 vs 4x vld1.u8

四次 vld1 和一次 vld4 之间最快的是什么。显然,加载的数据不一样,但如果我有选择,什么是最好的还是相同的?

pld[in]
vld1.u8 { d0 }, [in]!
vld1.u8 { d1 }, [in]!
vld1.u8 { d2 }, [in]!
vld1.u8 { d3 }, [in]!

对比

pld[in]
vld4.u8 { d0, d1, d2, d3 }, [in]!
在同一个列表中,

vld1.u8 {d0, d1, d2, d3}, [in]! 通常会快于或等于 vld4.u8。这是因为 vld4 可能必须在数据加载后对数据进行置换才能将其放入正确的寄存器中。

即使它确实需要更多的工作,但额外的成本可能隐藏在其他因素的背后,所以这不一定是什么大问题。