Files
hakorune/docs/private/papers/paper-e-loop-signal-ir/mir-evolution-plan.md

119 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MIR進化計画: MIR14 → MIR13 → MIR17
## 概要
LoopForm導入に向けた段階的なMIR進化戦略。PHI命令の責務をLLVM層に移管し、より高レベルな制御構造表現を導入する。
## 命令数の変遷
```
MIR14現在: 14命令PHIあり
↓ Phase 15終盤
MIR13: 13命令PHI除去
↓ Phase 16
MIR17: 17命令LoopForm追加
```
## MIR13Phase 15終盤
### 削除される命令
- **Phi**: SSA PHIードの生成をLLVM層に移管
### 残る13命令
1. Const
2. Load / Store
3. UnaryOp / BinOp / Compare / TypeOp
4. Branch / Jump / Return
5. NewBox / BoxCall
6. ExternCall / Call
7. Throw / Catch既存維持
### 実装方針
- Bridge/BuilderはPHIを生成しない
- LLVM層llvmlite/ResolverがCFGパターンからPHIを合成
- VM/Interpreterは直線的実行を継続PHI無視
## MIR17Phase 16
### 追加される4命令LoopForm
1. **LoopHeader** `{ id, params[] }`
- ループヘッダBBの宣言
- params[]はループ搬送値のプレースホルダ
2. **LoopEnter** `{ header: bb, args[] }` (terminator)
- Preheaderからヘッダへの遷移
- args[]は搬送値の初期値
3. **LoopLatch** `{ header: bb, args[] }` (terminator)
- 本体末尾からヘッダへのバックエッジ
- args[]は更新後の搬送値
4. **LoopExit** `{ exit: bb }` (terminator)
- ループからの脱出break相当
### なぜ+4命令か
- ループの構造を明示的に表現
- Preheader/Header/Body/Exitの役割を宣言的に
- LLVM層でのPHI生成が機械的に可能
## 合流点の扱い(将来検討)
### MergeForm追加候補
```rust
// If/Else等の合流用将来のMIR18以降
MergeHeader { id, params[] }
MergeEnter { header: bb, args[] }
```
## 移行のメリット
1. **責務分離の明確化**
- MIR: 制御構造の宣言
- LLVM: SSA表現の生成
2. **段階的移行**
- Phase 15: PHI生成を止める互換性維持
- Phase 16: LoopForm導入新機能
3. **将来拡張への道筋**
- Generator/Async/Effectへの対応準備
- LifeBox ModelLBMへの布石
## AI協働の記録2025-09-16
### Codex提案
- PHI合成をllvmlite側で実施
- LoopForm/MergeFormの構造化表現
- TryRegionによる例外構造化将来
### 人間の洞察
- 「MIR13に減らしてから+4でMIR17」
- 段階的移行の重要性
- 一気に変えないことの価値
### 合意形成
- Phase 15でまずPHI非生成化
- 安定後にLoopForm導入
- 責務分離を徹底
## 実装チェックリスト
### Phase 15終盤MIR13化
- [ ] Bridge: PHI生成を無効化するフラグ
- [ ] llvmlite: Resolver実装PHI合成
- [ ] Smoke: ループ搬送値のテスト
- [ ] VM: PHI無視の動作確認
### Phase 16MIR17化
- [ ] MIR: LoopForm命令の追加
- [ ] Bridge: Loop構造の認識とLoopForm生成
- [ ] llvmlite: LoopFormからPHIへの変換
- [ ] ドキュメント: MIR17仕様書
## 関連文献
- 論文AMIR13/14: 基本設計
- 論文DSSA構築: PHI生成の理論
- 論文E本稿: LoopForm理論
- CURRENT_TASK.md: 実装計画