gpt4 book ai didi

arm - 使用 NEON 指令与零进行比较

转载 作者:行者123 更新时间:2023-12-01 11:29:15 28 4
gpt4 key购买 nike

我有以下代码

if(value  == 0)
{
value = 1;
}

使用 NEON 向量化指令我需要执行上述操作。我如何将 NEON 寄存器值与 0 进行比较,以便在 4 个元素时相等,如果元素为零,则将值更改为 1。

最佳答案

假设整数数据,那么由于 NEON 具有特定的“与零比较”指令,以及按位方式比较结果的工作,有一种非常厚脸皮的方法可以仅使用一个备用寄存器来做到这一点。在广义伪组装中:

VCEQ.type  mask, data, #0    @ Generate bitmask vector with all bits set in elements
@ corresponding to zero elements in the data
VSUB.type data, data, mask @ Interpret "mask" as a vector of 0s and -1s, with the
@ result of incrementing just the zero elements of "data"
@ (thanks to twos complement underflow)

这个技巧不适用于浮点数据,因为非零值的位模式更复杂,如果替换值不是 1(或 -1),它也不起作用,所以在这些情况下你需要构建一个包含适当替换元素的单独向量,并根据 @Ermlg's answer 使用比较掩码进行条件选择.

关于arm - 使用 NEON 指令与零进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504266/

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