c++ - 如何在 gcc 上为 x86_64 启用 __fp16 类型

标签 c++ c gcc x86 half-precision-float

__fp16 float 据类型是众所周知的 C 标准扩展,尤其是在 ARM 处理器上使用。我想在我的 x86_64 处理器上运行它们的 IEEE 版本。虽然我知道他们通常没有这些,但我可以使用“无符号短”存储(它们具有相同的对齐要求和存储空间)和(硬件)浮点运算来模拟它们。

有没有办法在 gcc 中请求?

我认为舍入可能有点“不正确”,但这对我来说没问题。

如果这也适用于 C++,那将是理想的。

最佳答案

我没有在 gcc 中找到这样做的方法(从 gcc 8.2.0 开始)。

至于 clang,在 6.0.0 中,以下选项显示了一些成功:

clang -cc1 -fnative-half-type -fallow-half-arguments-and-returns

-fnative-half-type 选项允许使用 __fp16 类型(而不是将它们提升为 float )。虽然选项 -fallow-half-arguments-and-returns 允许按值传递 __fp16,但 API 是非标准的,请注意不要混合不同的编译器。

话虽如此,它不提供使用 __fp16 类型的数学函数(它会将它们提升到 floatdouble 或从 float 提升它们)。

这对我的用例来说已经足够了。

关于c++ - 如何在 gcc 上为 x86_64 启用 __fp16 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45108628/

相关文章:

c++ - 在 cpp-netlib http 服务器中访问请求 header

c++ - 在 C++11 std::atomic 中,用于++、-- 和 += 等运算符的 memory_order 是什么?

c - 为 Unix 程序构建一个 arglist

c - 在 C 中如何编写适合操作系统的行尾字符?

c - C 中的堆栈内存重用 gcc 优化?

c++ - 如何计算 TinyXml 中的元素?

c++ - 创建指向成员函数的指针的语法

c - Linux 内核 : Current macro working

c++ - GCC 的 "vstring"是什么?

c++ - 强制使用预定义宏的 gcc 标志