mirror of
https://github.com/grin-compiler/grin.git
synced 2024-11-09 04:56:39 +03:00
1.5 KiB
1.5 KiB
Todo ideas
- distinguish Val constuctors (LambdaPattern ConstansPattern SimpleValue Value)
- rename Val types to a more descriptive names; see above
- better name representation instead of strings
- generate unique names when branching (unique name A + branching direction = unique name B)
- efficient substitution
- type safer and easy to use AST
CodeGen
- simplify/refactor LLVM codegen
- vectorisation = tagged union conversion (on branch: var-tag-node-is-tagged-union) ; better syntax for tagged union (parser + pretty printer)
- read back LLVM reduced result to Haskell data (including the heap)
GRIN framework
- scoped type environment
- scoped names ; it would make inlining easy (the idea is similar to bound)
- HPT
- optimisiations
- type env
HPT
- LLVM backend for HPT IR
- inline support
SIMD / SPMD
- The story of ispc
- Intel SPMD Program Compiler
- Tutorial: Creating an SPMD Vectorizer for OpenCL with LLVM
GRIN language
shared blocks
- add support for named blocks and a corresponding call block command i.e.
tailcall
/continue
/join
/follow
BLOCK_NAME
STG primops
- add primops to support STG style unknown funtion call. Whith these primops incremental compilation could be supported
- static analysis of STG primops to transform STG closures and info tables to ordinary GRIN C/F/P nodes