Commit Graph

  • f608d852bf 基础优化 lzk lzkk 2026-05-28 21:25:37 +0800
  • eb83ab5cd3 基础优化 lzkk 2026-05-28 21:17:12 +0800
  • 32f5dd4f75 perf(ir): IfConversion + LoopUnroll增强——if-else→算术select + 多phi追踪 + 单BB展开 lzkk 2026-05-28 21:02:20 +0800
  • 4070fb206b chore: sync all local changes and untracked files hxz 黄熙哲 2026-05-28 20:15:14 +0800
  • 2c43ea28f9 fix(mir): 浮点比较被错误降级为整数比较——95_float 修复 lzkk 2026-05-28 19:40:09 +0800
  • ec8c874829 fix(ir): LoopUnroll 限制 i32 函数 + 支持 float cast 克隆 lzkk 2026-05-28 19:32:57 +0800
  • 608aa98f4e perf(ir): 简单递减循环全展开——countdown loop unrolling lzkk 2026-05-28 19:04:46 +0800
  • b3187edbbf perf(mir): MIR 清扫——%2指令精简 + 算术select死代码消除 lzkk 2026-05-28 18:45:44 +0800
  • f9bea1bf85 chore: 更新脚本和 sylib——clang 参考支持 + 提交脚本 lzkk 2026-05-28 17:13:20 +0800
  • 1b9c8cc40d fix(mir): 修复全局变量 .bss/.data 段反复切换——统一分组输出 lzkk 2026-05-28 17:11:15 +0800
  • d9ebea6668 perf(ir): if-else→mul select 转换 + 死BB清理,使多BB函数可内联 lzkk 2026-05-28 16:42:41 +0800
  • 40eb6784d3 perf(ir): 添加 And/Or 操作码 + if-else→select 转换框架 lzkk 2026-05-28 16:33:26 +0800
  • 4403dc08b8 perf(mir): 常量除法魔法数优化——smull+asr 替代 sdiv lzkk 2026-05-28 16:12:27 +0800
  • ea790dd05d fix(scripts): score.sh 使用 canon_diff 忽略尾部空白——匹配 2026test.sh 行为 lzkk 2026-05-28 15:35:43 +0800
  • 8d4a34aa10 fix(scripts): 修复 score.sh 输出对比逻辑——适配 SysY 非零返回值 + .out 格式 lzkk 2026-05-28 15:27:45 +0800
  • 5cd5c54764 feat(scripts): 添加本地评分脚本 score.sh——按比赛计分公式计算分数 lzkk 2026-05-28 15:16:47 +0800
  • 635f01bd48 perf(mir): 添加 Lsr64RR 支持——64位逻辑右移,为常量除法优化铺路 lzkk 2026-05-28 14:36:41 +0800
  • 422f1848fc perf(mir): Lowering 直接生成 AddShiftRR——x+(x*2^n) → add x,x,lsl#n lzkk 2026-05-28 14:26:21 +0800
  • 8d0c5ebcd0 perf(mir): 添加 AddShiftRR/SubShiftRR 支持——lsl+add 合并为 add lsl lzkk 2026-05-28 14:25:12 +0800
  • e1944acc6b perf(mir): Peephole 增强——StoreGlobal→LoadGlobal 跨指令转发 + 冗余 adrp 消除 lzkk 2026-05-28 14:19:48 +0800
  • 00c489f0be perf(mir): 消除 Mul 幂次方优化产生的死 MovImm——先检测后发射 rhs lzkk 2026-05-28 13:41:16 +0800
  • 4179f40264 perf(mir): leaf 函数省略帧指针——无调用+无栈帧时跳过 stp/ldp x29,x30 lzkk 2026-05-28 13:16:24 +0800
  • 10a59110eb perf: 函数内联 + csneg 取模优化,crypto 1.76x→1.69x lzkk 2026-05-28 13:14:43 +0800
  • 2f1d7dc856 perf(ir): 保守函数内联——纯算术单BB leaf 函数自底向上迭代内联 lzkk 2026-05-28 13:02:39 +0800
  • feab5508a8 fix(irgen): starttime/stoptime 函数名恢复为 _sysy_starttime/_sysy_stoptime lzkk 2026-05-28 11:42:42 +0800
  • 56b37ac060 chore: 删除死代码——LinearScanAlloc/GreedyAlloc/InstLiveness(共2072行) lzkk 2026-05-28 10:05:36 +0800
  • 862c1bfe7b 第一次优化 lzkk 2026-05-28 08:54:53 +0800
  • 1149d53d42 chore: 移除 LICM.cpp 空桩——实现已在 LoopInfo.cpp (ir_analysis) lzkk 2026-05-28 08:48:45 +0800
  • 0eb1cf4a7f chore: 移除空桩文件(PassManager.cpp/ConstEval.cpp)从构建 lzkk 2026-05-28 08:48:13 +0800
  • 5d43539290 chore: 代码彻底清理——删除死代码、旧备份、生成文件 lzkk 2026-05-28 08:46:44 +0800
  • 39e4dada13 perf(mir): 添加 Madd(乘加)指令——sum+a*b → madd sum,a,b,sum lzkk 2026-05-28 02:55:51 +0800
  • 035f83b209 fix(mir): 模2^n AND优化——修复 x<0 且 x%2^n==0 时的零值错误 lzkk 2026-05-28 02:38:07 +0800
  • 2cfc9e2fc8 perf(mir): MIR预分配 MovImm 转发——消除常数二次传递 lzkk 2026-05-28 02:25:17 +0800
  • bf5956e3cc perf(mir): Pettis-Hansen 基本块重排序——链合并+频率排序 lzkk 2026-05-28 02:22:38 +0800
  • e23d047e5f feat(scripts): 添加 LLVM/clang 差分测试脚本 diff_test_llvm.sh lzkk 2026-05-28 02:08:20 +0800
  • c277aa2226 perf(mir): 帧槽按大小重排序——小槽优先获得 ldur 范围内偏移 lzkk 2026-05-28 01:59:27 +0800
  • f65fe9fc20 perf(mir): 扩展缩放寻址到 EmitStatement Load 路径(ptr/float/int) lzkk 2026-05-28 01:57:16 +0800
  • be3a5640ee perf(mir): AArch64 缩放寻址——GEP+Load/Store 直接生成 ldr/str [base, idx, uxtw #2] lzkk 2026-05-28 01:55:35 +0800
  • 3ece3d09f4 perf(mir): CMP常量lhs交换——mov+cmp优化为cmp#imm+条件翻转 lzkk 2026-05-28 01:47:56 +0800
  • e826f9ee57 perf(mir): 负除数模2^n同样使用AND优化 lzkk 2026-05-28 01:45:39 +0800
  • 421df18c81 perf(mir): 模2^n运算优化——AND+符号修正替代 Msub lzkk 2026-05-28 01:44:06 +0800
  • 2a67ef0f06 perf(mir): FixFallThrough——CondBr 条件反转消除冗余 Br lzkk 2026-05-28 01:31:06 +0800
  • 667c342c51 perf(mir): Lowering 立即数折叠——AddRR/SubRR/CmpRR 常量 rhs 直接用 Imm lzkk 2026-05-28 01:29:26 +0800
  • d51cbc49f1 perf(mir): RegAlloc 偏置着色调和(copy_edges coalescing) lzkk 2026-05-28 01:26:05 +0800
  • 9095cbe0db perf(ir): 启用 LICM + 迭代优化循环(ConstFold/ConstProp/CSE/DCE 收敛) lzkk 2026-05-28 01:16:21 +0800
  • 1993380d4a chore: 移除 git 冲突残留文件 lzkk 2026-05-28 01:12:52 +0800
  • ee3b42ac40 feat(opt): 切换至队友代码基线——100%功能正确 lzkk 2026-05-28 01:12:43 +0800
  • 409d2e7e3a feat: 实现尾递归优化(TCO) zhm zhm 2026-05-27 18:45:14 +0800
  • bfe105c2cd fix(mir): 别名无条件冲突 + per-round reserve防指针失效 lzkk 2026-05-27 17:39:20 +0800
  • d6f42a2a2e fix(mir): 回退到稳定版本——PhysReg映射+spill reload+别名无条件冲突 lzkk 2026-05-27 17:09:07 +0800
  • 0f1b545568 fix(mir): 分配顺序改为FirstUsePos + 别名无条件冲突 + per-round reserve lzkk 2026-05-27 16:34:15 +0800
  • 83228a8123 fix(mir): GPR32/GPR64别名检查移除segments.empty()条件 lzkk 2026-05-27 16:24:57 +0800
  • 5fb106bde8 fix(mir): LLVM两遍分配 + 间隙分裂 + Assign安全网 lzkk 2026-05-27 15:21:02 +0800
  • 508f9d8ddc fix(mir): TrySplit引用失效修复 + LLVM Defer机制 lzkk 2026-05-27 14:58:25 +0800
  • 80dc583143 fix(mir): PhysReg映射修正 + spill reload分配独立vreg——避免寄存器冲突 lzkk 2026-05-27 13:48:23 +0800
  • ddaf8831a2 fix(mir): CMakeLists.txt 改用 GreedyAlloc.cpp 替代 LinearScanAlloc.cpp lzkk 2026-05-27 10:45:09 +0800
  • da1e456133 feat(mir): 实现 LLVM-style 贪婪寄存器分配器 —— 统一架构 lzkk 2026-05-27 10:25:07 +0800
  • 9ae0a16697 feat: Lowering层ModRR2/DivRR2优化, Csneg指令, .bss段优化, Peephole W/X修复 zhm 2026-05-27 08:22:15 +0800
  • 0a29e6ac42 fix(mir): AsmPrinter 函数调用后失效帧基址缓存——修复 92_register_alloc lzkk 2026-05-26 23:38:57 +0800
  • 363b809736 fix(mir): 大栈帧 asm 输出 x13 缓存失效 + 叶函数栈参数偏移修复 + IR 数组初始化阈值降低 lzkk 2026-05-26 22:43:57 +0800
  • 120d7197d8 fix(mir): 线性扫描活变量分析 def 位置记录 + callee-saved 寄存器限定 + CLI 标志修复 lzkk 2026-05-26 22:43:50 +0800
  • e1777c9eab fix(ir): CSE 安全门禁——非 SSA 函数跳过 Load/GEP CSE lzkk 2026-05-26 21:29:29 +0800
  • 28c336728d fix(mir): 线性扫描区间分裂修复 + 多定义点 vreg 跳过逻辑修复 lzkk 2026-05-26 21:23:09 +0800
  • fbea91986d feat(mir): 指令级活变量分析 + CLI/构建集成 lzkk 2026-05-26 19:59:54 +0800
  • 8f3012cd9f fix(ir): CSE 扩展支持 LoadInst 和 GEPInst——修复 86_long_code2 编译超时 lzkk 2026-05-26 19:49:46 +0800
  • 28ad162de4 feat(mir): 线性扫描寄存器分配初始实现(WIP,--regalloc=linear 可用) lzkk 2026-05-26 19:10:56 +0800
  • 1d4c59d7ec 基本快重排 zhm 2026-05-26 18:55:41 +0800
  • a9ebfdc0e0 feat(mir): 添加指令级活变量分析——精确 [start,end] 区间 lzkk 2026-05-26 18:46:25 +0800
  • 6c5441ff43 feat(mir): 添加 MIR 验证器和寄存器分配验证器 lzkk 2026-05-26 18:46:20 +0800
  • fb77d7e03c chore(ir): 清理 IRVerifier 死代码和注释 lzkk 2026-05-26 16:57:06 +0800
  • 0b589c77da feat(ir): 添加 IR 验证器,校验 SSA 支配性/终结指令/PHI 一致性 lzkk 2026-05-26 16:43:05 +0800
  • bcb7093a52 添加了一些循环优化(未启用)与分块优化与内联优化(效果一般) derder 安峻邑 2026-05-26 16:18:36 +0800
  • ef6eedee83 fix(infra): count_asm.sh 使用相对路径替代硬编码路径 lzkk 2026-05-26 14:44:40 +0800
  • c12b6830b8 fix(regalloc): MAX_SPILL_ROUNDS=1 + 保守修复阈值 20→200,修复 spill 错误代码 lzkk 2026-05-26 14:43:10 +0800
  • a669efb7a5 feat: 实现多基本块函数内联优化 zhm 2026-05-26 14:24:19 +0800
  • ca6c9fa540 docs: 记录 MAX_SPILL_ROUNDS 修复——mm1 指令数削减 99.4% lzkk 2026-05-26 13:49:55 +0800
  • d238777f17 fix(regalloc): 根除 spill 代码指数级膨胀——MAX_SPILL_ROUNDS 统一为 3 lzkk 2026-05-26 13:48:22 +0800
  • 535ab08d32 feat(backend): AsmPrinter 帧基址缓存,避免连续栈访问重复计算地址 lzkk 2026-05-26 13:10:39 +0800
  • 3ab88232f7 fix(hooks): Stop hook 改为智能检测——仅在 src/ 有未提交改动时提醒 lzkk 2026-05-26 12:34:05 +0800
  • 6f14ee1a7a fix(infra): 编译器资源限制包装器 + 测试脚本超时防护,防止 OOM 闪退 lzkk 2026-05-26 11:36:10 +0800
  • 5300e2c1ec fix(hooks): 修复会话崩溃 + 优化开发规范配置 lzkk 2026-05-26 11:19:47 +0800
  • da5d618297 fix(hooks): memory-guard 输出合法 JSON,修复会话崩溃 lzkk 2026-05-26 00:29:01 +0800
  • 2d3a5ff998 perf(backend): Peephole 新增全局变量 store-load 转发和 load CSE lzkk 2026-05-25 22:01:34 +0800
  • b2b7210f11 perf(backend): 除法/取模统一使用 sdiv,删除2的幂次移位序列 lzkk 2026-05-25 21:56:59 +0800
  • befdca6451 perf(backend): 叶函数跳过帧设置,节省 x29/x30 保存/恢复 lzkk 2026-05-25 21:18:45 +0800
  • 854168fb4e perf(backend): 消除连续全局变量访问的冗余 ADRP lzkk 2026-05-25 21:08:06 +0800
  • acdac5391d fix(backend): EmitLargeImmediate 跳过前导零,避免冗余 movz #0 lzkk 2026-05-25 21:00:32 +0800
  • bb58aac749 fix(mem2reg): 添加大参数函数安全门禁,修复 87_many_params lzkk 2026-05-25 20:28:16 +0800
  • 67ee77e8d9 Revert "fix(backend): skip graph coloring for functions with >250 vregs" 黄熙哲 2026-05-25 20:26:28 +0800
  • 4be2f32cbb fix(backend): skip graph coloring for functions with >250 vregs 黄熙哲 2026-05-25 20:15:11 +0800
  • fccd935a24 feat(backend): 新增 AddImm/SubImm 操作码,消除冗余 MovImm lzkk 2026-05-25 19:51:00 +0800
  • bd7dcedb2a feat(backend): ICmp 降级常量折叠到 CmpImm,消除冗余 MovImm lzkk 2026-05-25 19:15:41 +0800
  • 2632202833 fix(backend): unify coalesce skip condition at both sites 黄熙哲 2026-05-25 18:44:36 +0800
  • 2031d8f8f9 fix(backend): use immediate form for small stack adjustments 黄熙哲 2026-05-25 17:41:43 +0800
  • a253ce37d9 refactor(backend): simplify scratch register selection with lambda helper master 黄熙哲 2026-05-25 10:48:03 +0800
  • 7ecaa6b6fb update 安峻邑 2026-05-25 08:38:27 +0800
  • 6b9cf3a448 fix(backend): add x16/x17 to GP allocatable set to fix segfaults 黄熙哲 2026-05-24 22:25:25 +0800
  • 5902060dae fix(backend): lower coalesce skip threshold to fix segfaults 黄熙哲 2026-05-24 21:38:39 +0800
  • 34cb79449f fix(backend): skip coalescing for large functions to prevent segfault\n\nFor functions with >150 vregs, discard move_preferences after\ncollection to skip active coalescing. Large functions like\nconv2d, 65_color, 68_brainfk have complex interference graphs\nthat cause coalescing to generate incorrect spill code.\n\nFixes segfaults in: conv2d-1/2/3, 65_color, 68_brainfk, 37_dct.\n\nKnown limitations: 30_many_dimensions and 39_fp_params still\nsegfault (pre-existing original compiler bugs in lowering/RA).\nMinor instruction count changes: h-8 +2.5%, matmul +7% etc. 黄熙哲 2026-05-24 16:37:18 +0800
  • a84ffd210b chore: simplify baseline to single-column historical minimum\n\nRemove source baseline concept. Each test now tracks only its\nbest-ever instruction count. count_asm.sh updated to directly\nupdate baseline when a new lower value is found. 黄熙哲 2026-05-24 13:15:11 +0800