performance - ARM7 Cortex A8上的浮点状态传输

标签 performance floating-point llvm arm7 assembly

有一个比较:

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/

相关文章:

gcc - 为什么gcc "start"函数(在main之前)中有无意义的asm代码?

algorithm - 如何在 “ascending” 三次贝塞尔曲线中以 Δx 的间隔有效地采样 y?

sql - 在 SQL Server 2008 中,关系会使查询速度更快吗?

C : erroneous output for "(long long int) = (long long int) * (double)"?

floating-point - IEEE 754 浮点表示加法和超过 16 位格式的位置

assembly - 链接时间优化问题导致带有 ASM 常量的 undefined symbol

sql - 计算所有 child 都属于特定类型的 parent 类型

php - 重新创建对象或将其存储在 session 变量中是否更快?

math - float 学坏了吗?

security - 是否有一种基于 LLVM 的编程语言可以保证沙箱安全的快速二进制文件?