gpt4 book ai didi

c - __int128_t 算术是否被 GCC 模拟,即使使用 SSE?

转载 作者:太空狗 更新时间:2023-10-29 16:58:31 25 4
gpt4 key购买 nike

我听说 GCC 提供的 128 位整数数据类型,如 __int128_t 是模拟的,因此速度很慢。但是,据我所知,各种 SSE 指令集(SSE、SSE2、...、AVX)至少引入了一些用于 128 位寄存器的指令。我不太了解 SSE 或汇编/机器代码,所以我想知道是否有人可以向我解释是否使用现代版本的 GCC 模拟了 __int128_t 的算术。

我问这个问题的原因是因为我想知道在不同版本的 GCC 之间期望 __int128_t 性能有很大差异是否有意义,这取决于利用了哪些 SSE 指令。

那么,__int128_t 算术的哪些部分是 GCC 模拟的,哪些部分是用 SSE 指令(如果有的话)实现的?

最佳答案

我在问题中混淆了两个不同的东西。

首先,正如 PaulR 在评论中解释的那样:“SSE 或 AVX 中没有 128 位算术运算(除了按位运算)”。考虑到这一点,必须在基于 x86-64 的现代处理器(例如 AMD Family 10 或 Intel Core 架构)上模拟 128 位算法。这与 GCC 无关。

问题的第二部分是 GCC 中的 128 位算术仿真是否受益于 SSE/AVX 指令或寄存器。正如 PaulR 的评论所暗示的那样,SSE/AVX 中没有太多内容可以让您更轻松地进行 128 位算术;最有可能使用 x86-64 指令。我感兴趣的代码无法使用 -mno-sse 进行编译,但可以使用 -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno 进行编译-sse4.1 -mno-sse4.2 -mno-avx -mno-avx2 并且性能不受影响。所以我的代码没有受益于现代 SSE 指令。

关于c - __int128_t 算术是否被 GCC 模拟,即使使用 SSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566437/

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