Support HW structs - #13
Open
PetrifiedPanda wants to merge 45 commits into
Open
Conversation
…ded simple handling for struct types
…rently only for scalar registers, not register files
…ot register files)
…registers and to see whether all struct operations are canonicalized out
…e get and set operations with indices)
…s of non-signless types. This fixes an error happening in longnail when inlining a function of a struct type. The canonicalizer tries to insert a hw.constant op if the struct members are constants. It does not respect signedeness, which causes this error
PetrifiedPanda
marked this pull request as draft
August 18, 2026 09:28
…new one in each function call, and formatting
…arate function, as it was needed by both Get and Set ops. (Also had different behaviour, so this unifies the behaviour for both)
…at is larger than maxIndexWidth
…se is impossible, because the op would be invalid if base was larger than maxIndexWidth
…d added a comment explaining why we need it
…exploding itself and is used in places where we are not exploding the structs
PetrifiedPanda
marked this pull request as ready for review
August 31, 2026 11:54
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.
Added support for the !hw.struct types. This is supported by exploding struct typed registers into separate scalar registers, which required loosening the type restrictions on register operations. To remove the hw struct operations, the canonicalizer in combination with exploding struct registers is sufficient.
Another necessary change was adding a canonicalization pattern that legalizes hw.constants of non-signless types to hwarith.constant.