-
Notifications
You must be signed in to change notification settings - Fork 1
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
Review of v0.12 #7
Comments
Good points, thank you very much for the review! Regarding this one:
I somehow want to emphasize that it's "just" adding the same operations as are already defined for RV64, like the next line says that a future RV64 extension could enable the 128-bit load/store operations form RV128. Regarding your second point: would this look better?
Currently proposed instructions
Interesting points, I think we should hear from @aswaterman or someone else if this is a problem or not. Regarding Future RV64 instructions this kind of footnote could work, but after the points raised in #6 and riscv/riscv-isa-manual#1048 (comment) I'm a bit scared that pushing for these RV128 LQ/SQ operations to be defined could make it harder to get ratified (or at least fast-tracked). Regarding |
My point was to start with the general. The goal is load store pair instructions. the fact that we are reusing currently reserved encoding space, is already the how, so i would pack it in a second sentence.
I would say that load store pair is a new operation. It is definitely a new instruction.
Different ISAs handle such things differently. Arm will define a load store instruction, and define different operations for that. In RISC-V the compressed encodings have different instruction names as their uncompressed encoding. On the other hand, looking at Z{f,d}inx, no new instruction names were given, the operation is different. I think Z*inx is the better precedent, so this would actually suggest to stick with reusing the instruction names.
I would keep it in. If somebody has a strong opinion it shouldn't be there, you drop it. 32-bit pairs are what matters, the other thing is rather for saving work in the future in case it would be needed, or somebody finds it useful.
I am of the opinion that compressed encoding for 64-bit pairs are not as important, and shouldn't overlap with F/D encodings. |
with the purpose of enabling load/store operations with even-odd register pairs.
I would say it does. It defines new instructions in currently reserved encodings
Currently proposed instructions
You should be explicit about the encoding that these instructions use.
I think we need to give the instructions a real name, I am not sure if it would be ok to have two instructions with the same name which do somethign different wether its RV32/64.
Some brainstorming:
LW.D (load word double) - sort of inline with the proposed P specification, there the .D suffix is used for pair operations (RV32)
then you would define LD.Q for RV64.
Future RV64 instructions:
I wouldnt say this is future, I would just state in a footnote that the encoding these instructions reuse is not yet defined.
(Optional) compressed encodings
You might have to define Zcild extension for this.
Hm, gets more and more interesting. I think the chance of having an RV64 system with pair support and without floating point unit is relatively low. Almost
The text was updated successfully, but these errors were encountered: