Files
hakorune/docs/private/papers/paper-e-loop-signal-ir/synthesis.md

21 lines
1.7 KiB
Markdown
Raw Normal View History

# LoopSignal IR - 外部レビュー統合サマリ
本ドキュメントは `claude_output.md``gemini_output.md` の示唆を統合した要点メモである。本文main-paper-jp.mdの第8節に反映済み。
- Signal 型: `LoopSignal<T> = Next(T) | Break(T) | Yield(T) | Return(T)`(命名は Next を採用)。タグは `i8`、ペイロードはSSA値。
- Return の位置づけ: Signal に含める「統一モデル」を採用。IR直交性/最適化/インライン容易性を優先。
- LoopForm 命令: `loop.begin / loop.iter / loop.branch / loop.end` の4命令。`loop.begin` をPHI配置の標準合流点とする。
- LLVM/ABI 表現: まずは `{ i8 tag, payload }` の素直なstruct。ホットパスNextは既存最適化でゼロコスト相当に収束する想定。必要に応じて将来特殊化。
- 逆Lowering: LoopForm → 従来MIR の逆変換を常備し、フラグでON/OFF段階導入を安全化
- 最適化パス: 1) Loop1完全インライン化 2) Yieldなし状態省略 3) 分岐合流点正規化dispatch集中
- 適用の段階化: while/for/scope から開始し、関数/if/generator/async に拡大。例外・effects は将来拡張。
- 文書方針: LoopForm は「中間正規形」であり、最終的に Core13 に再Lowering可能であることを明記。
実装ロードマップ(最小到達順)
1) LoopSignal型/loop.*ノード追加(オプトイン)
2) while/for/scope のLowering移行
3) 逆Lowering完成デフォルトON運用
4) 最適化3本Loop1 inline / Yieldなし省略 / dispatch統合
5) 評価(表現/コンパイラ時間/性能)
6) 適用拡大(関数/if、generator/async