有一个比较:
if( val0 > val1 )
其中val0和val1是双变量。
Apple LLVM编译器生成的代码是
+0x184 vcmpe.f64 d17, d16
+0x188 vmrs APSR_nzcv, fpscr <-- FP status transfer (30 cycles stall of ALU)
+0x18c ble.w .....
有什么办法可以避免这种转移?
[更新]代码正在Cortex-A8处理器上运行。
最佳答案
似乎不可能避免标志转换,因为代码流管理处理的是处理器的ARM部分,而不是Neon协处理器。
问题已结束。
关于performance - ARM7 Cortex A8上的浮点状态传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8665340/