1
0
forked from M-Labs/nac3
Commit Graph

1348 Commits

Author SHA1 Message Date
David Mak
9518d3fe14 artiq: Fix timeline not resetting upon exiting sequential block 2023-10-30 14:04:53 +08:00
David Mak
cbd333ab10 artiq: Extract parallel block timeline utilities 2023-10-30 14:04:53 +08:00
David Mak
65d6104d00 artiq: Improve IR value naming and add documentation 2023-10-30 14:04:53 +08:00
David Mak
8373a6cb0f artiq: Use gen_block when generating "with sequential" 2023-10-30 14:04:53 +08:00
David Mak
f75ae78677 cargo: Update dependencies 2023-10-30 14:04:53 +08:00
Sebastien Bourdeauducq
ea2ab0ef7c update nixpkgs, python 3.11 2023-10-25 21:09:22 +08:00
David Mak
e49b760e34 ld: Support multiple CFIs with different encoding in .eh_frame
We now parse each CFI to read its encoding as opposed to assuming that
all CFIs within the same EH_Frame uses the same encoding. FDEs are now
iterated in a per-CFI manner.
2023-10-20 18:15:03 +08:00
David Mak
aa92778363 ld: Fix remapping of FDEs with multiple CFIs 2023-10-20 18:14:27 +08:00
David Mak
e1487ed335 cargo: Update dependencies 2023-10-20 18:11:45 +08:00
David Mak
73500c9081 core: Remove lazy_static from dependencies 2023-10-16 15:55:10 +08:00
David Mak
9ca34c714e flake: Enable thread-safe mode for LLVM
This is required as we use the LLVM APIs from multiple threads.
2023-10-16 15:55:10 +08:00
David Mak
7fc2a30c14 Force single-threaded compilation if LLVM is not thread-safe 2023-10-16 15:55:10 +08:00
David Mak
950f431483 standalone: Update help text for --emit-llvm 2023-10-16 15:52:51 +08:00
David Mak
a50c690428 standalone: Fix run_demo script
- Link main and module*.bc together if using multiple threads
- Fix temporary files not being deleted
2023-10-16 15:52:48 +08:00
David Mak
48eb64403f standalone: Treat -T0 as using all available threads 2023-10-13 14:57:16 +08:00
David Mak
2c44b58bb8 standalone: Require use of -T for specifying thread count 2023-10-13 14:36:34 +08:00
David Mak
50230e61f3 core: Simplify loop condition check for list comprehension 2023-10-06 12:24:03 +08:00
David Mak
0205161e35 core: Simplify list creation for comprehension 2023-10-06 12:22:38 +08:00
David Mak
a2fce49b26 core: Allocate exceptions at the beginning of function
Only one instance of exception is necessary, as exceptions will always
be initialized before being thrown.
2023-10-06 12:13:20 +08:00
David Mak
60a503a791 core: Allocate more stack variables at the beginning of function
All allocas for temporary objects are now placed in the beginning of the
function. Allocas for on-temporary objects are not modified because
these variables may appear in a loop and thus must be uniquely
allocated by different allocas.
2023-10-06 11:42:47 +08:00
David Mak
0c49b30a90 core: Restore debug info before function call is invoked
Previously, the IR which sets up the call to the target function will
have its debug location pointing at the last argument of the function
call instead of the function call itself.
2023-10-06 11:35:23 +08:00
David Mak
c7de22287e core: Fix restoration of stack address
All allocas for temporary objects are now placed in the beginning of the
function. Allocas for on-temporary objects are not modified because
these variables may appear in a loop and thus must be uniquely
represented.
2023-10-06 11:34:23 +08:00
David Mak
1a54aaa1c0 core: Restore debug location when generating allocas
Debug location is lost when moving the builder cursor.
2023-10-06 11:11:50 +08:00
David Mak
c5629d4eb5 standalone: Remove redundant const in demo library 2023-10-06 10:32:58 +08:00
David Mak
a79286113e standalone: Add output_bool in demo library 2023-10-06 10:19:22 +08:00
Sebastien Bourdeauducq
901e921e00 windows: fix build 2023-10-05 18:02:53 +08:00
Sebastien Bourdeauducq
45a323e969 windows: update msys2 packages 2023-10-05 17:52:29 +08:00
Sebastien Bourdeauducq
11759a722f flake: fix pgo build 2023-10-05 17:38:36 +08:00
David Mak
480a4bc0ad core: Implement comparison operators for unsigned types 2023-10-05 17:13:10 +08:00
Sebastien Bourdeauducq
a1d3093196 flake: update dependencies 2023-10-05 17:05:57 +08:00
Sebastien Bourdeauducq
85c5f2c044 cargo: update dependencies 2023-10-05 17:03:35 +08:00
David Mak
f34c6053d6 standalone: Add flags to control demo output options 2023-10-04 18:11:44 +08:00
David Mak
e8a5f0dfef standalone: Fix parsing NAC3 args in check_demo.sh 2023-10-04 18:03:28 +08:00
David Mak
7140901261 standalone: Fix missing libraries when linking
Fixes `undefined reference to 'pow'` for pow.py using -O0.
2023-10-04 18:03:28 +08:00
David Mak
2a775d822e core: Demote dead code into a stdout warning 2023-10-04 18:03:25 +08:00
David Mak
1659c3e724 standalone: Remove temporary logfiles after execution 2023-09-30 09:31:18 +08:00
David Mak
f53cb804ec standalone: Add execution of test cases via lli 2023-09-30 09:31:18 +08:00
David Mak
279376a373 standalone: Emit IRRT IR 2023-09-30 09:31:18 +08:00
David Mak
b6afd1bfda standalone: Split check_demos into check_demo
Allows individual tests to be executed.
2023-09-30 09:31:18 +08:00
David Mak
be3e8f50a2 standalone: Refactor demo library to C
Needed for use by lli.
2023-09-30 09:31:18 +08:00
David Mak
059d3da58b standalone: Add float64 output tests 2023-09-30 09:31:18 +08:00
David Mak
9b28f23d8c flake: Add clang alongside clang-unwrapped 2023-09-30 09:31:18 +08:00
Sebastien Bourdeauducq
119f4d63e9 cargo: update dependencies 2023-09-29 14:46:22 +08:00
Sebastien Bourdeauducq
458fa12788 flake: update dependencies 2023-09-29 14:07:47 +08:00
David Mak
48c6498d1f core: Fix restoration of loop target in try statement
old_loop_target is only assigned if ctx.loop_target is overwritten,
meaning that if ctx.loop_target is never overwritten, ctx.loop_target
will always be overwritten to None.

We fix this by only restoring from old_loop_target if we previously
assigned to old_loop_target.
2023-09-28 20:00:02 +08:00
David Mak
2a38d5160e meta: Respect opt flags when performing whole-module optimization 2023-09-28 19:58:54 +08:00
David Mak
b39831b388 standalone: Update demos
- Add `output_str` for printing a string
- Add demo_test.py to test interop
2023-09-28 19:58:53 +08:00
David Mak
cb39f61e79 core: Fix passing structure arguments to extern functions
All parameters with a structure type in extern functions are marked as
`byref` instead of `byval`, as most ABIs require the first several
arguments to be passed in registers before spilling into the stack.

`byval` breaks this contract by explicitly requiring all arguments to be
 passed in the stack, breaking interop with libraries written in other
 languages.
2023-09-28 15:02:35 +08:00
David Mak
176f250bdb core: Fix missing conversion to i1 for IfExp 2023-09-28 10:06:40 +08:00
David Mak
acdb1de6fe meta: Improve documentation for various modified classes 2023-09-25 15:42:07 +08:00