9ffa2d6552
[core] codegen/ndarray: Reimplement np_{copy,fill}
...
Based on 18db85fa: core/ndstrides: implement ndarray.fill() and .copy()
2025-01-03 13:58:47 +08:00
acb437919d
[core] codegen/ndarray: Reimplement np_{eye,identity}
...
Based on fa047d50: core/ndstrides: implement np_identity() and np_eye()
2025-01-03 13:58:47 +08:00
fadadd7505
[core] codegen/ndarray: Reimplement np_array()
...
Based on 8f0084ac: core/ndstrides: implement np_array()
It also checks for inconsistent dimensions if the input is a list.
e.g., rejecting `[[1.0, 2.0], [3.0]]`.
However, currently only `np_array(<input>, copy=False)` and `np_array
(<input>, copy=True)` are supported. In NumPy, copy could be false,
true, or None. Right now, NAC3's `np_array(<input>, copy=False)` behaves
like NumPy's `np.array(<input>, copy=None)`.
2025-01-03 13:58:47 +08:00
5880f964bb
[core] codegen/ndarray: Reimplement np_{zeros,ones,full,empty}
...
Based on 792374fa: core/ndstrides: implement np_{zeros,ones,full,empty}.
2025-01-03 13:58:47 +08:00
822f9d33f8
[core] codegen: Refactor ListType to use derive(StructFields)
2025-01-03 13:58:47 +08:00
dc9efa9e8c
[core] codegen/ndarray: Use IRRT for size() and indexing operations
...
Also refactor some usages of call_ndarray_calc_size with ndarray.size().
2024-12-30 16:58:33 +08:00
dc413dfa43
[core] codegen: Refactor TypedArrayLikeAdapter to use fn
...
Allows for greater flexibility when TypedArrayLikeAdapter is used with
custom value types.
2024-12-30 16:50:22 +08:00
35e3042435
[core] Refactor/Remove redundant and unused constructs
...
- Use ProxyValue.name where necessary
- Remove NDArrayValue::ptr_to_{shape,strides}
- Remove functions made obsolete by ndstrides
- Remove use statement for ndarray::views as it only contain an impl
block.
- Remove class_names field in Resolvers of test sources
2024-12-30 14:13:48 +08:00
44498f22f6
[core] codegen: Implement NDArray functions from a0a1f35b
2024-12-13 15:22:11 +08:00
08a7d01a13
[core] Add itemsize and strides to NDArray struct
...
Temporarily disable linalg ndarray tests as they are not ported to work
with strided-ndarray.
2024-12-13 15:22:09 +08:00
aa293b6bea
[core] codegen: Add type_aligned_alloca
2024-12-12 11:30:35 +08:00
eb4b881690
[core] Expose {types,values}::ndarray modules
...
Allows better encapsulation of members in these modules rather than
allowing them to leak into types/values mod.
2024-12-12 11:30:14 +08:00
3d0a1d281c
[core] Expose irrt::ndarray
2024-12-10 12:49:49 +08:00
536ed2146c
[meta] Remove all mentions of build_int_cast
...
build_int_cast performs signed extension or truncation depending on the
source and target int lengths. This is usually not what we want - We
want zero-extension instead.
Replace all instances of build_int_cast with
build_int_z_extend_or_bit_cast to fix this issue.
2024-12-09 12:51:39 +08:00
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
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
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
9d9ead211e
[core] Move Proxies to their own modules
2024-11-19 13:46:23 +08:00
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
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
5e2e77a500
[meta] Bump inkwell to v0.5
2024-09-13 11:11:14 +08:00
d9f96dab33
[core] Add codegen_unreachable
2024-08-23 13:10:55 +08:00
76016a26ad
[meta] Apply clippy suggestions
2024-08-21 13:07:57 +08:00
2cf64d8608
apply clippy comment changes
2024-08-21 11:21:10 +08:00
a0614bad83
[core] codegen/expr: Make gen_string return StructValue
...
So that it is clear that the value itself is returned rather than a
pointer to the struct or its data.
2024-08-13 15:19:03 +08:00
1c72698d02
core: add np_linalg_det and np_linalg_matrix_power functions
2024-07-31 18:02:54 +08:00
54f883f0a5
core: implement np_dot using LLVM_IR
2024-07-31 15:53:51 +08:00
00236f48bc
core: add np.transpose and np.reshape functions
2024-07-31 13:23:07 +08:00
2242c5af43
core: add linalg methods
2024-07-29 16:48:06 +08:00
6d171ec284
core: Add label name and hooks to gen_for functions
2024-07-26 13:35:40 +08:00
693b2a8863
core: Add support for 32-bit size_t on 64-bit targets
2024-07-26 13:35:40 +08:00
0a732691c9
core: refactor typecheck/magic_methods.rs operators & add op symbol name
2024-07-05 16:27:20 +08:00
075536d7bd
core: Add BreakContinueHooks for gen_for_callback
2024-07-04 15:32:18 +08:00
2194dbddd5
core/type_annotation: Refactor List type to TObj
...
In preparation for operators on lists.
2024-07-04 15:32:18 +08:00
d6565feed3
core: ndarray_from_ndlist_impl cast size_of to usize
2024-07-04 12:24:52 +08:00
5b11a1dbdd
core: support tuple and int32 input for np_empty, np_ones, and more
2024-06-27 14:30:17 +08:00
23974feae7
meta: Restrict number of allowed lints
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
f0ab1b858a
core: Refactor class abstractions
...
- Introduce new Type abstractions
- Rearrange some functions
2024-06-06 13:45:51 +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
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
30c6cffbad
core/builtins: Refactored numpy builtins to accept scalar and ndarrays
2024-05-06 15:38:29 +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
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