gpt4 book ai didi

iphone - 使用 iPhone SIMD 浮点单元进行浮点到整数转换

转载 作者:行者123 更新时间:2023-12-03 19:17:05 27 4
gpt4 key购买 nike

我目前正在尝试使用 Shark 优化一些 DSP 相关代码,发现我在浮点到整数转换上浪费了大量时间:

SInt16 nextInt = nextFloat * 32768.0f + 0.5f;

由于 iPhone 似乎有一个 ARM11 FP 协处理器,我想知道是否可以用 FTOSI 指令替换我的代码。有一些documentation可在 ARM 网站上找到,但我没有内联手动优化汇编的经验。以前有人这样做过吗?
我想我可以用

内联代码
__asm__ volatile

但是如何检查指令是否可用?
我如何传递我的值?

编辑1:正如路易斯已经指出的那样,我忘记提及我正在关闭“Compile for Thumb”的情况下进行编译。

编辑2:由于我想将 float 转换为有符号 Int16 而不是无符号 Int,因此我将 ARM 指令从 FTOUI 更改为 FTOSI。这是原始帖子中的一个错误。

最佳答案

这可能是一个显而易见的问题,但您确定您的目标是 ARM 吗?默认情况下,iPhone SDK 编译 THUMB 的所有应用程序,THUMB 使用软件浮点所有内容(包括浮点/整数转换)。

无论如何,如果设备有 VFP 协处理器,它就有指令。您可以通过读取 FPSID 寄存器并确保它是受支持的型号来检查它是否具有合适的协处理器。

我怀疑可以安全地假设所有 iPhone 都支持它。除此之外,Apple 的汇编器支持操作码,并且 LLVM ARM 后端使用它进行类型转换,这意味着当 Apple 最终在手机上支持 LLVM 时,他们的编译器将生成 FTOUI 指令。

关于iphone - 使用 iPhone SIMD 浮点单元进行浮点到整数转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136574/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com