我想比较霓虹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
}