CakeML / CakeML/cakeml

Functional SSA

Open
#764 0 comments 0 reactions 0 assignees View on GitHub
code size enhancement high effort high reward performance
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.