Skip to content

canonicalize µIR->µhIR hand-off#10

Merged
JoGei merged 24 commits into
masterfrom
feat/canonicalize
Apr 17, 2026
Merged

canonicalize µIR->µhIR hand-off#10
JoGei merged 24 commits into
masterfrom
feat/canonicalize

Conversation

@JoGei

@JoGei JoGei commented Apr 17, 2026

Copy link
Copy Markdown
Owner

JoGei added 24 commits April 17, 2026 12:57
Introduce a `canonicalize` optimization pipeline alias for pruning functions
and canonicalizing loops, including CLI help and expanded error messages.
Tag lowered control nodes as loop or branch so loop optimization only picks
real loop branches, preserve predicate data dependencies, and emit typed const
literals during µglIR lowering.
Record lowered function parameters and types on procedure source nodes, then
reuse those declarations for µglIR external operands and µhIR interpreter
procedure signatures. This avoids relying on inferred operand discovery when
procedure inputs are known from the original function.
Clone reused child region subtrees so each call or hierarchy owner has a
distinct scheduled instance, with remapped region refs, nodes, edges, mappings,
and attributes. Mark shifted child regions as using the global timebase so
later binding and FSM lowering preserve their scheduled offsets.
…g executability model from provided ressources which define input/output contract of supported operators. alloc then shall insert explicit adaptor nodes.
…, and trunc operations to aid interfacing with semantic ops and executable FUs
Teach memory allocation to infer typed load/store plans from resident word
types, materializing address and data adapters where needed while rejecting
memrefs whose logical element type does not match the selected word type.
Annotate generic and IHP SRAM library entries with memory operand types and
update tests for typed load/store allocation.
Track a separate conflict interval for value coloring so flattened binding
does not coalesce registers whose capture cycles can overlap before their
logical consumer live ranges begin. Keep emitted live intervals unchanged and
add coverage for distinct parent/child capture conflicts.
Stop forwarding through identity handoffs when a mov result has already been
captured and later consumers need the materialized alias register.
Add µglIR coverage for a late consumer that must read the mov alias register instead of
the original producer register.
Resolve static child call returns through value bindings before falling back to producer outputs, and normalize mapped producer IDs when finding capture steps. Add regression coverage for late parent consumers of mapped child return values.
Track the FSM steps where loop-carried phi operands actually update, and feed the carry register through its latch on completion steps without a new value. Add hierarchical unroll coverage and
fix missing automatic truncation and widening support from the executability model
- [x] fix issue #8
- [x] fix issue #12
@JoGei
JoGei merged commit b940ba8 into master Apr 17, 2026
20 checks passed
@JoGei
JoGei deleted the feat/canonicalize branch April 17, 2026 15:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant