bf8c966c03
mie: ir: builder: add mie_emitter support
2026-01-25 14:53:24 +00:00
7d30e8f3ff
mie: ir: add an emitter interface for emitting IR constructs
...
mie_emitter can be inherited from by any structure that supports
emitting IR constructs like Ops and Blocks. Dialect Op emitter
functions can wrap mie_emitter to simplify emitting specific Ops,
and these functions can then be used with any struct that inherits
from mie_emitter.
2026-01-25 14:51:36 +00:00
e9d2c0fbc7
mie: scf: implement lots of print and emit functions
2026-01-23 23:33:16 +00:00
a710ef0b24
mie: func: implement lots of print and emit functions
2026-01-23 23:22:57 +00:00
0277931ca1
mie: builtin: implement lots of print and emit functions
2026-01-23 23:22:47 +00:00
ac7860b6bd
mie: ir: rewrite: add pattern and rewriter interface
2026-01-23 23:21:42 +00:00
29984307aa
mie: pass: support filtering passes to any op of a given dialect
2026-01-23 23:21:16 +00:00
ac96248d7e
mie: ir: builder: support adding names to non-isolated op regions
2026-01-23 23:19:29 +00:00
593eda2797
mie: trait: table: fix get_unique() unboxing the wrong pointer
2026-01-23 23:17:39 +00:00
d0ac8a9fed
mie: ir: walk: re-implement walker with a stack rather than a queue
2026-01-23 22:50:05 +00:00
89ebbcc462
mie: parse: replace all op-creation with mie_block_add_op calls
2026-01-23 22:42:39 +00:00
554a1e7342
mie: ir: op: keep a pointer to the block that contains the op
2026-01-23 22:42:05 +00:00
6d1e308ff1
mie: ir: op: only create a name map if the op is isolated-from-above
2026-01-23 22:41:03 +00:00
58bd336eb8
mie: dialect: add emitter functions for various ops
2026-01-21 14:42:22 +00:00
008966e046
mie: ir: add ir builder interface
2026-01-21 14:40:22 +00:00
83343a5eea
mie: ir: block: add function to create block parameters
2026-01-21 14:39:56 +00:00
76166167c9
mie: builtin: improve int attribute print callback
2026-01-21 14:39:12 +00:00
f6f6131f52
mie: builtin: add function to create mie_type_attr instances
2026-01-21 14:38:01 +00:00
33f9ccd871
mie: ir: register: implement moving and cleanup of mie_register_use
2026-01-21 14:36:24 +00:00
0c4ebe7f39
mie: ctx: add function to create ops
2026-01-21 14:17:43 +00:00
72de4ce845
mie: ir: op: add function to add op arguments
2026-01-21 14:15:02 +00:00
937dc57c4e
tool: validate: resolve op definitions; run test pass
2026-01-19 14:00:25 +00:00
b8c0d139a8
vim: update type and attribute prefixes
2026-01-19 14:00:04 +00:00
abf43a9022
doc: update ir sample files
2026-01-19 13:59:43 +00:00
4700ce7778
build: bump minimum CMake version
2026-01-19 13:59:14 +00:00
95c51045b6
meta: update clang-format config
2026-01-19 13:59:00 +00:00
e62c9c4775
mie: ir: add stub rewriter interface
2026-01-19 13:58:24 +00:00
a97678a1c2
mie: add stub memref dialect
2026-01-19 13:58:12 +00:00
5e13824706
mie: add parent pointers to region and block; two-way link between a register and its users
2026-01-19 13:57:25 +00:00
da140ed0d1
mie: parse: remove duplicate sub-parsers in parse_generic_op
2026-01-19 13:52:21 +00:00
cb3d37043c
mie: update b_bstr usage
2026-01-19 13:51:27 +00:00
55161cd6c8
mie: re-implement vectors of blocks and registers using vector move callbacks
...
vector move callbacks allow mie_name instances to be stored in movable memory,
as the internal bst pointers can now be fixed during vector resize operations.
2026-01-18 22:58:17 +00:00
759aaf9fd8
mie: vector: add copy- and move-constructor support
2026-01-18 21:52:39 +00:00
04af390fe8
mie: pass: add a group of builtin passes
...
right now, the group only contains a single pass: prefix-func-with-underscore.
this is a test pass that visits instances of func.func and prepends
an underscore to the func's symbol name.
2026-01-18 21:19:15 +00:00
0add39f304
mie: implement a pass system
...
passes allow defined units of functionality to be applied
on an IR structure. the pass manager can be used to schedule
passes at certain depths of the IR structure and/or on or within
certain types of ops (or ops that have certain traits/interfaces).
2026-01-18 21:17:44 +00:00
429ec770b5
mie: attribute: map: implement REPLACE flag in put()
2026-01-18 21:16:28 +00:00
092c9969cf
mie: add NAME_EXISTS status code
2026-01-18 21:16:10 +00:00
6fcc3c8edd
mie: ir: op: add functions to query a certain trait or interface
2026-01-18 21:14:50 +00:00
d335cd9823
mie: ir: walk: walk is no longer recursive by default
2026-01-18 20:27:55 +00:00
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
3ba20e5ed4
mie: print: add more functions to printer interface
2026-01-17 10:27:23 +00:00
f19dfaa050
mie: ctx: fix mie_ctx_resolve_op not checking op-definition pointer properly
2026-01-17 10:26:37 +00:00
2869e98556
mie: builtin: add function to get int/float value from an attribute
2026-01-17 10:25:49 +00:00
b289c6e2de
mie: ir: op: add function to get type from mie_op_arg
2026-01-17 10:22:38 +00:00
fd72d217f6
mie: ir: implement a walker interface for traversing ir structures
2026-01-17 10:21:58 +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