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

Disallow VTYPE=VILL #454

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions riscv-cc.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ duration in accordance with C11 section 7.6 "Floating-point environment

| v0-v31 | | Temporary registers | No
| vl | | Vector length | No
| vtype | | Vector data type register | No
| vtype | | Vector data type register | No (but never `VILL`)
| vxrm | | Vector fixed-point rounding mode register | No
| vxsat | | Vector fixed-point saturation flag register | No
|===
Expand All @@ -120,7 +120,11 @@ The `vxrm` and `vxsat` fields of `vcsr` are not preserved across calls and their
values are unspecified upon entry.

Procedures may assume that `vstart` is zero upon entry. Procedures may assume
that `vstart` is zero upon return from a procedure call.
that `vstart` is zero upon return from a procedure call. Procedures may assume
that `vtype` is never `VILL`.

NOTE: Versions of the psABI before December 2024 allowed `vtype` to be `VILL`
at arbitrary times.

NOTE: Application software should normally not write `vstart` explicitly.
Any procedure that does explicitly write `vstart` to a nonzero value must zero
Expand All @@ -137,7 +141,7 @@ Any procedure that does explicitly write `vstart` to a nonzero value must zero
| v8-v23 | | Argument registers | No
| v24-v31 | | Callee-saved registers | Yes
| vl | | Vector length | No
| vtype | | Vector data type register | No
| vtype | | Vector data type register | No (but never VILL)
| vxrm | | Vector fixed-point rounding mode register | No
| vxsat | | Vector fixed-point saturation flag register | No
|===
Expand All @@ -150,8 +154,8 @@ attribute `riscv_vector_cc`).
Please refer to the <<Standard Vector Calling Convention Variant>> section for
more details about standard vector calling convention variant.

NOTE: The `vxrm` and `vxsat` fields of `vcsr` follow the same behavior as the
standard calling convention.
NOTE: The `vxrm`, `vxsat` and `vtype` fields of `vcsr` follow the same
behavior as the standard calling convention.

== Procedure Calling Convention

Expand Down
Loading