lyken
4baf1c64ed
core/ndstrides: implement np_dot() for scalars and 1D
2024-08-30 15:07:44 +08:00
lyken
c93f05f74b
core/ndstrides: implement general matmul
2024-08-30 15:06:28 +08:00
lyken
e86718d3d9
core/ndstrides: implement cmpop
2024-08-30 14:59:34 +08:00
lyken
a43ec47530
core/ndstrides: implement unary op
2024-08-30 14:57:26 +08:00
lyken
bc88819eaf
core/ndstrides: implement binop
2024-08-30 14:57:11 +08:00
lyken
c6d3620431
core/ndstrides: add NDArrayOut, broadcast_map and map
2024-08-30 14:57:02 +08:00
lyken
cea512456a
core/ndstrides: implement subscript assignment
...
Overlapping is not handled. Currently it has undefined behavior.
2024-08-30 14:54:53 +08:00
lyken
b22f2bc76c
core/ndstrides: add more ScalarOrNDArray and NDArrayObject utils
2024-08-30 14:52:57 +08:00
lyken
b9e837109b
core/ndstrides: implement np_transpose() (no axes argument)
...
The IRRT implementation knows how to handle axes. But the argument is
not in NAC3 yet.
2024-08-30 14:50:48 +08:00
lyken
d32268fb5d
core/ndstrides: implement broadcasting & np_broadcast_to()
2024-08-30 14:45:43 +08:00
lyken
916a2b4993
core/ndstrides: implement np_reshape()
2024-08-30 14:41:54 +08:00
lyken
be19165ead
core/ndstrides: implement np_shape() and np_strides()
...
These functions are not important, but they are handy for debugging.
`np.strides()` is not an actual NumPy function, but `ndarray.strides` is used.
2024-08-30 14:41:00 +08:00
lyken
ee58cf3fc3
core/ndstrides: implement ndarray.fill() and .copy()
2024-08-30 14:41:00 +08:00
lyken
8fe8ccf200
core/ndstrides: implement np_identity() and np_eye()
2024-08-30 14:41:00 +08:00
lyken
d222236492
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)`.
2024-08-30 14:40:15 +08:00
lyken
7910de10a1
core/ndstrides: add NDArrayObject::atleast_nd
2024-08-30 14:18:34 +08:00
lyken
6edc3f895b
core/ndstrides: add NDArrayObject::make_copy
2024-08-30 14:18:17 +08:00
lyken
a40cdde8d2
core/ndstrides: implement ndarray indexing
...
The functionality for `...` and `np.newaxis` is there in IRRT, but there
is no implementation of them for @kernel Python expressions because of
M-Labs/nac3#486 .
2024-08-30 14:12:54 +08:00
lyken
d1c75c7444
core/ndstrides: implement len(ndarray) & refactor len()
2024-08-30 13:45:25 +08:00
lyken
58c5bc56b9
core/ndstrides: implement np_{zeros,ones,full,empty}
2024-08-30 13:44:12 +08:00
lyken
ddc0e44c61
core/model: add util::gen_for_model
2024-08-30 13:42:39 +08:00
lyken
549536f72c
core/object: add ListObject and TupleObject
...
Needed for implementing other ndarray utils.
2024-08-30 13:41:31 +08:00
lyken
40c42b571a
core/ndstrides: implement ndarray iterator NDIter
...
A necessary utility to iterate through all elements in a possibly strided ndarray.
2024-08-30 13:39:10 +08:00
lyken
92e7103ec7
core/ndstrides: introduce NDArray
...
NDArray with strides.
2024-08-30 13:24:45 +08:00
lyken
9723c17e24
core/object: introduce object
...
A small abstraction to simplify implementations.
2024-08-30 13:04:54 +08:00
lyken
d1c7a8ee50
StructKind::{traverse -> iter}_fields
2024-08-30 12:51:17 +08:00
lyken
e0524c19eb
Newline "Otherwise, it will be caught..."
2024-08-30 12:51:17 +08:00
lyken
32822f9052
gep_index must be u32
2024-08-30 12:51:17 +08:00
lyken
6283036815
FieldTraversal::{Out -> Output}
2024-08-30 12:51:17 +08:00
lyken
f167f5f215
Ptr::copy_from to use SizeT
2024-08-30 12:51:17 +08:00
lyken
baf8ee2b3d
Ptr::offset_const offset i64, can be negative
2024-08-30 12:51:17 +08:00
lyken
d68760447f
Int::const_int to have sign_extend
2024-08-30 12:51:17 +08:00
lyken
fdd194ee2a
FnCall::{begin -> builder}
2024-08-30 12:51:17 +08:00
lyken
5fca81c68e
CallFunction -> FnCall
2024-08-30 12:51:17 +08:00
lyken
0562e9a385
Instance add newline
2024-08-30 12:51:17 +08:00
lyken
36af473816
unsafe Model::believe_value
2024-08-30 12:51:17 +08:00
lyken
7c7e1b3ab8
Model::{sizeof -> size_of}
2024-08-30 12:51:17 +08:00
lyken
dbcfc9538a
ArrayLen::{get_length -> length}
2024-08-30 12:51:17 +08:00
lyken
5c4ba09e2f
LenKind -> ArrayLen
2024-08-30 12:51:17 +08:00
lyken
eb34b99ee9
core/model: renaming and add notes on upgrading Ptr to LLVM 15
2024-08-30 12:51:17 +08:00
lyken
d397b9ceaa
core/model: introduce models
2024-08-30 12:51:17 +08:00
David Mak
71c3a65a31
[core] codegen/stmt: Fix obtaining return type of sret functions
2024-08-29 19:15:30 +08:00
David Mak
8c540d1033
[core] codegen/stmt: Add more casts for boolean types
2024-08-29 16:36:32 +08:00
David Mak
0cc60a3d33
[core] codegen/expr: Fix missing cast to i1
2024-08-29 16:36:32 +08:00
David Mak
a59c26aa99
[artiq] Fix RPC of ndarrays from host
2024-08-29 16:08:45 +08:00
lyken
9848795dcc
core/irrt: add exceptions and debug utils
2024-08-27 22:55:22 +08:00
lyken
d3b4c60d7f
core/irrt: comment build.rs & move irrt to nac3core/irrt
2024-08-27 22:55:22 +08:00
abdul124
2c88924ff7
core: add support for simple polymorphism
2024-08-26 18:37:55 +08:00
David Mak
2b2b2dbf8f
[core] Fix resolution of exception names in raise short form
...
Previous implementation fails as `resolver.get_identifier_def` in ARTIQ
would return the exception __init__ function rather than the class.
We fix this by limiting the exception class resolution to only include
raise statements, and to force the exception name to always be treated
as a class.
Fixes #501 .
2024-08-26 18:35:02 +08:00
David Mak
d9f96dab33
[core] Add codegen_unreachable
2024-08-23 13:10:55 +08:00