Sebastien Bourdeauducq
4547eee82a
llvm: switch RISC-V ABI when FPU is present
...
Patch is a bit of a hack and ignores 64-bit CPUs.
Also only build the LLVM targets we need.
2021-11-11 23:42:32 +08:00
Sebastien Bourdeauducq
96607432c1
nac3core: use Python 3.9 list/tuple annotations in test
...
Closes #85
2021-11-11 20:05:08 +08:00
Sebastien Bourdeauducq
dba1a8b3d4
nac3standalone: link libm in demo runner
2021-11-11 19:44:18 +08:00
Sebastien Bourdeauducq
612b6768c0
nac3artiq: bail early on non-NAC3 classes
2021-11-11 16:35:40 +08:00
Sebastien Bourdeauducq
c004da85f7
nac3artiq: drop host-only base classes. Closes #80
2021-11-11 16:08:29 +08:00
Sebastien Bourdeauducq
7fc04936cb
runkernel: add print_int debug function
2021-11-10 17:34:13 +08:00
Sebastien Bourdeauducq
b57b869c49
min_artiq: remove unused imports
2021-11-10 14:01:39 +08:00
Sebastien Bourdeauducq
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
pca006132
ffa89e9308
fix clippy warnings
2021-11-06 23:00:18 +08:00
pca006132
34cf303e6c
nac3artiq: modified demo to use KernelInvariants
2021-11-06 22:50:28 +08:00
pca006132
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
Sebastien Bourdeauducq
7385b91113
nac3artiq: support kernel entry short form from original ARTIQ
2021-11-06 18:41:59 +08:00
Sebastien Bourdeauducq
016cbf2b90
nac3artiq: return bytes in compile_method_to_mem
2021-11-06 14:29:23 +08:00
Sebastien Bourdeauducq
37eae090e5
nac3artiq: fix linker inputs
2021-11-06 14:23:54 +08:00
Sebastien Bourdeauducq
204baabfd2
nac3artiq: add compile_method_to_mem
2021-11-06 14:14:53 +08:00
Sebastien Bourdeauducq
597857ccd0
typo
2021-11-06 14:14:40 +08:00
ychenfo
efc9edbc14
nac3parser: fix decorator and above comments
2021-11-06 14:13:17 +08:00
Sebastien Bourdeauducq
7d66195eae
nac3artiq: embed linker script, put intermediate objects in temp dir
2021-11-06 13:04:00 +08:00
pca006132
1fea51d9b3
Merge pull request 'nac3parser: add comment support' ( #68 ) from with_nac3comment into master
...
Reviewed-on: M-Labs/nac3#68
2021-11-05 20:46:42 +08:00
pca006132
99b29d8ded
Merge branch 'master' into with_nac3comment
2021-11-05 20:46:29 +08:00
pca006132
3db95b120b
nac3core: implements bool conversion function
2021-11-05 20:34:34 +08:00
pca006132
8dbb4ad58a
nac3core/toplevel: make test less fragile
...
test results should not depend on internal states if possible
2021-11-05 20:28:21 +08:00
ychenfo
ee67b22ebc
Merge branch 'master' into with_nac3comment
2021-11-05 20:01:36 +08:00
Sebastien Bourdeauducq
afb94dd299
nac3artiq: move demo to dedicated folder
2021-11-05 18:28:31 +08:00
Sebastien Bourdeauducq
d6f0607ff0
nac3artiq: rename class decorator to nac3
2021-11-05 18:08:36 +08:00
Sebastien Bourdeauducq
610448fa73
nac3artiq: include parallel in demo
2021-11-05 18:07:18 +08:00
Sebastien Bourdeauducq
e8228710e7
min_artiq: remove unnecessary definitions
2021-11-05 17:50:26 +08:00
ychenfo
032e1d84cf
nac3parser: add and fix tests due to comment support
2021-11-04 15:03:34 +08:00
ychenfo
b239806558
nac3core: adapt to ast change due to comment support
2021-11-04 15:02:51 +08:00
ychenfo
694c7e945c
nac3ast: generated ast with comment fields
2021-11-04 15:01:50 +08:00
ychenfo
3b1cc02d06
nac3parser, ast: add comment support core changes
2021-11-04 15:00:27 +08:00
Sebastien Bourdeauducq
32d1fe811b
flake: update nixpkgs
2021-11-03 21:54:27 +08:00
Sebastien Bourdeauducq
36e4028f5b
fix and run parser tests
2021-11-03 17:39:48 +08:00
Sebastien Bourdeauducq
b6ff46c39e
README: update
2021-11-03 17:22:14 +08:00
Sebastien Bourdeauducq
bf7e2c295a
integrate nac3parser
2021-11-03 17:11:00 +08:00
pca006132
48ce6bb6c5
rustpython-parser: string interner, optimizations, thread local cache
...
corresponds to M-Labs RustPython fork at efdf7829ba1a5f87d30df8eaff12a330544f3cbd
branch parser-mod
2021-11-03 16:36:28 +08:00
Sebastien Bourdeauducq
80c7bc1cbd
add RustPython parser
...
based on RustPython 67b338863ee6f16b0df0a7d1aa9debba55284651
2021-11-03 16:34:10 +08:00
Sebastien Bourdeauducq
e89bc93b5f
ignore expressions in class definition body ( #26 )
2021-11-02 23:30:12 +08:00
Sebastien Bourdeauducq
47f563908a
basic string support ( #30 )
2021-11-02 23:22:49 +08:00
Sebastien Bourdeauducq
0e914ab7e9
composer: add range keyword
2021-11-02 18:56:14 +08:00
Sebastien Bourdeauducq
613020a717
test: add missing id_to_name entry
2021-11-02 18:34:48 +08:00
Sebastien Bourdeauducq
ee2c0d8bab
flake: add cargo-insta to dev shell
2021-11-02 18:13:59 +08:00
Sebastien Bourdeauducq
0d1e9262af
flake: update cargoSha256
2021-11-02 15:17:10 +08:00
Sebastien Bourdeauducq
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
Sebastien Bourdeauducq
624dfe8cd1
upgrade to LLVM 12
2021-11-02 14:00:20 +08:00
pca006132
e47597bb8a
Merge branch 'context-manager'
2021-11-02 11:17:00 +08:00
pca006132
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
Sebastien Bourdeauducq
da2886565b
runkernel: sort out cargo rigmarole with rustc link arg
2021-11-01 00:28:27 +08:00
Sebastien Bourdeauducq
b37cf6de08
nac3artiq: share isa->time_fns map
2021-11-01 00:03:15 +08:00
pca006132
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