Repository navigation
Support the Match expression - #368
Merged
Merged
Conversation
Still needs to be able to check failures from an opcodes test
IsaacWoods
approved these changes
Oct 18, 2026
IsaacWoods
left a comment
Member
There was a problem hiding this comment.
Great, thanks for working on this Martin! An elegant approach to this and nice tests :)
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.
Add support for the
Matchexpression.This supports only integers in the "operand" positions, and only compares against actual integers in the packages. This seems to match a strict reading of the ACPI spec, where
Operandis defined to be an Integer. I'm told (but haven't checked) that these are the limitations imposed by the Windows NT interpreter as well.This PR works by adding a new argument resolution behaviour purely for the Match opcodes - they're a bit odd because they're raw (unprefixed) bytes in the middle of the expression, and two of the opcodes overlap with others (
MTRandMEQoverlaps withZerosandOnes, respectively)I've added a basic test to check that the newly parsed opcodes can't be used outside the Match context, plus plenty of other tests that the implemented behaviour matches (ho ho) the behaviour I've written above. The ASL
match.aslscript has also been checked against uACPI and ACPICA which give the same result.I haven't squashed the commit history and there's a few low-value commits, so if you're happy to merge then feel free to squash them @IsaacWoods
Isaac I'm pretty happy this is good to go - but I've put you as the reviewer in case you want a closer look