-
Notifications
You must be signed in to change notification settings - Fork 311
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
Conflicts with shared opcodes #146
Comments
Note this isn't the only problematic case: for example, the Zcmt extension overlaps the double-precision FP instructions in the C extension. I think the |
This reverts commit c532daf because of a limitation that blocks adding Zvk instructions (vector cryptography) that conflict with instructions in the P (packed SIMD) extension. Bug tracking this issue: riscv#146 Signed-off-by: Eric Gouriou <[email protected]>
So when you say "mutually-exclusive extensions" I am assuming that those extensions can never exist together in hardware. This would also mean that those extensions don't occur together in the ISA string. Please correct me if am wrong. @kdockser the quickest solution is to modify the EXTENSIONS variable in the makefile here. You can basically list out (space separated) all the extensions you want the script to parse. Each of those entries in the list are treated as regex so it shouldn't be tough to get what you want. This should allow you to bypass the above error quickly. The long term solution here is to use $pseudo_op (as defined in this section). One of conflicting extensions will have the entire encoding for some base instruction, while in the other extension you will do a pseudo_op of this base instructions. For pseudo_ops the encodings can remain the same. So when both these conflicting extensions occur the pseudo_op will be dropped. Based on which extension needs priority you can decided where the base instructions go. |
Yes, that's right. |
I found several RISC-V ip cores support both P and V extensions, eg: https://www.nucleisys.com/product/rvipes/900/ |
There's no such thing as an extension called "P" currently; there are only proposals. Vendors claiming support for "P" are claiming support for something that isn't a RISC-V standard. So it isn't really relevant. (Note also it is possible for implementations to support conflicting extensions using a mode switch.) |
Since the P and V extensions have overlapping functionality, yet are largely suited to different application domains, they are considered mutually incompatible. This avails each extension of the other's major opcode without concern of collision.
As allowed, the proposed Vector Crypto encodings overlap with some of the proposed Packed-SIMD encodings. We are getting conflicts when we run the python script in riscv-opcodes (with crypto opcodes in our own branch):
Right now both of these extensions are in unratified/rv*, but eventually they will be ratified.
@neelgala We need a means to tell the script which extensions' encodings should be processed and which should be ignored when the opcodes are reused in mutually exclusive extensions.
The text was updated successfully, but these errors were encountered: