-
Notifications
You must be signed in to change notification settings - Fork 204
Add support for Zhinxmin extension #753
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
base: master
Are you sure you want to change the base?
Conversation
6f90bb9
to
2374c9a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! Would be cool to get this in!
@@ -7,6 +7,7 @@ | |||
/*=======================================================================================*/ | |||
|
|||
function clause currentlyEnabled(Ext_Zhinx) = hartSupports(Ext_Zhinx) & currentlyEnabled(Ext_Zfinx) | |||
function clause currentlyEnabled(Ext_Zhinxmin) = (hartSupports(Ext_Zhinxmin) & currentlyEnabled(Ext_Zfinx))| currentlyEnabled(Ext_Zhinx) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
function clause currentlyEnabled(Ext_Zhinxmin) = (hartSupports(Ext_Zhinxmin) & currentlyEnabled(Ext_Zfinx))| currentlyEnabled(Ext_Zhinx) | |
function clause currentlyEnabled(Ext_Zhinxmin) = (hartSupports(Ext_Zhinxmin) & currentlyEnabled(Ext_Zfinx)) |
I looked through the specification but couldn’t find anything indicating that Zhinx enables Zhinxmin.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the same approach we took for Zfh and Zfhmin. Zhinx includes everything in Zhinxmin, so we gate the relevant instructions on Zhinxmin and enable Zhinxmin if Zhinx is enabled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, I don't know if this is a good approach to turn on extensions silently. Whats the advantage of enabling Zhinxmin automatically when Zhinx is active, given that Zhinx already includes all those instructions? Wouldn't it be cleaner to keep each extension's enabled status independent?
This may be confusing for the reader.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's been a lot of discussion surrounding these extensions where one implies another. See riscv/riscv-isa-manual#1121 and riscv/riscv-isa-manual#869 for a discussion about M/Zmmul. Right now, we do this for a number of other extensions (Zfhmin, Zmmul, possibly a few others), so I'd be in favor of keeping it consistent in this PR and we can open an issue to potentially change all of them later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah I agree, lets keep it and handle this in a separate PR.
Adds support for the Zhinxmin extension. Will need to be properly hooked up to the config system once that is implemented.