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.
The stage 1 IR (or HIR), is a sea-of-nodes style, SSA form intermediate representation. It is intended to be a target from higher level languages, so it supports a wider array of operations and control flow than is supported in MASM (and in the stage 2 IR), but provides a useful foundation on which to perform the necessary analyses and transformations in order to lower to MASM.
This commit introduces the basic infrastructure for the IR, namely the minimum data structures necessary to represent functions in the IR, which are composed of blocks containing one or more instructions in a specific order. The set of instructions defined is based on what is provided in MASM, as well as what is needed to represent programs written in Sway or Move (barring some features which we can not yet support in Miden).
Follow on commits will flesh out the IR builder, introduce modules, provide textual output for debugging, and implement control flow and dominator tree analyses.