2011-08-10 56 views

回答

5

ARM体系结构参考手册说:

An ARM Advanced SIMD VADD instruction must be unconditional. 

即,如果在ARM模式是,这些指令是无条件的。如果将它们放入IT块中,可以在Thumb-2中有条件地使用它们。

.syntax unified 
    .code 16 
    .globl _foo 
_foo: 
    cmp r0, #0 
    it eq 
    vaddeq.f32 d0, d0, d1 
    bx lr 
+0

非常感谢,真正清除了我的东西,即时通讯不会在我的代码中使用拇指,所以我想我会坚持分支。尽管谢谢你的伟大答案! –

+2

太好了。现在,您可以继续并单击接受此答案的按钮,然后针对您提出的所有其他问题以及人们花时间回答的问题执行相同操作。 –

+0

对不起,新的堆栈溢出 –

1

为什么有条件的NEON指令在ARM模式下可用的原因是因为他们使用的编码设置为NV(永远)的条件字段。您需要使用条件分支或(更好地)重写代码以不直接使用比较结果 - 例如根据结果​​将寄存器设置为0或1,并在进一步的操作中使用它的值。

1

只有有条件地执行NEON和VFP共享的指令。

(vldmia例如)

对于我来说,已经有当条件执行可能从一些轻微的头痛救了我一些情况,但一般来说,你不会需要它厉害。

仔细查看NEON逻辑和比较操作。他们很好地指出了NEON应该如何编程。

cya。