GCC 对 XMM 寄存器的支持严重损坏?

发布于 2024-10-21 21:48:47 字数 188 浏览 4 评论 0原文

每当我检查 GCC 生成的汇编代码中使用 __m128i 类型的代码时,我都会看到看起来像是一场灾难。有大量的冗余指令没有任何作用。

然而,作为一名汇编程序员,我宁愿使用 asm{},但 GCC 阻止我在 asm {} 中使用 XMM 寄存器。

有什么技巧可以让 GCC 使用 XMM 还是我需要等待未来的版本? 我有4.3.4。

Whenever I examine the assembly code produced by GCC for code that uses the __m128i type, I see what looks like a catastrophe. There's tons of redundant instructions that serve no purpose.

And yet, as an assembly programmer I'd rather use asm{} but GCC prevents me from using XMM registers in asm {}.

Is there some trick to getting GCC to use XMM or do I need to wait for a future release?
I've got 4.3.4.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一直在等你来 2024-10-28 21:48:47

您是否在启用优化的情况下进行编译,例如 -O3 ?如果是这样,那么 gcc 通常会从内在函数生成相当不错的 SSE 代码。大多数内在函数恰好映射到一条 SSE 指令。您能举一个您认为效率特别低的例子吗?

另外,我不确定你的意思是“GCC 阻止我在 asm {} 中使用 XMM 寄存器”——同样,如果你提供一个具体的示例,那么也许有一个简单的解决方案。

Are you compiling with optimisation enabled, e.g. -O3 ? If so then gcc usually generates pretty decent SSE code from intrinsics. Most intrinsics map to exactly one SSE instruction. Can you give an example that you consider to be particularly inefficient ?

Also, I'm not sure what you mean about "GCC prevents me from using XMM registers in asm {}" - again, if you provide a specific example then perhaps there's an easy solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文