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

C.S{LL,RL,RA}I64 are never actually defined in prose #1542

Open
nwf-msr opened this issue Jul 17, 2024 · 1 comment
Open

C.S{LL,RL,RA}I64 are never actually defined in prose #1542

nwf-msr opened this issue Jul 17, 2024 · 1 comment

Comments

@nwf-msr
Copy link

nwf-msr commented Jul 17, 2024

Looking at 982eac4, at a glance, the only occurrences of the string "SRAI64" in the specification document are in table 40 of §28.7 and figure 4 of §28.8. Reading across the lines, as it were, one can conclude that C.SRAI64 is meant to be a reference back to §28.5.2 ("For RV128C, a shift amount of zero is used to encode a shift of 64.") but this isn't made explicit, and the use of a RV128C-specific mnemonic to refer to bit patterns even in RV{32,64}C is at least a little confusing.

Prior to having this understanding, I thought that table 28 in §28.7 failed to mention the C.SRAI shamt=0 hints defined in §28.5.2 ("For RV32C and RV64C, the shift amount must be non-zero; the code points with shamt=0 are HINTs."), but these are exactly the C.SRAI64 encodings that are enumerated.

Similar observations hold for C.SLLI64 and C.SRLI64.

@aswaterman
Copy link
Member

These are RV128 instructions. RV128's definition is incomplete and probably should be removed from the spec, with the exception of the placeholder chapter describing the rough intent. If that were to happen, C.SLLI64 et al. would be removed at that time.

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

No branches or pull requests

2 participants