2017-08-28 17:44:50 +03:00
|
|
|
# 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
|
|
|
|
|
|
|
|
|
2018-02-17 13:57:16 +03:00
|
|
|
# CodeGen
|
|
|
|
|
|
|
|
- simplify/refactor LLVM codegen
|
2018-03-06 13:33:54 +03:00
|
|
|
- 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
|
2018-05-19 13:03:05 +03:00
|
|
|
|
|
|
|
# SIMD / SPMD
|
|
|
|
- [The story of ispc](http://pharr.org/matt/blog/2018/04/30/ispc-all.html)
|
|
|
|
- [Intel SPMD Program Compiler](https://ispc.github.io)
|
2018-05-22 10:25:16 +03:00
|
|
|
- [Tutorial: Creating an SPMD Vectorizer for OpenCL with LLVM](https://www.youtube.com/watch?v=ePu6c4FLc9I)
|
2018-05-23 12:08:54 +03:00
|
|
|
|
|
|
|
# GRIN language
|
|
|
|
|
|
|
|
### shared blocks
|
|
|
|
|
|
|
|
- add support for named blocks and a corresponding call block command i.e. `tailcall` / `continue` / `join` / `follow` __BLOCK_NAME__
|
2019-02-17 18:06:53 +03:00
|
|
|
|
|
|
|
### 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
|