David Mak
6732111430
[core] Move alloca and map_value of ProxyType to implementations
...
These functions may not be invokable by the same set of parameters as
some classes has associated states.
2024-11-29 12:15:19 +08:00
David Mak
144f0922db
[core] coregen/types: Implement StructFields for NDArray
...
Also rename some fields to better align with their naming in numpy.
2024-11-21 14:27:00 +08:00
David Mak
c58ce9c3a9
[core] codegen/types: Implement NDArray in terms of i8*
...
Better aligns with the future implementation of ndstrides.
2024-11-21 14:27:00 +08:00
David Mak
a4f53b6e6b
[core] codegen: Refactor ProxyType and ProxyValue
...
Accepts generator+context object for generic type checking. Also
implements more default trait impl for easier delegation.
2024-11-19 13:46:25 +08:00
David Mak
9d9ead211e
[core] Move Proxies to their own modules
2024-11-19 13:46:23 +08:00
occheung
b53266e9e6
artiq: use async RPC for attributes writeback
2024-11-12 12:04:01 +08:00
occheung
705dc4ff1c
artiq: lump return value into attributes writeback RPC
2024-11-12 12:02:35 +08:00
David Mak
a98f33e6d1
[meta] Reorganize order of use declarations - Phase 2
...
Some more rules:
- For module-level imports, prefer no prefix > super > crate.
- Use crate instead of super if super refers to the crate-level module
2024-10-17 15:57:33 +08:00
David Mak
fe06b2806f
[meta] Reorganize order of use declarations
...
Use declarations are now grouped into 4 groups:
- Declarations from the standard library
- Declarations from external crates
- Declarations from other crates in this project
- Declarations from within this module
Furthermore, all use declarations are grouped together to enhance
readability. super::super is also replaced by an equivalent crate::
declaration.
2024-10-04 12:52:01 +08:00
mwojcik
f2c047ba57
artiq: support async rpcs
...
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2024-09-13 12:12:13 +08:00
David Mak
5e2e77a500
[meta] Bump inkwell to v0.5
2024-09-13 11:11:14 +08:00
David Mak
f3dc02d646
[meta] Apply cargo fmt
2024-09-09 14:24:52 +08:00
Sebastien Bourdeauducq
668ccb1c95
nac3core: expose inkwell and nac3parser
2024-09-06 11:06:26 +08:00
David Mak
9c33c4209c
[core] Fix type of ndarray.element_type
...
Should be the element type of the NDArray itself, not the pointer to its
type.
2024-08-30 22:47:38 +08:00
David Mak
a59c26aa99
[artiq] Fix RPC of ndarrays from host
2024-08-29 16:08:45 +08:00
lyken
2cf64d8608
apply clippy comment changes
2024-08-21 11:21:10 +08:00
lyken
706759adb2
artiq: apply cargo fmt
2024-08-21 11:21:10 +08:00
David Mak
b1c5c2e1d4
[artiq] Fix RPC of ndarrays to host
2024-08-15 15:41:24 +08:00
David Mak
6beff7a268
[artiq] Implement core_log and rtio_log in terms of polymorphic_print
...
Implementation mostly references the original implementation in Python.
2024-08-13 15:19:03 +08:00
David Mak
4f5e417012
[core] codegen: Add function to get format constants for integers
2024-08-13 15:19:03 +08:00
David Mak
6a64c9d1de
core/typecheck/typedef: Add is_vararg_ctx to TTuple
2024-08-06 11:45:54 +08:00
David Mak
cbf79c5e9c
core/typecheck/typedef: Add is_vararg to FuncArg, ConcreteFuncArg
2024-08-06 11:43:13 +08:00
David Mak
2194dbddd5
core/type_annotation: Refactor List type to TObj
...
In preparation for operators on lists.
2024-07-04 15:32:18 +08:00
abdul124
134af79fd6
core: add support for class attributes
2024-06-25 16:06:33 +08:00
lyken
06e9d90d57
apply clippy changes
2024-06-21 14:14:01 +08:00
David Mak
d3cd2a8d99
artiq: Add support for generating RPC tag for ndarray
2024-06-19 18:56:16 +08:00
David Mak
23974feae7
meta: Restrict number of allowed lints
2024-06-12 16:10:57 +08:00
lyken
fd36f78005
core: refactor `PrimitiveDefinitionId` into enum `PrimDef`
2024-06-12 15:01:01 +08:00
lyken
8168692cc3
apply cargo fmt
2024-06-12 14:45:03 +08:00
David Mak
5ca2dbeec8
core/typedef: Add Type::obj_id to replace get_obj_id
2024-04-02 16:49:10 +08:00
David Mak
77de24ef74
core: Use BTreeMap for type variable mapping
...
There have been multiple instances where I had the need to iterate over
type variables, only to discover that the traversal order is arbitrary.
This commit fixes that by adding SortedMapping, which utilizes BTreeMap
internally to guarantee a traversal order. All instances of VarMap are
now refactored to use this to ensure that type variables are iterated in
the order of its variable ID, which should be monotonically incremented
by the unifier.
2024-03-04 23:56:04 +08:00
David Mak
234a6bde2a
core: Use TObj for NDArray
2024-03-01 15:41:55 +08:00
David Mak
c3db6297d9
core: Add primitive definition-id list
...
So that we have a single ground truth for the definition IDs of
primitive types.
2024-03-01 11:29:10 +08:00
David Mak
82fdb02d13
core: Extract LLVM intrinsic functions to their functions
2024-02-23 15:41:06 +08:00
David Mak
8492503af2
core: Update cargo dependencies
2024-02-23 15:41:04 +08:00
David Mak
c395472094
core: Initial infrastructure for ndarray
2023-12-21 15:39:46 +08:00
David Mak
a19f1065e3
meta: Refactor to use more let-else bindings
2023-12-12 16:31:14 +08:00
David Mak
bd3d67f3d6
artiq: Apply clippy pedantic changes
2023-12-11 15:16:23 +08:00
David Mak
d304afd333
meta: Apply clippy suggested changes
2023-12-11 15:16:23 +08:00
David Mak
5182453bd9
meta: Remove redundant path prefixes
2023-12-11 15:16:23 +08:00
David Mak
983f080ea7
artiq: Implement handling for const generic variables
2023-12-08 18:02:14 +08:00
David Mak
c93ad152d7
core: Codegen for ellipsis expression as NotImplemented
...
A lot of refactoring was performed, specifically with relaxing
expression codegen to return Option in case where ellipsis are used
within a subexpression.
2023-12-08 18:00:51 +08:00
David Mak
c2ab6b58ff
artiq: Implement `with legacy_parallel` block
2023-11-04 13:42:44 +08:00
David Mak
0a84f7ac31
Add CodeGenerator::gen_block and refactor to use it
2023-11-04 13:42:44 +08:00
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
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
31dcd2dde9
core: Use i8 for boolean variable allocation
...
In LLVM, i1 represents a 1-byte integer with a single valid bit; The
rest of the 7 upper bits are undefined. This causes problems when
using these variables in memory operations (e.g. memcpy/memmove as
needed by List slicing and assignment).
We fix this by treating all local boolean variables as i8 so that they
are well-defined for memory operations. Function ABIs will continue to
use i1, as memory operations cannot be directly performed on function
arguments or return types, instead they are always converted back into
local boolean variables (which are i8s anyways).
Fixes #315 .
2023-09-25 15:42:07 +08:00