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
f7e296da53
[core] irrt: Break IRRT into several impl files
...
Each IRRT file is now mapped to one Rust file.
2024-11-21 14:27:00 +08:00
1a535db558
[core] codegen: Add dtype to NDArrayType
...
We won't have this once NDArray is refactored to strided impl.
2024-11-20 15:35:57 +08:00
1ba2e287a6
[core] codegen: Add Self::llvm_type to all type abstractions
2024-11-20 15:35:57 +08:00
d7633c42bc
[core] codegen/types: Implement StructField{,s}
...
Loosely based on FieldTraversal by lyken.
2024-11-19 13:46:25 +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
26a1b85206
[core] codegen/classes: Remove Underlying type
...
This is confusing and we want a better abstraction than this.
2024-11-19 13:45:55 +08:00
2bd3f63991
boolop: terminate both branches with *_end_bb
2024-11-16 12:06:20 +08:00
979209a526
binop: expand not
operator as loglcal not
2024-11-08 17:12:01 +08:00
b6cd2a6993
[meta] Reorganize order of use declarations - Phase 3
2024-10-17 16:25:52 +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
2bb788e4bb
[core] codegen/expr: Materialize implicit globals
...
Required for when globals are read without the use of a global
declaration.
2024-10-07 13:13:20 +08:00
e60e8e837f
[core] Add support for global statements
2024-10-04 13:24:27 +08:00
9fdbe9695d
[core] Add generator to SymbolResolver::get_symbol_value
...
Needed in a future commit.
2024-10-04 13:20:29 +08:00
192290889b
[core] Add IdentifierInfo
...
Keeps track of whether an identifier refers to a global or local
variable.
2024-10-04 13:20:24 +08:00
c7697606e1
[core] Add TopLevelDef::Variable
2024-10-04 13:09:25 +08:00
a43b59539c
[meta] Move variables declarations closer to where they are first used
2024-10-04 13:00:16 +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
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
71c3a65a31
[core] codegen/stmt: Fix obtaining return type of sret functions
2024-08-29 19:15:30 +08:00
8c540d1033
[core] codegen/stmt: Add more casts for boolean types
2024-08-29 16:36:32 +08:00
0cc60a3d33
[core] codegen/expr: Fix missing cast to i1
2024-08-29 16:36:32 +08:00
a59c26aa99
[artiq] Fix RPC of ndarrays from host
2024-08-29 16:08:45 +08:00
9848795dcc
core/irrt: add exceptions and debug utils
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
2c88924ff7
core: add support for simple polymorphism
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
a8e92212c0
[core] codegen/expr: Implement string equality
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
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
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
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
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
6a64c9d1de
core/typecheck/typedef: Add is_vararg_ctx to TTuple
2024-08-06 11:45:54 +08:00