mirror of
https://github.com/grin-compiler/grin.git
synced 2024-10-26 16:51:12 +03:00
GRIN is a compiler back-end for lazy and strict functional languages with whole program optimization support.
compilerdata-flow-analysisfunctional-programminghaskellllvmoptimisationstarred-grin-compiler-repostarred-repo
bugs | ||
grin | ||
images | ||
papers | ||
playground/sum | ||
.gitignore | ||
.travis.yml | ||
AbstractInterpretation.md | ||
bench.sh | ||
debug_tooling | ||
Design.md | ||
Documentation.md | ||
GRIN-LLVM-CodeGen.md | ||
GRIN-Type-System.md | ||
MemoryManagement.md | ||
MVP.md | ||
node_visualization | ||
Readings.md | ||
README.md | ||
RUNTIME.md | ||
stack.yaml | ||
todo.just-to-practice | ||
TODO.md |
GRIN
The name GRIN is short for Graph Reduction Intermediate Notation, and it is an intermediate language for graph reduction. For an overview read The GRIN Project article. To grasp the details take your time and read Urban Boquist's PhD thesis on Code Optimisation Techniques for Lazy Functional Languages .
Simplifying Transformations
Transformation | Schema |
---|---|
vectorisation source code: Vectorisation2.hs |
|
case simplification source code: CaseSimplification.hs |
|
split fetch operation source code: SplitFetch.hs |
|
right hoist fetch operation source code: RightHoistFetch2.hs |
|
register introduction source code: RegisterIntroduction.hs |
Optimising Transformations
Transformation | Schema |
---|---|
evaluated case elimination source code: EvaluatedCaseElimination.hs |
|
trivial case elimination source code: TrivialCaseElimination.hs |
|
sparse case optimisation source code: SparseCaseOptimisation.hs |
|
update elimination source code: UpdateElimination.hs |
|
copy propagation source code: CopyPropagation.hs |
|
late inlining source code: Inlining.hs |
|
generalised unboxing source code: TODO |
|
arity raising source code: TODO |
|
case copy propagation source code: TODO |
|
case hoisting source code: TODO |
|
whnf update elimination source code: TODO |
|
common sub-expression elimination source code: CSE.hs |
|
constant propagation source code: ConstantPropagation.hs |
|
dead procedure elimination source code: DeadProcedureElimination.hs |
|
dead variable elimination source code: DeadVariableElimination.hs |
|
dead parameter elimination source code: TODO |