Commit Graph

123 Commits

Author SHA1 Message Date
9d80d94244 mie: add index dialect 2026-01-04 18:57:38 +00:00
3c2ca0f70e mie: builtin: add string type 2026-01-04 18:57:13 +00:00
aad2cad0a8 mie: add structure to represent primitive values 2026-01-04 18:56:43 +00:00
8b3093411a mie: arith: add support for int and float values 2026-01-04 18:56:03 +00:00
7c7e5e7af0 mie: add more dialect definition macros 2026-01-04 18:54:06 +00:00
9126edfd57 mie: ctx: implement generic (non-parametised) type initialisation 2026-01-04 18:42:12 +00:00
3c9506256d mie: arith: implement int value cache data structure 2026-01-04 18:36:33 +00:00
add09d4958 mie: add data structures to represent type-instances
unlike values, type-instances represent specialisations of parametised types.
they behave like concrete implementations of C++ template types.

for example: arith.int represents an integer type of unspecified bit-width.
a type-instance of this type would be arith.int<32> (or i32 for short) which
has a defined width of 32 bits.
2026-01-04 14:10:52 +00:00
7b6ce3bf6e mie: add dialect data structures, and some builtin dialects 2026-01-04 14:10:43 +00:00
79ab1c175b mie: add IR data structures 2026-01-04 14:10:13 +00:00
0dce84cb7f mie: add macros for defining dialect and dialect types/ops 2026-01-04 14:09:55 +00:00
2e22898fc8 mie: ctx: implementing registering dialects and type-instances 2026-01-04 14:09:31 +00:00
86005451cb mie: parse: implement more IR-parsing functions 2026-01-04 14:08:57 +00:00
21bcbb7edc mie: add a namespace/uuid-based map data structure
rather than a traditional dictionary or hashmap, this data structure supports a one-to-one
mapping between a UUID and a value. this is an intrusive data structure like mie_name_map
(a value struct must include an instance of mie_id), but this one does not support name collisions.

mie_id_map generates and issues UUIDs based on a name provided by the caller. All UUIDs are v5,
meaning they are generated using a SHA1 hash of a namespace UUID (specified when the mie_id_map
is initialised), and a unique name provided by the caller.

mie_id can also be used standalone to generate, store, and stringify UUIDs.
2026-01-04 14:03:22 +00:00
915cf836f2 mie: add macros for defining and using resizable vectors 2026-01-04 14:02:14 +00:00
f9a2cf3b8e mie: remove all legacy ir and select code 2025-12-21 13:51:26 +00:00
6573360656 mie: start implementing new ir parser 2025-12-21 13:51:07 +00:00
fabbe35483 meta: add readme, licence, and logo 2025-11-16 20:48:54 +00:00
9b2dc1d49c vim: add support for new extensible syntax 2025-11-16 20:09:20 +00:00
612a6feac2 doc: sample: add examples of new extensible syntax 2025-11-16 20:09:06 +00:00
f0bb29a11a meta: split into independent repo; add build system, frontend 2025-11-16 20:07:29 +00:00
cfcdcd9cea mie: select: implement branch operation processing 2025-11-15 22:47:47 +00:00
229d948850 mie: select: implement comparison operation processing 2025-11-15 22:46:54 +00:00
be7d321755 mie: select: track all side-effect-chains in a graph; support combining them all 2025-11-15 22:42:57 +00:00
39f9f6800e mie: builder: fix incorrect result type for comparison operations 2025-11-15 22:35:24 +00:00
b1bab9ce29 mie: select: add filename parameter to graphviz dump function 2025-11-15 22:34:16 +00:00
5bf893651e mie: update bluelib api usage 2025-11-06 10:38:50 +00:00
7c1e7e21a9 mie: select: add support for target-specific nodes and lowering operations 2025-09-08 15:42:22 +01:00
225968e94e mie: target: add result output to ir lowering callbacks 2025-09-08 15:41:50 +01:00
3a8a3b59f0 mie: ir: add helper function to check if a value is a selector 2025-09-08 15:40:33 +01:00
8c13fb88c0 mie: implement simple type comparison 2025-09-08 15:39:55 +01:00
5a56566939 mie: add some more status codes 2025-09-08 15:39:41 +01:00
6b62e81ac0 mie: ir: implement generation and text output of phi instruction 2025-09-08 15:35:35 +01:00
e44af45bc3 mie: add null IR value 2025-09-08 15:33:25 +01:00
71fe8bd5b0 mie: implement instruction selection graph generation for binary ops and load/store 2025-08-29 15:46:52 +01:00
1901a8ae3b mie: move mie_type_to_string to type.c 2025-08-29 15:46:12 +01:00
7191de80ae mie: add a stub instruction selection system 2025-08-16 20:57:43 +01:00
3931a1e980 mie: add status codes 2025-08-16 20:56:40 +01:00
d8f4f319e9 mie: name: add a mie_name destructor that removes it from its parent name map 2025-08-16 20:54:05 +01:00
44e242615b mie: move mie_ctx out of the ir subsystem 2025-08-16 20:53:40 +01:00
9ad4b91eaf mie: refactor ir api into a separate sub-directory 2025-06-02 11:31:19 +01:00
7aaef1f870 mie.vim: add comparison and branch instruction highlighting 2025-04-28 15:51:53 +01:00
2469967d23 mie: implement comparison and branch instruction generation 2025-04-28 15:41:31 +01:00
fe2a2e0b2c mie: ctx is now used to query the type of a value
this allows value get_type callbacks to use mie_ctx to obtain mie_type pointers,
rather than having to define their own static versions of the type structs.
2025-04-28 15:40:32 +01:00
8a70eef607 mie: convert: text-write write_operand_func now treats func references as pointers 2025-04-24 09:24:15 +01:00
f821a19b93 mie: convert: implement record text conversion 2025-04-23 15:44:17 +01:00
9ef8122767 mie: implemented array value type; restructure const value structures
there are now separate structs for all const types (int, string, etc),
rather than a single mie_const union.
2025-04-23 15:42:58 +01:00
7582fba76c mie: add comma separtor between func arg text output 2025-04-22 21:32:12 +01:00
a54cc8b7ca mie: add strict-naming support to mie_name_map
in strict mode, the hint is taken as the required name. if a value already
exists with the given name, the operation fails.
2025-04-22 15:21:30 +01:00
bdf3115b07 mie: convert: add support for converting more value types 2025-04-22 15:20:43 +01:00