LLVM 于 2023 年 3 月 18 日发布了 16. 0.0 版本,以正式后端(official target)的级别实现了对 LoongArch 指令集架构的完善支持。
至此,开源软件世界最重要的五大基础软件(BIG FIVE),即 Linux 内核、GCC、LLVM、Glibc、Binutils,都已发布了支持 LoongArch 架构的版本。
此后的 LoongArch 架构操作系统发行版将可以直接基于上游社区版本进行构建,标志着 LoongArch 软件生态建设将迎来快速发展的新阶段。
据介绍,龙芯架构包括基础架构部分和向量指令、虚拟化、二进制翻译等扩展部分,近 2000 条指令。龙芯架构不包含 MIPS 指令系统。
上个月,龙芯中科发布公告称,公司撤诉对上海芯联芯提起的关于 3A5000 处理器不侵犯 MIPS 指令系统的计算机软件著作权的诉讼案(案件 1);同时,上海芯联芯针对公司 LoongArch 和 3A5000 处理器的诉讼案(案件 2)已判决,北京知识产权法院判决驳回原告上海芯联芯的全部诉讼请求。
据了解,二者的争议起源于龙芯最初选择的 MIPS 路线。龙芯刚起步时使用的 LoongISA 架构是以 MIPS 为基础扩展而来。龙芯在 3A4000 以前的 LoongISA 是基于 MIPS 进行添加,3A5000 则基于龙芯自主指令集 LoongArch。
上海芯联芯公司成立于 2018 年,2021 年上海芯联芯一次性付清所有 MIPS 技术授权费,获得了在中国对 MIPS 技术独占权利人和独家经营权人的地位。
然而上海芯联芯公司却对龙芯中科后来自研的 LoongArch 架构以及 3A5000 处理器提起诉讼,认为龙芯指令集侵害 MIPS 指令集著作权。对此龙芯中科进行了反诉。
LLVM 介绍
LLVM 是如今设计和开发编译器的最重要的框架之一,它不仅提供了知名的 C/C++ 编译器前端 Clang,也为 Rust 等许多其他编程语言提供了编译框架支持,包括 Chromium 在内的大量大型软件都采用 LLVM 作为编译构建工具。
LLVM 项目全面支持 LoongArch
根据此次 LLVM 社区官方发行注记(https://releases.llvm.org/)的说明,在 LLVM16 中,LoongArch 架构从实验性后端(experimental target)被提升至正式后端(official target),这意味着 LoongArch 后端在任何平台上将被默认编译,无需通过额外的 CMake 选项指定。
LLVM 16.0.0 发行注记部分截图
此外,LoongArch 架构在整个 LLVM 项目中得到了更加全面的支持,可支持 OrcJIT、GHC 调用约定等高级特性,clang、compiler-rt、lldb、openmp 和 libunwind 等子项目。
据介绍,龙芯中科是 2022 年 LLVM 社区代码贡献量较多的机构参与者,自 2022 年以来累计向 LLVM 社区贡献了 6.5 万行源代码。此外,来自国内外的开源开发者也向 LLVM 社区贡献了近 5 千行的 LoongArch 架构支持代码。