Conversation
Fix LSLS register shift behavior to set N and Z shift is zero and to compute carry from the shifted-out bit instead of reusing the previous C flag. Add missing LSRS implementations: - LsrsImm5 for shifts 1-31 - LsrsImm32 for #0 (treated as shift 32/zero result) - LsrsRegister for register-specified shifts These changes ensure correct N, Z, and C updates for logical shift right/left operations, handle the zero-shift fast path, and compute carry bits safely for edge cases (shift >= 32).
Add support for LSRS register and immediate-32 encodings and register the LSRS immediate-5 opcode. Reorder the LSLS zero rule to maintain correct matching precedence among shift instructions. Why: - LSRS (register) T2 missing and is now mapped to BitOps.LsrsRegister, enabling register-based logical right shifts. - A special LSRS imm #32 case is handled via BitOps.LsrsImm32 to match ARM semantics for a shift of 32 producing defined results. - LSRS immediate-5 is added so immediate-form logical right shifts decode correctly. - LSLS zero rule is moved after the register forms to ensure more specific encodings are matched first and avoid accidental trapping of other shift encodings.
Add two new helper emitters to InstructionEmiter: LsrsImm5 and LsrsRegister. LsrsImm5 encodes the logical shift right (immediate) variant with a 5-bit immediate and validates low-register indices and immediate range. LsrsRegister encodes the register-specified LSRS form and validates low-register indices. These helpers mirror existing shift encoders, provide consistent argument validation, and enable emitting LSRS instructions from higher level code.
Extend bitwise shift instruction tests to cover missing edge cases and ensure correct decoder/test table entries. - Add LSRS instruction entries to InstructionDecoderTests to include immediate, immediate-as-32, and register forms in the decoder test matrix. - Convert Lsls test class to abstract so both immediate and register variants can coexist and be extended. - Add new Lsls register tests: - verify result is zero and carry cleared when shifting by > 32 - verify shift-register operand is interpreted as an unsigned byte - Add a new Lsrs test class with immediate-mode tests: - basic right shift behavior and PC update - immediate 0 interpreted as logical shift by 32 - explicit carry behavior when a 1 is shifted out - shift by maximum immediate (31) coverage These changes improve coverage for shifts (LSL/LSR) and catch corner cases around shift widths and carry flag behavior.
Expand GitHub Actions matrix to include self-hosted runner and prevent the workflow from failing fast so all matrix jobs run. Add conditional step to add .NET global tools to PATH on the self-hosted runner, fixing missing tool availability when using self-hosted agents. Update job name to show the selected runner.
…it Actions unit-tests by collapsing the runner matrix into a single `runs-on` array and removing the explicit matrix strategy and runner name. This reduces workflow verbosity while preserving execution on both `ubuntu-latest` and `self-hosted` runners.
Remove conditional "Self-Hosted fix" check from the GitHub Actions test workflow and rename the step to "Add .NET tools to PATH". The step now always appends the .dotnet tools path to GITHUB_PATH instead of running only for self-hosted runners. This ensures the dotnet tools path is consistently available regardless of runner type and reduces conditional complexity in the workflow.
Change the GitHub Actions workflow to use the hosted ubuntu-latest runner instead of an array included self-hosted. Remove an unnecessary step that attempted to add .NET global tools to PATHsince the workflow does not rely on that step and dotnet tools are not required for the scanner installation in this context. This simplifies runner selection, avoids accidentally scheduling jobs on self-hosted machines, and cleans up redundant steps to make the CI flow clearer and more robust.
|
lmSeryi
approved these changes
Feb 9, 2026
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.



Description
Type of change
Checklist
dotnet test)Screenshots / Hex Dumps (Optional)