-
Notifications
You must be signed in to change notification settings - Fork 166
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
vsetvli
vector tail agnostic and vector mask agnostic operands are mandatory
#489
Comments
Section 6.1 has text and an example treating
I presume, then, that |
When lmul is absent, as in the instruction vsetvli t0, a0, e8, it implies that the vector register group multiplier (lmul) is set to 1. This default setting is consistent even when we explicitly define vsetvli t0, a0, e8, m1; the lmul value remains 1. However, for large-scale applications requiring different lmul configurations, the lmul value is tailored to meet the specific needs of the application. Masking Explanation |
I agree with the I contend, on the other hand, that |
I forgot to mention the ‘ta’ and ‘ma’ mandatory flags in the vsetvli setting.this flags are mandotory.
|
I think this makes a lot of sense. Additionally, @Alasdair we know that the assemble part (string -> AST) of the mapping has no semantic effect on the model and the only place the assembly side of the mapping would really be visible is in the JSON output for documentation. However, what about the disassembly part? Given that the binary values have two corresponding result mappings, how would the Sail simulator output the related disassembly instructions? If it outputs the default option, I think this issue falls into the same category as the previous one #21 . What do you think? |
Like any other kind of match it'll pick the first option that matches. |
In this case, this means that the disassembly part will never output the 'mu/tu', right? If so, I think this could indeed lead to some confusion when using Sail, as there's a discrepancy between Sail's output and what the RISC-V specification states. Therefore, I believe the default part may be removed, and deleting this part shouldn't have any significant impact on the model. |
debug: Test OpenOCD behavior when harts become unavailable, using new spike mechanism
In the RVV 1.0 spec, there is this text (in 3.4.3):
(I'm not sure why "adds" was used there.) The above text is complemented by a note:
Note that the vector tail agnostic and vector mask agnostic operands are mandatory.
I cannot find an analogous statement about the
lmul
operand, but given its position in the middle of the list of operands, it would seem reasonable to infer that it is also mandatory.Unfortunately, there are examples of
vsetvli
without these "mandatory" operands. In (6):in (6.1):
in (7.9):
In
model/riscv_insts_vext_vset.ml
, these operands are supported as optional:I believe a spec-conforming Sail implementation should not have the "by default" cases in the "maybe" functions (and the "maybe" functions should be renamed to remove the "maybe").
(@XinlaiWan?)
The text was updated successfully, but these errors were encountered: