mirror of
https://github.com/grin-compiler/grin.git
synced 2024-08-17 09:50:43 +03:00
8.5 KiB
8.5 KiB
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
.
Also check the performance benchmark.
![](https://raw.githubusercontent.com/andorp/grin/master/images/grin-syntax.png)
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: CaseCopyPropagation.hs |
![]() |
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 |