Open
Conversation
This commit is a cherry-pick of only the Zcb extension from Jonathan Jonssons's commit: 5e72708 Zcb (code reduction): since no gcc support is in the mainline assembler yet these instructions are injected as raw data. Coverage class has been extended with these instructions and the illegal instruction class should not be able to generate legal Zcb instruction if the extension is enabled. load_store_instr_lib: Added the Zcb load and store instructions to this class. Co-authored-by: Samuel Riedel <sriedel@lowrisc.org>"
Those registers overwrite registers other than the `rd` register. This can lead to infinite loops. This ensures that we don't use any loop registers for all registers modified by those instructions.
13 tasks
Merged
Since the push/pop instructions have so many side effects, test them in a dedicated instruction stream. This class builds blocks of push and pop instructions, which operate withing a given stack size. Multiple such blocks are generated and linked in a random order. To jump between these blocks, we use the popret/popretz instructions.
4c21f55 to
71ceff7
Compare
hcallahan-lowrisc
approved these changes
Mar 10, 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.
This PR adds support for the Zcmp extension, which introduces
cm.push/popand double move (cm.mv) instructions.Because the push/pop instructions modify multiple registers and have significant side effects, this PR implements a specialized test class to generate valid sequences in a dedicated instruction stream. This class builds blocks of push and pop instructions that operate within a given stack size. Multiple blocks are generated and linked in a random order, using
popret/popretzinstructions to jump between them.Note: This PR depends on PRs #1024 and #1025 and should be rebased and merged after they land. New changes from this PR: review only new commits
Those tests are used in Ibex's verification: lowRISC/ibex#2324