Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add RVC HINT/RES/NSE encs & rework disassembly #56

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

elliotb-lowrisc
Copy link
Contributor

Add explicit HINT, Reserved, and NSE compressed instruction encodings from the spec.
This allows Templates to more easily specify these special encodings and enables more accurate disassembly.
Note that some encodings overlap.

Add new instruction disassembly pretty printer functions for special cases where the operands are uninteresting or ambiguous.

Rework the disassembly to account for overlapping encodings. Use XLEN, when available, and carful ordering to distinguish overlapping encodings from each other.
Present both encodings when encodings overlap and XLEN is not available.

Integrate new disassembly so that XLEN will be passed through when known (currently only for RVFI V2 packets).

Minor errors may remain.
Caution only goes so far when there are so many fiddly changes required.

Add explicit HINT, Reserved, and NSE compressed instruction
encodings from the spec.
This allows Templates to more easily specify these special encodings
and enables more accurate disassembly.
Note that some encodings overlap.

Add new instruction disassembly pretty printer functions
for special cases where the operands are uninteresting or ambiguous.

Rework the disassembly to account for overlapping encodings.
Use XLEN, when available, and carful ordering to distinguish
overlapping encodings from each other.
Present both encodings when encodings overlap and XLEN is not available.

Integrate new disassembly so that XLEN will be passed through when known
(currently only for RVFI V2 packets).

Minor errors may remain.
Caution only goes so far when there are so many fiddly changes required.
Copy link
Member

@marnovandermaas marnovandermaas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together. Very useful work! Do you have any instructions on how to test this PR?

@elliotb-lowrisc
Copy link
Contributor Author

No tests currently use the new instructions, but you can try out the new disassembly using something like:

make QCVEngine
utils/scripts/runTestRIG.py -a sail -b sail -r rv32ic --test-include-regex "^compress" -v3 -n2 

Note that a generic disassembly will be used for the plain instruction listing at the end, but a more precise (XLEN-aware) disassembly will be output when the RVFI packets are being compared.

@elliotb-lowrisc
Copy link
Contributor Author

@PeterRugg I'm not sure how this fits in with your ongoing work, but hopefully it can be of some use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants