canonicalize µIR->µhIR hand-off#10
Merged
Merged
Conversation
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
…consumable by alloc for explicit adaptors
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.