b5fa40d4d8
mie: tool: add command to run optimisations on an input IR file
2026-01-25 15:12:07 +00:00
a67e4b6688
mie: tool: validate: remove functionality that was moved to internal subcommands
2026-01-25 15:11:06 +00:00
5873326138
mie: tool: split internal command into several different subcommands
2026-01-25 15:10:23 +00:00
00152cac56
mie: convert-scf-to-cf: implement if match/rewrite using new interface
2026-01-25 15:08:19 +00:00
287983fa95
mie: implement a full rewriter with pattern-matching and rewriting support
...
the new rewriter interface supports running patterns over an Op's children
matching Ops that conform to a pattern, and rewriting Ops in arbitrary ways.
2026-01-25 15:06:43 +00:00
8cdbf5389c
mie: pass: manager: update mie_walker usage
2026-01-25 15:05:44 +00:00
00c7c3d5ea
mie: parse: update parse_region_list to use new Op->Region linking mechanism
2026-01-25 15:05:18 +00:00
9e546ee32f
mie: name: fix crash when destroying a zeroed mie_name
2026-01-25 15:04:37 +00:00
00ba3a3d87
mie: print: implement exception-printing of resolved, but null, op args
...
this is to make it easier to spot mistakes made when modifying IR.
2026-01-25 15:02:48 +00:00
d44bc8c5c0
mie: ir: op: fix crash when checking if an unresolved op is isolated
2026-01-25 15:02:17 +00:00
a22e95d88d
mie: ir: op: add functions to check what an Op is, and add successors with args
2026-01-25 15:01:41 +00:00
0a791fdfb2
mie: dialect: update Op emitter functions to use mie_emitter
2026-01-25 15:00:37 +00:00
fe511011ec
mie: ir: walk: implement non-recursive traversal
...
struct mie_walker is now a public struct that can (and should) be stack
allocated. this means that non-recursive traversal of an Op's children
uses no dynamically allocated memory.
2026-01-25 14:58:51 +00:00
e8534f8d70
mie: ir: Op->Region, Region->Block, and Block->Op lists are now b_queues rather than mie_vectors
...
this change has two key benefits:
1. we no longer need to allocate large contigious buffers for Regions with lots
of Blocks, or Blocks with lots of Ops.
2. this simplifies re-arranging, inserting, and moving parts of the IR structure.
2026-01-25 14:56:47 +00:00
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