🔧 Compiler66x — LLVM-based C66x DSP 编译器
基于 LLVM/Clang 框架构建的 TI C66x DSP 编译器。Windows 10 开发环境,以 TI CCS C6000 Code Generation Tools 为 golden 参考。
项目全景时间线
Compiler66x 开发历程
timeline
title Compiler66x 开发时间线
2026-05 : LLVM C66x 后端启动 : TableGen .td 文件分析 : 指令编码研究
2026-06-11 : 17条指令 TableGen 完成 : isCodeGenOnly=1 移除 : Float(4)+Bit(8)+Rotate(4)+DSP(1)
2026-06-11 : LLVM 构建启动 : 8并行编译 : Release+Clang : 预计30-60分钟
2026-06-20 : CC66x 后端实现 : M2 变体分支 : largeoffset 分支
2026-06-27 : CC66x 实现完成 : C66X_IMPLEMENTATION_COMPLETE : 构建状态文档编写
2026-07-01 : CompilerSploop 启动 : 软件流水循环优化 : SPLOOP 硬件循环缓冲区
2026-07-10 : 中央 active 18条 : 全部归 Compiler66x : 主要工作量集中
项目分布
| 项目 | 位置 | 说明 |
|---|---|---|
| Compiler66x 主线 | CodexWorkSpace | LLVM-based C66x 编译器主线 |
| Compiler66x-package-m2 | CodexWorkSpace | M2 新编码变体分支 |
| Compiler66x-m2-largeoffset | CodexWorkSpace | 大偏移量寻址分支 |
| Compiler66x-sploop | CodexWorkSpace | SPLOOP 硬件循环优化分支 |
| Compiler66x-worktrees | CodexWorkSpace | 多 worktree 并行开发 |
| CC66x 实现版 | ClaudeWorkSpace | LLVM 后端实现完成版 |
| CompilerSploop | ClaudeWorkSpace | 循环优化专项 |
已启用指令(17条)
指令分类
flowchart TB
subgraph FLOAT["浮点运算 (4条)"]
F1["ADDSP 单精度加法"];F2["SUBSP 单精度减法"];F3["MPYSP 单精度乘法"];F4["ABSSP 绝对值"]
end
subgraph BIT["位操作 (8条)"]
B1["CLR/SET 位清除/设置"];B2["EXT/EXT_A 位提取"];B3["EXTU/EXTU_A 无符号位提取"];B4["LMBD/LMBDctlz 最左位检测"]
end
subgraph ROT["旋转/清零 (4条)"]
R1["ZERO 清零"];R2["ROTL 旋转左移"];R3["ROTL_var_A 变量旋转A"];R4["ROTL_var_B 变量旋转B"]
end
subgraph DSP["DSP运算 (1条)"]
D1["DOTP2 双点积"]
end
style FLOAT fill:#3987e5,color:#fff
style BIT fill:#199e70,color:#fff
style ROT fill:#c98500,color:#000
style DSP fill:#e66767,color:#fff
还有约 50 条指令仍标记为 codeGenOnly——它们需要在 TI CCS 模拟器上逐一验证后才能启用。后续工作是构建 LLVM 后端并逐条验证。
🔧 LLVM TableGen 是什么?
TableGen 是 LLVM 的"指令描述语言"——用一种声明式语法描述每条指令的编码格式、操作数类型、汇编语法。编译器会根据 .td 文件自动生成指令选择器、汇编器、反汇编器的代码。修改 isCodeGenOnly=1 为 0 就是"启用"一条指令。
多分支并行开发策略
并行分支管理
graph TB
MAIN["🌳 Compiler66x 主线"] --> M2["M2 新编码分支"]
MAIN --> LO["largeoffset 大偏移量分支"]
MAIN --> SP["SPLOOP 循环优化分支"]
MAIN --> WT["worktrees 并行工作树"]
MAIN --> CC["CC66x Claude 实现版"]
CC -->|"17条指令启用"| BUILD["⏭️ LLVM 构建验证"]
style MAIN fill:#3987e5,color:#fff
style BUILD fill:#199e70,color:#fff