Commit Graph

75 Commits

Author SHA1 Message Date
fd4bf12808 fix grammar of some type error messages 2022-01-14 16:56:23 +08:00
9d342d9f0f nac3artiq: error msg improvement for synthesized __modinit__ 2022-01-14 16:28:37 +08:00
4a1a4dc076 nac3core/artiq/standalone: symbol resolver return error msg for type error of host variables 2022-01-14 16:28:34 +08:00
4a65d82db5 introduce IRRT, implement power
based on code by Yijia
M-Labs/nac3#160
2022-01-09 00:57:50 +08:00
88f0da7bdd add file name to AST node location 2021-12-28 01:28:55 +08:00
521f136f2e redo "nac3artiq: fixed compilation error"
This reverts commit 3b5328d3cd.
2021-12-27 22:56:30 +08:00
fa04768a77 redo "nac3core: fix #84"
This reverts commit 86005da8e1.
2021-12-27 22:56:26 +08:00
6162d21a5b LLVM PGO support 2021-12-26 21:11:14 +08:00
86005da8e1 Revert "nac3core: fix #84"
This reverts commit 0902d8adf4.
2021-12-26 08:35:27 +08:00
3b5328d3cd Revert "nac3artiq: fixed compilation error"
This reverts commit 34cabe0e55.
2021-12-26 08:31:37 +08:00
9e3f75255e update inkwell. Closes #67 2021-12-25 22:17:06 +08:00
34cabe0e55 nac3artiq: fixed compilation error 2021-12-23 15:47:54 +08:00
0902d8adf4 nac3core: fix #84 2021-12-23 15:26:48 +08:00
66320679be improve error messages
#112, #110, #108, #87

Reviewed-on: M-Labs/nac3#145
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-12-22 08:52:19 +08:00
91625dd327 update kernel-only attribute annotation
Reviewed-on: M-Labs/nac3#127
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-12-19 11:04:53 +08:00
6d00d4dabb nac3artiq: cache python data if possible 2021-12-05 20:30:03 +08:00
65bc1e5fa4 nac3artiq: handle name_to_pyid in compilation
python variables can change between kernel invocations
2021-12-05 13:10:54 +08:00
2938eacd16 nac3artiq: supports running multiple kernels 2021-12-05 13:10:54 +08:00
c98f367f90 nac3artiq: enables inlining 2021-12-04 17:52:03 +08:00
142f82f987 remove debug prints 2021-12-01 22:48:06 +08:00
dfd3548ed2 TypeVar and virtual support in Symbol Resolver (#99)
Add `TypeVar` and `virtual` support for Symbol Resolver in nac3artiq and nac3standalone

Reviewed-on: M-Labs/nac3#99
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-12-01 22:44:53 +08:00
681d85d3be remove debug print 2021-11-28 12:57:28 +08:00
b35075245b nac3artiq: remove debug print 2021-11-27 21:29:57 +08:00
4b17511b4a Merge branch 'master' into KernelInvariant 2021-11-27 21:29:27 +08:00
4587088835 Constant Default Parameter Support (#98)
Add support for constant default parameter

Reviewed-on: M-Labs/nac3#98
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-11-23 07:32:09 +08:00
f5ec103c82 nac3artiq: kernel invariant support 2021-11-20 21:15:15 +08:00
ba08deada6 nac3core: refactor codegen 2021-11-20 19:50:25 +08:00
1e47b364c5 nac3artiq: support now-pinning on RISC-V with wide data bus (#97) 2021-11-16 17:37:40 +08:00
9ae08d6e3d nac3artiq: add stubs for now-pinning on rv32g (#97) 2021-11-13 12:10:55 +08:00
d6b92adf70 nac3artiq: add stack guard 2021-11-12 20:03:52 +08:00
978eaf16a4 nac3artiq: support RISC-V with and without FPU. Closes #83 2021-11-11 23:43:50 +08:00
612b6768c0 nac3artiq: bail early on non-NAC3 classes 2021-11-11 16:35:40 +08:00
c004da85f7 nac3artiq: drop host-only base classes. Closes #80 2021-11-11 16:08:29 +08:00
50f1aca1aa nac3artiq: move module registration list to CPython side
In ARTIQ, we cannot create a global NAC3 object because we do not
know the ISA in advance.
2021-11-07 10:29:14 +08:00
ffa89e9308 fix clippy warnings 2021-11-06 23:00:18 +08:00
b1e83a1fd4 nac3core: type check invariants
This rejects code that tries to assign to KernelInvariant fields and
methods.
2021-11-06 22:48:08 +08:00
016cbf2b90 nac3artiq: return bytes in compile_method_to_mem 2021-11-06 14:29:23 +08:00
37eae090e5 nac3artiq: fix linker inputs 2021-11-06 14:23:54 +08:00
204baabfd2 nac3artiq: add compile_method_to_mem 2021-11-06 14:14:53 +08:00
7d66195eae nac3artiq: embed linker script, put intermediate objects in temp dir 2021-11-06 13:04:00 +08:00
d6f0607ff0 nac3artiq: rename class decorator to nac3 2021-11-05 18:08:36 +08:00
bf7e2c295a integrate nac3parser 2021-11-03 17:11:00 +08:00
bc0f82cad8 Revert "nac3artiq/codegen: fixed smax problem"
We have LLVM 12 now and can use the intrinsic.

This reverts commit 98d9f73afb.
2021-11-02 14:00:28 +08:00
e47597bb8a Merge branch 'context-manager' 2021-11-02 11:17:00 +08:00
98d9f73afb nac3artiq/codegen: fixed smax problem
It turns out the smax intrinsic I use is a new one that is not supported
in LLVM11. Now implemented with signed integer compare and select.
2021-11-02 11:10:21 +08:00
b37cf6de08 nac3artiq: share isa->time_fns map 2021-11-01 00:03:15 +08:00
083eacc268 with parallel/sequential support
Behavior of parallel and sequential:
Each function call (indirectly, can be inside a sequential block) within a parallel
block will update the end variable to the maximum now_mu in the block.
Each function call directly inside a parallel block will reset the timeline after
execution. A parallel block within a sequential block (or not within any block) will
set the timeline to the max now_mu within the block (and the outer max now_mu will also
be updated).

Implementation: We track the start and end separately.
- If there is a start variable, it indicates that we are directly inside a
parallel block and we have to reset the timeline after every function call.
- If there is a end variable, it indicates that we are (indirectly) inside a
parallel block, and we should update the max end value.

Note: requires testing, it is difficult to inspect the output IR
2021-10-31 23:54:37 +08:00
443b95d909 nac3artiq: do not use custom linker script when targeting host 2021-10-31 23:51:50 +08:00
8b73a123cc nac3artiq: support compiling for the host 2021-10-31 23:02:21 +08:00
84c5201243 with parallel/sequential support
Behavior of parallel and sequential:
Each function call (indirectly, can be inside a sequential block) within a parallel
block will update the end variable to the maximum now_mu in the block.
Each function call directly inside a parallel block will reset the timeline after
execution. A parallel block within a sequential block (or not within any block) will
set the timeline to the max now_mu within the block (and the outer max now_mu will also
be updated).

Implementation: We track the start and end separately.
- If there is a start variable, it indicates that we are directly inside a
parallel block and we have to reset the timeline after every function call.
- If there is a end variable, it indicates that we are (indirectly) inside a
parallel block, and we should update the max end value.

Note: requires testing, it is difficult to inspect the output IR
2021-10-31 17:16:21 +08:00