给LLVM的CPU0后端增加一个指令
2026-03-02
LLVM自定义后端流程熟悉
1. 概述
- 如何适配自定义硬件的新指令集?
- 在LLVM的框架上开发编译器后端,分为哪几个步骤? 哪些是不相关的?
- 如何参与LLVM的上游开发 / LLVM 的官方论坛
2. 相关工作
- 1. 自定义指令DSP,浮点数,多线程,图优化
- 2. LLVM backend 的结构和功能划分,指令选择,指令合并,指令legalize
- 3. LLVM IR / Machine IR / tableGen
- 4. 如何更高效的组织汇编代码,如何规划栈和堆,函数调用
- 5. 本次大部分代码都来自 LLVM官方教程中backend部分文档例子CPU0
3. 实验设计
- 1. 增加一个二元binaryOP指令,以Sqsum为例
- 2. 增加一个三元指令,注意不是浮点
- 3. 增加硬浮点支持
- 4. fastSel / globalsel / selectDag 都支持
4. 实验结果
5. 总结和展望
- 1. 编译器本身就是一个虚拟机
- 2. frame , ABI, libc操作系统编程接口
- 3. LLVM 的目前的路线是什么?还没解决的问题有哪些?
- 4. 过度设计?
- 5. testSuite and benchmark
- 6. LLVM codgen目前涉及到的流程为 LLParse > prelogue > type leglize > selectDag > combineDag > register allocation > epilogue
- 7. 多核?
6. 参考资料
编译器