今年年初,我们很高兴看到 AMD Zen 5 “znver5” 支持上游用于 GCC 14 编译器,并将其纳入年度 GNU 编译器集合功能版本。很高兴看到 AMD Zen 5 支持在发布任何 Zen 5 产品之前就进入了这个开源编译器。从那时起,GCC 对新 Znver5 目标的支持不断改进,同时我们一直在等待看到 LLVM/Clang 编译器堆栈的类似处理。最后,本周已提交 AMD Zen 5 (znver5) 支持以供审查,以便将其上游用于 LLVM。
今天早上我很高兴地查看了一下,看到终于有一个将 Znver5 添加到上游 LLVM 的拉取请求待处理。昨天,AMD 编译器工程师打开了这个拉取请求,要求将 Zen 5 支持添加到上游开源 LLVM 中。
这增加了对 Clang 的 “-march=znver5” 支持、Family 1Ah 检测,并启用了 Zen 5 中添加到 Zen 4 中的新指令。此 LLVM 补丁仍在使用 AMD Zen 4 调优数据,而 AMD 没有提交任何新的调优指标。随着时间的推移,他们有望为上游提供对 Zen 5 CPU 的调整支持。
在浏览这个编译器补丁时,我确实喜欢的一点是,作为代码注释,他们为 AMD Zen 5 模型 ID 添加了一点解码器……到目前为止,GCC 和 Linux 内核补丁以及其他 Family 1Ah 补丁只是将所有 Zen 5 的模型视为模型 ID 128 或更小。LLVM Znver5 补丁的这个代码注释实际上列出了哪些模型属于哪些代号。涵盖的代号包括 Breithorn、Breithorn-Dense、Strix 1、Strix 2、Strix 3、Granite Ridge、Weisshorn、Krackan1 和 Sarlak。这些代号真的不应该让人感到惊讶,但我不相信“Strix 3”还没有出现在谣言中。AMD “Weisshorn” 此前在其他地方被报道为传闻是 Zen 6 的代号,但鉴于它作为 Zen 5 列表的一部分出现,这可能导致这可能是一个不准确的描述。
无论如何,这个用于 LLVM 的 Znver5 补丁现在正在接受审查,希望很快能合并到 LLVM Git 中。不过,时机有点不幸。除了在最初的 GCC Znver5 补丁发布 6 个多月后发布之外,这个 PR 请求是在 LLVM 19 编译器发布稳定版的几天前发布的——并且该代码在 8 月被分支出来。LLVM 19 稳定版将在本周或下周发布,很遗憾 Znver5 支持没有进入为期六个月的编译器版本,但希望它能被反向移植到 LLVM 19.1 小版本之一,否则用户将需要等到明年 3 月左右的 LLVM 20。
无论如何,这仍然是我希望 AMD 在 CPU 发布之前尽早提供编译器支持的方面之一,因为编译器版本之间的准备时间很长,甚至在它们被著名的 Linux 发行版采用之前甚至更长。Intel 在这方面做得很好,经常提前 1~2 年获得 GCC 和 Clang 的新内核支持。LLVM 18 在计划的 2025 年首次亮相之前增加了 Clearwater Forest 和 Panther Lake 目标,而只有 LLVM 20 或 LLVM 19 小版本将添加 Zen 5,Ryzen AI 300 系列和 Ryzen 9000 系列产品已经发货。
对于那些不想等待受支持的编译器版本或寻找在老化的企业 Linux 发行版上运行的东西的人来说,AMD 可能很快就会发布其基于 LLVM 的 AOCC 编译器的更新版本,并支持 Zen 5。
转自 AMD Submits Initial Zen 5 Enablement For LLVM/Clang Compiler – Phoronix