使用 LLVM 15 分支並且 main 現在為 LLVM 16 開放,下一個編譯器發布週期的早期更改之一是默認為 RISC-V 啟用可擴展矢量化,並支持 RISC-V 矢量指令的目標。
LLVM 開發人員 Philip Reames 已默認啟用可擴展矢量化,以支持帶有 Zve 或 V 擴展的 RISC-V 目標。他對更改進行了解釋:
當矢量指令可用於目標配置時,此更改啟用 RISCV 的矢量化(僅使用可縮放矢量化,尚未啟用固定矢量)。
此時,生成的配置應該既穩定(例如沒有崩潰),又有利可圖(即標量循環擊敗向量循環的少數情況),但不會進行特別好的調整(即我們發出最好的可能矢量循環)。此更改的目標是使跨組織的測試保持一致,並確保默認配置與下游使用的配置盡可能接近。
這會暴露大量默認情況下未啟用的代碼,因此可能尚未完全執行。鑑於此,出現問題並不意外。如果您發現問題,請確保在還原此更改時包含盡可能多的信息。
兩天過去了,到目前為止還沒有還原,所以希望看起來不錯。更多詳情請訪問 reviews.llvm.org。由於此更改是在 LLVM 16 開發週期開始時進行的,因此在穩定版發布之前仍有大量時間來改進編譯器的 RISC-V 矢量化支持,直到 3 月左右。
RISC-V“V”是這種免版稅 CPU 架構的完整矢量數學擴展,而 Zve 是它的“適度”子集,旨在用於嵌入式設備和微控制器中的較小內核。 RISC-V 的 Vector Extension 1.0 自去年以來一直被凍結,並被認為足夠穩定,可以開始軟件工作。感興趣的人可以通過 GitHub 找到 RISC-V V 1.0 規範。