霓虹灯组件矢量指令影响标志

时间:2013-06-13 14:00:52

标签: assembly simd neon

我使用手臂组件和NEON SIMD指令。我想得到两个Q寄存器中最大的16位无符号值,并将它们与阈值进行比较。如果所有16位值都小于阈值,我调用一个函数。如果一个或多个值大于阈值,我调用另一个函数。

以下SIMD说明获得最大值。

// threshold是一个r寄存器

vdup.16       q15, threshold  
vmax.u16      q12, q14, q13  
vcgt.u16      q11, q12, q15

vcgt会影响FPSCR标志吗?我想不是。然后我必须检查q11是否为零。如果是zeor,请调用function1,否则调用function2。 这就像

if (q11 == 0)
//call function1
else
//call function2 

如果不将q11移动到4 r寄存器,我怎么能这样做?

由于

1 个答案:

答案 0 :(得分:2)

没有 - 至少没有在用户模式下。 那些cmp指令创建了掩码向量,您可以根据这两个结果选择值。

  1. 使用适当的vcmp
  2. 创建一个掩码
  3. 计算两种情况的结果
  4. 使用1中的掩码将相应的元素放在上面两个结果中的每个通道上。
  5. 目前我无法准确地告诉你这些说明是什么,因为我在火车上写了我的iPhone。但在参考手册中找到它们不会有问题。