我有兴趣找到比较存储在 Cortex-A9 内核(允许 VFP 指令)上的 NEON 寄存器(例如 Q0 和 Q3)中的值的最快方法(最低周期数)。
到目前为止,我有以下内容:
(1) 使用VFP浮点比较:
vcmp.f64 d0, d6
vmrs APSR_nzcv, fpscr
vcmpeq.f64 d1, d7
vmrseq APSR_nzcv, fpscr
如果 64 位“浮点数”等价于 NaN,则此版本将不起作用。
(2) 使用 NEON 缩小和 VFP 比较(这次只使用一次,并且以 NaN 安全的方式):
vceq.i32 q15, q0, q3
vmovn.i32 d31, q15
vshl.s16 d31, d31, #8
vcmp.f64 d31, d29
vmrs APSR_nzcv, fpscr
D29 寄存器之前预加载了正确的 16 位模式:
vmov.i16 d29, #65280 ; 0xff00
我的问题是:还有比这更好的吗?我是否正在监督一些明显的方法来做到这一点?