Functional SSA
- Dominant language
- Standard ML
- Stars
- 1.2k
- Forks
- 104
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 16
Description
MLIR has a very interesting [variant of SSA](https://mlir.llvm.org/docs/Rationale/Rationale/#block-arguments-vs-phi-nodes) which seems naturally suited to functional big-step semantics. There are several high reward optimizations that are much easier to do on a DAG, including complex instruction selection #763, CSE #341, and scheduling #118. It was suggested that [LVC's IR](https://github.com/sigurdschneider/lvc/blob/master/theories/IL/IL.v) might be similar.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reading the MLIR block-arguments-versus-phi-nodes rationale and the linked LVC IL.v definition, then compare their approaches with the issue's proposed functional big-step semantics. A useful outcome would be a concrete design for functional SSA in CakeML and an assessment of how it enables instruction selection, CSE, or scheduling.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100