17

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

有没有办法在 gcc 中请求它?

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

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

4

1 回答 1

6

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

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

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

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

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

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

于 2018-10-31T21:28:04.810 回答