gpt4 book ai didi

c - Clang 中的 256 位算术(扩展整数)

转载 作者:行者123 更新时间:2023-12-03 14:40:49 26 4
gpt4 key购买 nike

我正处于一个项目的设计阶段,该项目需要执行大量简单的 256 位整数运算(仅加、子、多、分),并且需要针对这四个操作进行合理优化的东西。
我已经熟悉 GMP、NTL 和大多数其他重量级 bignum 实现。然而,这些实现的开销促使我做我自己的低级实现——我真的不想这样做;众所周知,这东西很难做对。
在我的研究中,我注意到 Clang 中新的扩展整数类型 - 我是 gcc 用户 - 我想知道是否有人对现实生活中的扩展整数有任何经验,愤怒的实现?它们是否针对“明显的”位大小(256、512 等)进行了优化?
我在 linux 下的 x-64 上使用 C 语言(目前是 Ubuntu,但如果需要,可以向其他发行版开放)。我主要使用 gcc 进行生产工作。
编辑添加:
@phuclv 确定了以前的答案 C++ 128/256-bit fixed size integer types . (感谢@phuclv。)这个q/a 侧重于c++ 支持;我希望确定是否有人对新的 Clang 类型有任何特定的经验。

最佳答案

看起来目前不支持超过 128 位的这些类型的划分。
截至2020年8月2日,在godbolt上使用clang trunk,为x86-64编译以下代码

typedef unsigned _ExtInt(256) uint256;

uint256 div(uint256 a, uint256 b) {
return a/b;
}
失败并显示错误消息
fatal error: error in backend: Unsupported library call operation!
Try it
同样的事情发生在 _ExtInt(129) 和我尝试过的所有更大的东西上。 _ExtInt(128) 和更小的似乎工作,虽然他们调用内部库函数 __udivti3 而不是内联。
它已被报告为 LLVM bug 45649 。该页面上有一些讨论,但结果似乎是他们真的不想编写完整的任意精度除法指令。
加法、减法和乘法在此版本上与 _ExtInt(256) 一起使用。

关于c - Clang 中的 256 位算术(扩展整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63226753/

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