我有一个uint8x8霓虹灯矢量,这是某些操作的结果。我需要对所有通道执行逻辑AND操作以获得最终结果。每个元素都是0xff(TRUE)或0x00(FALSE)。如何在霓虹灯中执行它?

最佳答案

简单/显而易见的方法(伪代码):

v = VAND(v, v >> 8)
v = VAND(v, v >> 16)
v = VAND(v, v >> 32)

3次移位和3次按位与= 6条指令。

可能更有效的方法:对所有元素进行水平求和,如果为TRUE,则返回sum == -8,否则返回FALSE

可能更简单的方法:将向量与全1的向量进行比较。
return v == 0xffffffffffffffff;

对于读者来说,这是一个有效的练习(可能需要2 x 32位比较?)。

09-25 18:21