ARM7 Cortex A8 上的浮点状态传输

发布于 2024-12-23 04:59:26 字数 402 浏览 1 评论 0原文

有一个比较:

if( val0 > val1 )

其中val0和val1是double变量。

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 处理器上运行。

There is a comparison:

if( val0 > val1 )

where val0 and val1 are double variables.

The code generated by the Apple LLVM compiler is

+0x184  vcmpe.f64                      d17, d16
+0x188  vmrs                           APSR_nzcv, fpscr <-- FP status transfer (30 cycles stall of ALU)
+0x18c  ble.w                          .....

Is there any way to avoid this kind of transfer?

[UPDATE] The code is running on the Cortex-A8 processor.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤带着心事 2024-12-30 04:59:26

因为看起来不可能避免标志转换,因为代码流管理涉及处理器的 ARM 部分,而不是 Neon 协处理器。
问题已结束。

As it seems it's impossible to avoid flags transition as with the code flow management deals ARM part of the processor, not Neon co-processor.
Question is closed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文