【发布时间】:2021-06-09 01:25:57
【问题描述】:
如果我的代码正在为可能与其当前运行的平台不同的平台生成 LLVM SSA,我如何获得像 FLT_MAX 或 FLT_EPSILON 之类的值(或者对于双精度数或任何其他值相同)浮点宽度)?
我猜一般来说,为我自己的系统获取这些值并使用它们是不正确的。将问题委托给clang 或gcc 也是不可接受的解决方案。
在生成 LLVM 代码时,我如何知道要为 FLT_MAX 发出什么值?
【问题讨论】:
-
我不需要这些,但我已经使用ConstantExpr 和常量的定义生成了其他常量。 LLVM 然后将我的常量表达式折叠成一个简单的常量。
-
您的目标(以及您的开发机器)很可能使用 IEEE-754 浮点类型。 LLVM 甚至还支持其他任何东西吗?因此,您可以只查找该值,并可能将其写为十六进制浮点数。
-
@NateEldredge 如果 LLVM 的 FloatType 和 DoubleType 保证在所有平台上都是 IEEE754 32 位和 64 位,那可能会成功。
标签: floating-point llvm llvmlite