Commit Graph

25 Commits

Author SHA1 Message Date
c014895051 mie: func: add return op 2026-01-17 10:31:52 +00:00
76477be5bd mie: arith: add cmpi and constant ops 2026-01-17 10:31:39 +00:00
ee9e2d3050 mie: arith: implement op printer callbacks 2026-01-17 10:31:08 +00:00
e5ecdd40e8 mie: cf: implement op printer callbacks 2026-01-17 10:29:47 +00:00
c410e0a6e3 mie: builtin: implement op printer callbacks 2026-01-17 10:28:51 +00:00
2869e98556 mie: builtin: add function to get int/float value from an attribute 2026-01-17 10:25:49 +00:00
e1f7f46d3e mie: ir: replace mie_module ir object with a builtin generic "module" op
the builtin.module op behaves exactly like any other op, and is designed
to be a container for other ops of any type. it can be used as the
top-level container for other ops (other top-level containers can be used
instead).

this also changes the file format. now, an ir file can only contain a
single top-level op. any other ops in the ir must be contained
directly or indirectly by this top-level op.
2026-01-16 10:01:19 +00:00
65905bc55b mie: implement support for custom op print formats 2026-01-15 14:20:13 +00:00
3c4af9c26e mie: builtin: initial implementation of a symbol system
the symbol system will allow ops to reference each other via symbolic
names, rather than just via their SSA output registers. this will
allow for links between ops that are less strict than SSA.

the two parts of the system are:
- the symbol-table trait. ops with this trait can contain symbol ops.
- the symbol interface. ops with this interface have the necessary attributes
  to be treated as symbols.
2026-01-14 18:21:28 +00:00
11fc7a6ca9 mie: implement an interface system for ops
this system allows dialects to register named interfaces, which are collections of function
pointers. an op can then implement this interface, providing callbacks for the interface's
virtual function pointers.

C code can request a pointer to an op's implementation of a given interface and call
virtual functions with no knowledge required about the op itself. this functonality
will also be extended to types, attributes, and dialects themselves.
2026-01-14 18:17:38 +00:00
50f4be621b mie: move all builtin types (int, float, index, etc) and attributes to the builtin dialect 2026-01-14 09:45:14 +00:00
da630ce382 mie: replace fixed value system with an extensible attribute interface
under this new system, dialects can define their own custom attributes,
complete with their own print() and parse() callbacks, which can then be
used as values in an op's attribute dictionary.

alongside custom dialect attributes, the former int, float, and string
constant values have been converted to attributes provided by the
arith and builtin dialects respectively. the caches for these attributes
have also been moved from mie_ctx to their respective dialect data
structures.

this system will allow new types of attributes to be implemented,
including dictionaries, arrays, and references to types themselves
(rather than just particular values of a given type).
2026-01-13 22:37:43 +00:00
3aad8fd4a3 mie: index: cache: fix cache entries not being initialised correctly 2026-01-12 10:36:32 +00:00
49df8616a8 mie: implement a printer system for converting IR to textual form 2026-01-12 10:33:08 +00:00
fdf46b8867 mie: add select dialect 2026-01-11 14:48:30 +00:00
417b5dc354 mie: builtin: add isolated-from-above trait 2026-01-11 14:38:28 +00:00
6e55642a19 mie: arith: add support for querying the width of int/float types 2026-01-11 14:23:10 +00:00
0c84578f95 mie: add support for caching float values 2026-01-11 14:17:45 +00:00
e76e7c17db mie: move op and type definition from dialect/ to ir/ and type/ respectively 2026-01-08 22:16:50 +00:00
344626f207 mie: type: move all function pointers from mie_type to mie_dialect_type 2026-01-08 19:00:13 +00:00
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
8b3093411a mie: arith: add support for int and float values 2026-01-04 18:56:03 +00:00
3c9506256d mie: arith: implement int value cache data structure 2026-01-04 18:36:33 +00:00
7b6ce3bf6e mie: add dialect data structures, and some builtin dialects 2026-01-04 14:10:43 +00:00