a59c26aa99
[artiq] Fix RPC of ndarrays from host
2024-08-29 16:08:45 +08:00
15ac00708a
[core] Use quoted include paths instead of angled brackets
...
This is preferred for user-defined headers.
2024-08-28 16:37:03 +08:00
22c4d25802
core/typecheck: add missing typecheck in matmul
2024-08-27 22:59:39 +08:00
9848795dcc
core/irrt: add exceptions and debug utils
2024-08-27 22:55:22 +08:00
58222feed4
core/irrt: split into headers
2024-08-27 22:55:22 +08:00
518f21d174
core/irrt: build.rs capture IR defined constants
2024-08-27 22:55:22 +08:00
e8e49684bf
core/irrt: build.rs capture IR defined types
2024-08-27 22:55:22 +08:00
b2900b4883
core/irrt: use +std=c++20 to compile
...
To explicitly set the C++ variant and avoid inconsistencies.
2024-08-27 22:55:22 +08:00
c6dade1394
core/irrt: reformat
2024-08-27 22:55:22 +08:00
d3b4c60d7f
core/irrt: comment build.rs & move irrt to nac3core/irrt
2024-08-27 22:55:22 +08:00
5b2b6db7ed
core: improve error messages
2024-08-26 18:37:55 +08:00
2c88924ff7
core: add support for simple polymorphism
2024-08-26 18:37:55 +08:00
a744b139ba
core: allow Call and AnnAssign in init block
2024-08-26 18:37:55 +08:00
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
d9f96dab33
[core] Add codegen_unreachable
2024-08-23 13:10:55 +08:00
4d80ba38b7
[core] codegen/expr: Implement comparison of tuples
2024-08-21 16:25:32 +08:00
33929bda24
[core] typecheck/typedef: Add support for tuple methods
2024-08-21 16:25:32 +08:00
a8e92212c0
[core] codegen/expr: Implement string equality
2024-08-21 16:25:32 +08:00
908271014a
[core] typecheck/magic_methods: Add equality methods to string
2024-08-21 16:25:32 +08:00
c407622f5c
[core] codegen/expr: Add compilation error for unsupported cmpop
2024-08-21 15:46:13 +08:00
d7952d0629
[core] codegen/expr: Fix assertions not generated for -O0
2024-08-21 15:36:54 +08:00
ca1395aed6
[core] codegen: Remove redundant return
2024-08-21 15:36:54 +08:00
7799aa4987
[meta] Do not specify rev in dependency version
2024-08-21 15:36:54 +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
b90cf2300b
core/fix: add missing lifetime in gen_for*
2024-08-21 11:05:30 +08:00
9e0601837a
core: Add compile-time feature to disable escape analysis
2024-08-14 09:29:48 +08:00
432c81a500
core: update insta after #489
2024-08-13 15:30:34 +08:00
8fd7216243
[core] toplevel/composer: Add lateinit_builtins
...
This is required for the new core_log and rtio_log functions, which take
a generic type as its parameter. However, in ARTIQ builtins are
initialized using one unifier and then actually used by another unifier.
lateinit_builtins workaround this issue by deferring the initialization
of functions requiring type variables until the actual unifier is ready.
2024-08-13 15:19:03 +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
5539d144ed
[core] Add CodeGenContext::build_in_bounds_gep_and_load
...
For safer accesses to `gep`-able values and faster fails.
2024-08-13 15:19:03 +08:00
973dc5041a
core/typecheck: Support tuple arg type in len()
2024-08-13 15:02:59 +08:00
12c4e1cf48
core/toplevel/builtins: Add support for len() on tuples
2024-08-13 15:02:59 +08:00
9b988647ed
core/toplevel/builtins: Extract len() into builtin function
2024-08-13 15:02:59 +08:00
35a7cecc12
core/typecheck: fix np_array ndmin bug
2024-08-13 12:50:04 +08:00
7e3d87f841
core/codegen: fix bug in call_ceil function
2024-08-07 16:40:55 +08:00
3ff6db1a29
core/codegen: Add va_start and va_end intrinsics
2024-08-06 11:48:42 +08:00
d7b806afb4
core/codegen: Implement support for va_info on supported architectures
2024-08-06 11:48:40 +08:00
fac60c3974
core/codegen: Handle vararg in function generation
2024-08-06 11:46:00 +08:00
f5fb504a15
core/codegen/expr: Implement vararg handling in gen_call
2024-08-06 11:46:00 +08:00
faa3bb97ad
core/typecheck/typedef: Add vararg to Unifier::stringify
2024-08-06 11:46:00 +08:00
6a64c9d1de
core/typecheck/typedef: Add is_vararg_ctx to TTuple
2024-08-06 11:45:54 +08:00
3dc8498202
core/typecheck/typedef: Handle vararg parameters in unify_call
2024-08-06 11:43:13 +08:00
cbf79c5e9c
core/typecheck/typedef: Add is_vararg to FuncArg, ConcreteFuncArg
2024-08-06 11:43:13 +08:00
b8aa17bf8c
core/toplevel/composer: Add parsing for vararg parameter
2024-08-06 10:52:24 +08:00
f5b998cd9c
core/codegen: Remove unnecessary mut from get_llvm*_type
2024-08-06 10:52:24 +08:00
3a8c385e01
core/typecheck: fix missing ExprKind::Asterisk in fix_assignment_target_context
2024-08-05 19:30:48 +08:00
221de4d06a
core/codegen: add missing comment
2024-08-05 19:30:48 +08:00
fb9fe8edf2
core: reimplement assignment type inference and codegen
...
- distinguish between setitem and getitem
- allow starred assignment targets, but the assigned value would be a tuple
- allow both [...] and (...) to be target lists
2024-08-05 19:30:48 +08:00
894083c6a3
core/codegen: refactor gen_{for,comprehension} to match on iter type
2024-08-05 19:30:48 +08:00
63d2b49b09
core: remove np_linalg_matmul
2024-08-05 11:44:55 +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
a3e6bb2292
core/helper: add linalg section
2024-07-31 13:23:07 +08:00
4bb00c52e3
core/builtin_fns: improve error reporting
2024-07-31 13:21:31 +08:00
2242c5af43
core: add linalg methods
2024-07-29 16:48:06 +08:00
72972fa909
core/toplevel: add more numpy categories
2024-07-27 21:57:47 +08:00
142cd48594
core/toplevel: reorder PrimDef::details
2024-07-27 21:57:47 +08:00
8adfe781c5
core/toplevel: fix PrimDef method names
2024-07-27 21:57:47 +08:00
339b74161b
core/toplevel: reorganize PrimDef
2024-07-27 21:57:47 +08:00
05a8948ff2
core: Minor cleanup to use ListValue APIs
2024-07-26 13:35:40 +08:00
6d171ec284
core: Add label name and hooks to gen_for functions
2024-07-26 13:35:40 +08:00
0ba68f6657
core: Set target triple and datalayout for each module
...
Fixes an issue with inconsistent pointer sizes causing crashes.
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
4948395ca2
core/toplevel/type_annotation: Add handling for mismatching class def
...
Primitive types only contain fields in its Type and not its TopLevelDef.
This causes primitive object types to lack some fields.
2024-07-19 14:42:14 +08:00
3db3061d99
artiq/symbol_resolver: Handle type of zero-length lists
2024-07-19 14:42:14 +08:00
51c2175c80
core/codegen/stmt: Convert assertion values to i1
2024-07-19 14:42:14 +08:00
6c10e3d056
core: cargo clippy
2024-07-12 21:18:53 +08:00
2dbc1ec659
cargo fmt
2024-07-12 21:16:38 +08:00
513d30152b
core: support raise exception short form
2024-07-12 18:58:34 +08:00
2e01b77fc8
core: refactor np_max/np_min functions
2024-07-12 18:18:54 +08:00
cea7cade51
core: add np_argmax/np_argmin functions
2024-07-12 18:18:28 +08:00
eeb474f9e6
core: reduce code duplication in codegen/extern_fns ( #453 )
...
Used macros to reduce code duplication in `codegen/extern_fns`
Reviewed-on: #453
Co-authored-by: abdul124 <ar@m-labs.hk>
Co-committed-by: abdul124 <ar@m-labs.hk>
2024-07-09 16:31:08 +08:00
88b72af2d1
core/llvm_intrinsic: improve macro name and comments
2024-07-09 16:30:32 +08:00
b73f6c4d68
core: reduce code duplication in codegen/llvm_intrinsic
2024-07-09 16:30:32 +08:00
a91602915a
core: Fix missing fields in range type
2024-07-09 13:53:50 +08:00
1c56005a01
core: Reformat and modernize irrt.cpp
...
- Use anon namespace instead of static
- Use using declaration instead of typedef
- Align pointers to the type instead of the identifier
2024-07-09 13:53:50 +08:00
bc40a32524
core: Add report_type_error to enable more code reuse
2024-07-09 13:44:47 +08:00
c820daf5f8
core: Apply cargo format
2024-07-09 13:32:10 +08:00
2cfb7a7e10
core: Refactor range function into constructor
2024-07-09 04:44:40 +08:00
76defac462
meta: use clang -x c++ instead of clang++
2024-07-07 20:03:34 +08:00
650f354b74
core: use C++ for irrt source
2024-07-07 14:36:10 +08:00
f062ef5f59
core/llvm_intrinsic: replace roundeven with rint
2024-07-07 14:24:18 +08:00
f52086b706
core: improve binop and cmpop error messages
2024-07-05 16:27:24 +08:00
0a732691c9
core: refactor typecheck/magic_methods.rs operators & add op symbol name
2024-07-05 16:27:20 +08:00
cbff356d50
core: workaround inkwell on llvm.stackrestore
2024-07-05 13:56:12 +08:00
24ac3820b2
core: check int32 obj_id directly in fold_numpy_function_call_shape_argument
2024-07-05 10:36:47 +08:00
c4052b6342
core: Implement multi-operand __eq__ and __ne__ for lists
2024-07-04 16:01:15 +08:00
66c205275f
core: Implement list::__add__
2024-07-04 16:01:11 +08:00
c85e412206
core: Implement list::__mul__
2024-07-04 15:53:50 +08:00
075536d7bd
core: Add BreakContinueHooks for gen_for_callback
2024-07-04 15:32:18 +08:00
13beeaa2bf
core: Implement handling for zero-length lists
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
83154ef8e1
core/llvm_intrinsics: remove llvm.roundeven call from call_float_roundeven
2024-07-03 14:17:47 +08:00
0744b938b8
core: fix __nac3_ndarray_calc_size crash due to incorrect typing
2024-07-03 13:03:14 +08:00
56fa2b6803
core: fix crash on iterating over non-iterables
...
a
2024-06-28 15:45:53 +08:00
d06c13f936
core: fix crash on invalid subscripting
2024-06-27 16:58:48 +08:00
9808923258
core: improve comments in type_inferencer/mod.rs
2024-06-27 14:46:48 +08:00
5b11a1dbdd
core: support tuple and int32 input for np_empty, np_ones, and more
2024-06-27 14:30:17 +08:00
b21df53e0d
core: fix comment typo in unify_call()
2024-06-27 14:06:39 +08:00
0ec967a468
core: improve function call errors
2024-06-27 14:06:39 +08:00
134af79fd6
core: add support for class attributes
2024-06-25 16:06:33 +08:00
7fe2c3496c
core: add attribute field to class definition
2024-06-25 16:06:33 +08:00
144a3fc426
core: more derive Debug in typedef
2024-06-25 15:02:50 +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
635c944c90
core: Fix type inference for tuple-index into ndarray
...
Fixes #420 .
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: #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
e85f4f9bd2
core: refactor top_level::builtins::get_builtins()
2024-06-18 11:06:25 +08:00
82091b1be8
meta: Apply clippy changes
2024-06-17 14:10:31 +08:00
2abe75d1f4
core: remove code dup with make_exception_fields
2024-06-17 12:01:48 +08:00
676412fe6d
apply cargo fmt
2024-06-14 09:46:42 +08:00
8b9df7252f
core: cleanup with Unifier::generate_var_id
2024-06-14 09:42:04 +08:00
6979843431
core: fix typo in into_var_map
2024-06-13 16:59:10 +08:00
fed1361c6a
core: rename to_var_map to into_var_map
2024-06-13 16:59:10 +08:00
aa94e0c8a4
core: remove pub & add From<TypeVarId> for u32
2024-06-13 16:59:10 +08:00
f523e26227
core: fix typo in fmt::Display of TypeVarId
2024-06-13 16:59:10 +08:00
f026b48e2a
core: refactor to use TypeVarId
and TypeVar
2024-06-13 16:59:10 +08:00
dc874f2994
core: use PrimDef
simple names in make_primitives()
2024-06-13 16:58:32 +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
c4420e6ab9
core: refactor get_builtins()
2024-06-12 15:09:20 +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
4730b595f3
core/builtins: Add np_array function
2024-06-11 16:42:08 +08:00
c2fdb12397
core/type_inferencer: Add special rule for np_array
2024-06-11 16:40:35 +08:00
82bf14785b
core: Add multidimensional array helpers
2024-06-11 15:30:06 +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
3acdfb304d
meta: Apply clippy suggestions
2024-06-11 14:58:32 +08:00
f0ab1b858a
core: Refactor class abstractions
...
- Introduce new Type abstractions
- Rearrange some functions
2024-06-06 13:45:51 +08:00
08129cc635
nac3core: add TopLevelComposer::new builtin check's assertion msg
2024-06-05 15:30:02 +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
82cc693b11
meta: Update dependencies
2024-06-03 16:40:02 +08:00
520e1adc56
core/builtins: Add np_minimum/np_maximum
2024-05-09 15:01:20 +08:00