gpt4 book ai didi

ARM NEON : comparing 128 bit values

转载 作者:行者123 更新时间:2023-12-04 20:14:03 25 4
gpt4 key购买 nike

我有兴趣找到在 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

我的问题是:还有比这更好的吗?我是否正在监督一些明显的方法来做到这一点?

最佳答案

我相信你可以通过一条指令减少它。通过使用左移并插入 (VLSI),您可以将 Q15 的 4 个 32 位值组合成 D31 中的 4 个 16 位值。然后您可以与 0 进行比较并获得浮点标志。

vceq.i32  q15, q0, q3
vlsi.32 d31, d30, #16
vcmp.f64 d31, #0
vmrs APSR_nzcv, fpscr

关于 ARM NEON : comparing 128 bit values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9068959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com