5b11a1dbdd
core: support tuple and int32 input for np_empty, np_ones, and more
2024-06-27 14:30:17 +08:00
134af79fd6
core: add support for class attributes
2024-06-25 16:06:33 +08:00
74096eb9f6
core: name codegen worker threads
2024-06-25 12:36:37 +08:00
06e9d90d57
apply clippy changes
2024-06-21 14:14:01 +08:00
d89146aa02
core: use no_run on builtin_fns docs
2024-06-20 13:53:25 +08:00
0452e6de78
core: Fix codegen for tuple-index into ndarray
2024-06-20 12:50:30 +08:00
e36af3b0a3
core: reduce code duplication in codegen/builtin_fns ( #422 )
...
Used macros to generate some unary math functions.
Reviewed-on: M-Labs/nac3#422
Reviewed-by: David Mak <chmakac@connect.ust.hk>
Co-authored-by: lyken <lyken@m-labs.hk>
Co-committed-by: lyken <lyken@m-labs.hk>
2024-06-20 12:48:44 +08:00
82091b1be8
meta: Apply clippy changes
2024-06-17 14:10:31 +08:00
676412fe6d
apply cargo fmt
2024-06-14 09:46:42 +08:00
fed1361c6a
core: rename to_var_map to into_var_map
2024-06-13 16:59:10 +08:00
f026b48e2a
core: refactor to use TypeVarId
and TypeVar
2024-06-13 16:59:10 +08:00
23974feae7
meta: Restrict number of allowed lints
2024-06-12 16:10:57 +08:00
40a3bded36
meta: Set clippy lints in {main,lib}.rs
...
So that this does not have to be manually passed to the `cargo clippy`
command-line every single time. Also allows incrementally addressing
these lints by removing and fixing them one-by-one.
2024-06-12 16:10:57 +08:00
fd36f78005
core: refactor PrimitiveDefinitionId
into enum PrimDef
2024-06-12 15:01:01 +08:00
8168692cc3
apply cargo fmt
2024-06-12 14:45:03 +08:00
6153f94b05
core/numpy: Implement codegen for np_array
2024-06-11 16:42:11 +08:00
2d4329e23c
core/stmt: Use BB of last statement in if-else in phi
2024-06-11 15:30:06 +08:00
679656f9e1
core/classes: Fix incorrect field locations for lists
2024-06-11 15:30:06 +08:00
210d9e2334
core: Add more creator functions for ProxyType
2024-06-11 15:26:37 +08:00
181ac3ec1a
core/classes: Fix incorrect pointers of range.{stop,step}
2024-06-11 15:13:31 +08:00
f0ab1b858a
core: Refactor class abstractions
...
- Introduce new Type abstractions
- Rearrange some functions
2024-06-06 13:45:51 +08:00
ad4832dcf4
core: Refactor to get LLVM intrinsics via Intrinsics::find
2024-06-05 15:29:40 +08:00
b857f1e403
nac3core: fix typo in gen_for's comment
2024-06-04 17:15:41 +08:00
ed79d5bb9e
core/expr: Add support for multi-dim slicing of NDArrays
2024-06-03 16:40:05 +08:00
c35ad06949
core/expr: Add support for 1D slicing of NDArrays
2024-06-03 16:40:05 +08:00
135ef557f9
core/numpy: Implement ndarray_sliced_{copy,copyto_impl}
...
Performing copying with optional support for slicing. Also made
copy_impl delegate to sliced_copy, as sliced_copy now performs a
superset of operations that copy_impl can already do.
2024-06-03 16:40:05 +08:00
a176c3eb70
core/irrt: Change handle_slice_indices to instead take length of object
...
So that all other array-like datatypes (e.g. ndarray) can also take
advantage of it.
2024-06-03 16:40:05 +08:00
2cf79510c2
core/numpy: Add more helper functions
2024-06-03 16:40:05 +08:00
b6ff75dcaf
core/irrt: Add support for calculating partial size of NDArray
2024-06-03 16:40:05 +08:00
588c15f80d
core/stmt: Add gen_for_range_callback
...
For generating for loops over range objects or array slices.
2024-06-03 16:40:05 +08:00
520e1adc56
core/builtins: Add np_minimum/np_maximum
2024-05-09 15:01:20 +08:00
73e81259f3
core/builtins: Add np_min/np_max
2024-05-09 15:01:20 +08:00
30c6cffbad
core/builtins: Refactored numpy builtins to accept scalar and ndarrays
2024-05-06 15:38:29 +08:00
51671800b6
core/builtins: Extract codegen portion into functions
...
We will need to reuse them when implementing elementwise function
application for ndarrays.
2024-05-06 13:21:54 +08:00
7b4253ccd8
core/numpy: Add missing lifetime parameters
2024-05-06 13:21:54 +08:00
847615fc2f
core: Implement numpy.matmul for 2D-2D ndarrays
2024-04-23 10:27:37 +08:00
5dfcc63978
core/classes: Take reference of indexes
2024-04-16 17:20:24 +08:00
025b3cd02f
core/stmt: Remove gen_if_chained*
...
Turns out it is really difficult to get lifetimes and closures right, so
let's just provide the most rudimentary if-else codegen and we can nest
them if necessary.
2024-04-16 17:16:50 +08:00
e0f440040c
core/expr: Implement negative indices for ndarray
2024-04-15 12:49:42 +08:00
f0715e2b6d
core/stmt: Add gen_if* functions
...
For generating if-constructs in IR.
2024-04-15 12:20:34 +08:00
e7fca67786
core/stmt: Do not generate jumps if bb is already terminated
...
Future-proofs gen_*_callback functions in case other codegen functions
will delegate to it in the future.
2024-04-15 12:20:34 +08:00
52c731c312
core: Implement Not/UAdd/USub for booleans
...
Not sure if this is deliberate or an oversight, but we implement it
anyway for consistency with other Python implementations.
2024-04-12 18:29:58 +08:00
00d1b9be9b
core: Fix __inv__ for i8-based boolean operands
2024-04-12 15:35:54 +08:00
a920fe0501
core: Implement elementwise comparison operators
2024-04-03 00:07:33 +08:00
727a1886b3
core: Implement elementwise unary operators
2024-04-03 00:07:33 +08:00
6af13a8261
core: Implement elementwise binary operators
...
Including immediate variants of these operators.
2024-04-03 00:07:33 +08:00
3a6c53d760
core/toplevel/numpy: Split ndarray type var utilities
2024-04-03 00:07:33 +08:00
87bc34f7ec
core: Implement calculations for broadcasting ndarrays
2024-04-03 00:07:31 +08:00
5ca2dbeec8
core/typedef: Add Type::obj_id to replace get_obj_id
2024-04-02 16:49:10 +08:00
9a98cde595
core: Extract codegen portion of gen_*op_expr
...
This allows *ops to be generated internally using LLVM values as
input. Required in a future change.
2024-04-01 16:48:25 +08:00
5ba8601b39
core: Remove ArrayValue variants of functions
...
These will be lowered and optimized away later anyways, and we have
ArrayLikeAccessor now.
2024-04-01 16:48:25 +08:00
26a01b14d5
core: Use more typed slices in APIs
2024-04-01 16:48:25 +08:00
789bfb5a26
core: Fix index-based operations not returning i32
2024-04-01 16:46:45 +08:00
4bb0e60981
core: Apply clippy suggestions
2024-04-01 16:46:41 +08:00
13f06f3e29
core: Refactor VarMap to IndexMap
...
This is the only Map I can find that preserves insertion order while
also deduplicating elements by key.
2024-03-22 15:51:23 +08:00
f0da9c0283
core: Add ArrayLikeValue
...
For exposing LLVM values that can be accessed like an array.
2024-03-22 15:51:06 +08:00
2c4bf3ce59
core: Allow unsized CodeGenerator to be passed to some codegen functions
...
Enables codegen_callback to call these codegen functions as well.
2024-03-22 15:07:28 +08:00
e980f19c93
core: Simplify typed value assertions
2024-03-22 15:07:28 +08:00
cfbc37c1ed
core: Add gen_for_callback_incrementing
...
Simplifies generation of monotonically increasing for loops.
2024-03-22 15:07:28 +08:00
50264e8750
core: Add missing unchecked accessors for NDArrayDimsProxy
2024-03-22 15:07:28 +08:00
1b77e62901
core: Split numpy into codegen and toplevel
2024-03-22 15:07:28 +08:00
c8866b1534
core/classes: Rename get_* functions to remove prefix
...
As suggested by Rust API Guidelines.
2024-03-21 15:46:10 +08:00
84a888758a
core: Rename unsafe functions to unchecked
...
This is this intended name of the functions.
2024-03-21 15:46:10 +08:00
a94927a11d
core: Update __builtin_assume expressions
...
No dimension size should be 0.
2024-03-07 14:59:13 +08:00
3292aed099
core: Fix ndarray subscript operator returning the wrong object
...
Should be returning the newly created object instead of the original
ndarray...
2024-03-07 14:59:13 +08:00
3d2abf73c8
core: Replace ndarray_init_dims IRRT impl with IR impl
...
Implementation of that function in IR allows for more flexibility in
terms of different integer type widths.
2024-03-07 14:59:13 +08:00
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
234a6bde2a
core: Use TObj for NDArray
2024-03-01 15:41:55 +08:00
82fdb02d13
core: Extract LLVM intrinsic functions to their functions
2024-02-23 15:41:06 +08:00
4efdd17513
core: Add missing From implementations for LLVM wrapper classes
2024-02-23 15:41:06 +08:00
49de81ef1e
core: Apply clippy suggestions
2024-02-23 15:41:06 +08:00
8492503af2
core: Update cargo dependencies
2024-02-23 15:41:04 +08:00
cc538d221a
core: Implement codegen for indexing into ndarray
2024-02-19 17:13:09 +08:00
976a9512c1
core: Add const variants to NDArray element getters
2024-02-19 16:56:21 +08:00
1eacaf9afa
core: Fix IRRT argument order to ndarray_flatten_index
2024-02-19 16:37:13 +08:00
8c7e44098a
core: Fix IRRT implementation of ndarray_flatten_index
2024-02-19 16:37:13 +08:00
8470915809
core: Add NDArrayValue and helper functions
2024-01-25 15:51:39 +08:00
148900302e
core: Add RangeValue and helper functions
2024-01-25 15:51:39 +08:00
5ee08b585f
core: Add ListValue and helper functions
2024-01-25 15:51:39 +08:00
f1581299fc
core: Minor changes to IRRT
...
Add missing documentation, remove redundant lifetime variables, and fix
typos.
2024-01-25 15:50:53 +08:00
12c0eed0a3
core: Fix compilation of tests
2024-01-17 09:49:49 +08:00
140f8f8a08
core: Implement most ndarray-creation functions
2023-12-22 16:29:55 +08:00
27fcf8926e
core: Implement ndarray constructor and numpy.empty
2023-12-22 16:29:54 +08:00
c395472094
core: Initial infrastructure for ndarray
2023-12-21 15:39:46 +08:00
bd792904f9
core: Add size_t to primitive store
...
Used for ndims in ndarray.
2023-12-21 15:20:31 +08:00
457d3b6cd7
core: Refactor generic constants to Literal
...
Better matches the syntax of `typing.Literal`.
2023-12-16 18:40:48 +08:00
5f692debd8
core: Add PrimitiveStore into Unifier
...
This will be used during unification between a const generic variable
and a `Literal`.
2023-12-16 18:40:48 +08:00
b47ac1b89b
core: Minor formatting cleanup
2023-12-15 17:46:44 +08:00
a19f1065e3
meta: Refactor to use more let-else bindings
2023-12-12 16:31:14 +08:00
32746c37be
core: Refactor to return errors by HashSet
2023-12-12 15:41:59 +08:00
d4c109b6ef
core: Add missing generic constant concrete type
2023-12-12 11:28:01 +08:00
bd3d67f3d6
artiq: Apply clippy pedantic changes
2023-12-11 15:16:23 +08:00
02933753ca
core: Apply clippy pedantic changes
2023-12-11 15:16:23 +08:00
a1f244834f
meta: Bringup some documentation
2023-12-11 15:16:23 +08:00
d304afd333
meta: Apply clippy suggested changes
2023-12-11 15:16:23 +08:00
ef04696b02
meta: Lift return out of conditional statement
2023-12-11 15:16:23 +08:00
4dc5dbb856
meta: Replace equality assertion with assert_eq
...
Emits a more useful assertion message.
2023-12-11 15:16:23 +08:00
fd9f66b8d9
meta: Remove redundant casts and brackets
2023-12-11 15:16:23 +08:00
5182453bd9
meta: Remove redundant path prefixes
2023-12-11 15:16:23 +08:00
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