LLVM 11.0隨Python 3的更新,針對RISC-V的改進等

LLVM

經過六個月的發展 LLVM 11.0項目新版本發布已經發布 其中提出了各種改進,例如 Python 3 的更新、支持 RISC-V 實驗指令的補丁以及更多更改。

對於那些不了解 LLVM 的人來說,他們應該知道它是 符合 GCC 標準的工具包 (編譯器、優化器和代碼生成器)將程序編譯為類似於 RISC(具有多級優化系統的低級虛擬機)的位碼中間虛擬指令。

它旨在優化編譯時間。、鏈接時間、用戶想要定義的任何編程語言的執行時間。 最初是為了編譯 C 和 C++ 而實現的、LLVM 與語言無關的設計以及該項目的成功 他們催生了各種各樣的語言。

生成的偽代碼可以使用 JIT 編譯器在程序執行時直接轉換為機器指令。

LLVM 11.0的主要新功能

在這個新版本的 LLVM 11.0 中 構建系統已改為使用 Python 3,因此不強制使用 Python 3,因為如果它不可用,則會實現回滾選項以使用 Python 2。

屬性 添加了向量函數abi-variant 中間表示 (IR) 描述標量函數和向量函數之間的映射 用於引導呼叫。 從 llvm::VectorType 中提取兩個獨立的向量類型:llvm::FixedVectorType 和 llvm::ScalableVectorType。

未定義的行為是基於undef進行分支並將未定義的值傳遞給標準庫函數。

在memset/memcpy/memmove中,允許傳遞未定義的指針,但前提是size參數等於XNUMX。

LLJIT 添加了對通過 LLJIT::initialize 和 LLJIT::deinitialize 方法執行靜態初始化的支持。

添加了 能夠將靜態庫添加到 JITDylib 使用 StaticLibraryDefinitionGenerator 類。 添加了 ORCv2 的 C API(用於創建 JIT 編譯器的 API)。

在改進對不同處理器架構的支持方面:

  • 添加 支持 Cortex-A34、Cortex-A77、Cortex-A78 和 Cortex-X1 處理器 在AArch64架構的後端。 實現了ARMv8.2-BF16 (BFloat16) 和ARMv8.6-A 擴展,包括RMv8.6-ECV(增強型計數器虛擬化)、ARMv8.6-FGT(細粒度陷阱)、ARMv8.6-AMU(活動監視器虛擬化)和 ARMv8.0-DGH(數據收集提示)。
  • 添加了對 ARM 後端 Cortex-M55、Cortex-A77、Cortex-A78 和 Cortex-X1 處理器的支持。 實現了 Armv8.6-A 矩陣乘法和 RMv8.2-AA32BF16 BFloat16 擴展。
  • 添加了對 PowerPC 後端中 POWER10 處理器代碼生成的支持。 改進了循環優化並改進了對浮點運算的支持。
  • 架構後端 RISC-V可以在支持下接收補丁 用於尚未正式批准的實驗性擴展指令集。

除此之外 提供了為鉤子函數生成代碼的能力 內置於 SVE 向量指令中。

AVR 架構的後端已從實驗類別移至基礎發行版中包含的穩定類別。

x86 後端 支持 Intel AMX 和 TSXLDTRK 指令。 增加了針對 LVI 攻擊的保護 還實現了加載值注入(Load Value Injection)和通用推測執行副作用抑制機制,以阻止因 CPU 上操作的推測執行而引起的攻擊。

在其他突出的變化中:

  • SystemZ 架構的後端增加了對 MemorySanitizer 和 LeakSanitizer 的支持。
  • Libc++ 添加了對數學常量頭文件的支持。
  • LLD 鏈接器的擴展功能。
  • 改進了ELF 支持,包括添加選項“–lto-emit-asm”、“–lto-whole-program-visible”、“–print-archive-stats”、“–shuffle-section”、“–thinlto-single - module” ”、“–unique”、“–rosegment”、“–threads = N”。
  • 添加了選項“–time-trace”將跟踪保存到文件中,然後可以通過 Chrome 中的 chrome://trace 接口進行解析。
  • Go 編譯器 (llgo) 的接口已從該版本中刪除,並且將來可能會進行重組。

終於 如果您想了解更多 關於這個新版本,您可以參考 以下鏈接中的詳細信息。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。