Neon 64 位 aarch:将向量与零进行比较

Neon 64 bit aarch: compare vector to zero

我想比较 Neon 64 位向量的所有 16 个元素,如果所有元素都等于零,则有一个分支。

现在,我有:

uaddlv h1, v0.16b
umov w0, v1.s[0]
cmp w0, #0
beq .exit

我也试过:

uaddlv h1, v0.16b
fcmp s1, #0.0
beq .exit

这是正确的吗?有没有办法做得更好?使用一条指令?

这应该有效

umaxv h1, v0.16b // Get max value across vector
umov w0, v1.s[0] // Move to arm register
cbz w0 .exit // Branch if equal to zero

在 C 中使用内部函数...

if(vmaxvq_u16(vector) == 0) { // Is max value zero
    goto exit; // Goto label in C code
}