David Mak
ff23968544
core: Add name parameter to gen_{var_alloc,store_target}
...
This allows variables in the IR to be assigned a custom name as opposed
to names with a default prefix.
2023-09-06 11:00:02 +08:00
Sebastien Bourdeauducq
aead36f0fd
update dependencies
2023-03-08 15:19:09 +08:00
Sebastien Bourdeauducq
c1c45373a6
update dependencies
2023-01-12 19:31:03 +08:00
ychenfo
096f4b03c0
nac3core: fix assignment
2022-05-14 02:30:08 +08:00
ychenfo
325ba0a408
nac3core: add debug info
2022-05-11 03:53:53 +08:00
Sebastien Bourdeauducq
85f21060e4
update to LLVM 14
2022-04-18 18:47:20 +08:00
ychenfo
711c3d3303
nac3core: support custom operators
2022-04-18 15:31:56 +08:00
ychenfo
0e0871bc38
nac3core, artiq: to_basic_value_enum takes an argument indicating the expected type
2022-04-10 01:28:22 +08:00
ychenfo
26187bff0b
nac3core: add missing bound check and negative index handling for list subscription assignment
2022-04-09 04:56:31 +08:00
ychenfo
c29cbf6ddd
nac3core: add bound check for list slice
2022-04-05 18:21:46 +08:00
ychenfo
7443c5ea0f
nac3core: add location information to codegen context
2022-04-05 18:21:46 +08:00
ychenfo
a38cc04444
nac3core: assert statement
2022-03-29 06:56:40 +08:00
pca006132
1a82d296e7
nac3core/codegen: prevent users from modifying loop counter
...
Fixes #211
2022-03-26 20:58:37 +08:00
pca006132
2f85bb3837
nac3core: impl call attributes
...
sret for returning large structs, and byval for struct args in extern
function calls.
2022-03-09 22:09:36 +08:00
pca006132
294943e303
nac3core: get exception ID from symbol resolver
...
We need to store the exception class somewhere in order to create them
back in the host. Fixes #200
2022-03-05 00:26:35 +08:00
pca006132
323d77a455
nac3artiq: improve error message for out of range error
2022-02-28 23:09:14 +08:00
pca006132
e710b6c320
nac3core: fix exception final branch handling
...
According to https://github.com/m-labs/artiq/pull/1855
Passed the test cases from 1855.
Fixes #196 .
2022-02-25 17:42:47 +08:00
Sebastien Bourdeauducq
17792b76b7
rename exception symbols
2022-02-23 11:04:35 +08:00
pca006132
f97f93d92c
applied rustfmt and clippy auto fix
2022-02-21 18:27:46 +08:00
pca006132
d9cb506f6a
nac3core: refactored for better error messages
2022-02-21 18:24:19 +08:00
pca006132
e303248261
nac3core: exception type check and codegen
2022-02-12 22:50:32 +08:00
pca006132
7ea5a5f84d
nac3core: codegen refactoring
...
- No longer check if the statement will return. Instead, we check if
the current basic block is terminated, which is simpler and handles
exception/break/continue better.
- Use invoke statement when unwind is needed.
- Moved codegen for a block of statements into a separate function.
2022-02-12 22:13:59 +08:00
pca006132
b267a656a8
nac3core: added exception type and fixed primitive representation
...
- Added `Exception` primitive type and some builtin exception types.
Note that all exception types share the same layout, and should
inherit from the base `Exception` type. There are some hacks in the
toplevel module for handling exception types, we should revisit and
fix them later.
- Added new primitive types to concrete type module, otherwise there
would be some weird type errors.
- Changed the representation of strings to CSlice<u8>, instead of
CString.
2022-02-12 22:13:59 +08:00
ychenfo
d6ab73afb0
nac3core: style
2022-02-07 02:18:56 +08:00
ychenfo
77608346b1
nac3core: handle tuple by value
2022-02-07 02:09:50 +08:00
ychenfo
4976e89ae2
nac3core: list slice support
2022-01-13 16:53:32 +08:00
ychenfo
1ee857de6a
nac3core: format, fix clippy warning
2022-01-09 01:12:18 +08:00
Sebastien Bourdeauducq
4a65d82db5
introduce IRRT, implement power
...
based on code by Yijia
M-Labs/nac3#160
2022-01-09 00:57:50 +08:00
pca006132
1bd966965e
fixed M-Labs/nac3#146
2021-12-27 22:56:50 +08:00
pca006132
fa04768a77
redo "nac3core: fix #84 "
...
This reverts commit 86005da8e1
.
2021-12-27 22:56:26 +08:00
Sebastien Bourdeauducq
86005da8e1
Revert "nac3core: fix #84 "
...
This reverts commit 0902d8adf4
.
2021-12-26 08:35:27 +08:00
pca006132
0902d8adf4
nac3core: fix #84
2021-12-23 15:26:48 +08:00
pca006132
ba08deada6
nac3core: refactor codegen
2021-11-20 19:50:25 +08:00
ychenfo
8ab3ee9cce
nac3core: AugAssign support ( #82 )
2021-11-13 12:24:22 +08:00
ychenfo
b239806558
nac3core: adapt to ast change due to comment support
2021-11-04 15:02:51 +08:00
Sebastien Bourdeauducq
bf7e2c295a
integrate nac3parser
2021-11-03 17:11:00 +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
pca006132
45673b0ecc
nac3core/codegen: cleanup
2021-10-24 16:53:43 +08:00
pca006132
181607008d
nac3core/codegen: supports list iter
2021-10-24 14:39:50 +08:00
pca006132
fb92b6d364
nac3core: supports range iterator
2021-10-23 23:53:36 +08:00
pca006132
1f5bea2448
nac3core/codegen: refactor according to #23
2021-10-16 22:17:36 +08:00
pca006132
c4259d14d1
fixed some clippy warnings
2021-10-16 18:08:13 +08:00
pca006132
105d605e6d
nac3core: fix clippy warnings
2021-09-22 18:04:06 +08:00
pca006132
084efe92af
nac3core: use string interning
2021-09-22 18:04:06 +08:00
Sebastien Bourdeauducq
013e7cfc2a
codegen: support pass statement. Closes #10
2021-09-22 15:17:13 +08:00
pca006132
bf4e0009c0
codegen: do not generate cont_bb if unreachable
2021-08-27 11:46:12 +08:00
pca006132
e47d063efc
codegen: store to list element
2021-08-19 17:14:38 +08:00
pca006132
0e2da0d180
codegen: gep related fixes
...
we can now compile simple programs that uses tuples and lists
2021-08-19 16:54:15 +08:00
pca006132
3279f7a776
codegen for simple function call, and various fixes
2021-08-19 15:30:15 +08:00
pca006132
77943a8117
added primitive codegen test
2021-08-12 13:56:06 +08:00