Skip to content

Commit

Permalink
Add the description for vector tuple types.
Browse files Browse the repository at this point in the history
  • Loading branch information
Hsiangkai committed Jan 25, 2021
1 parent 501f31a commit 31fcb90
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions riscv-elf.md
Expand Up @@ -304,6 +304,14 @@ are passed by reference, vector values are stored on the stack aligned to the
size of the elements in the vector. The addresses of the vector or mask values on
the stack are passed according to the integer calling convention.

Vector tuple types for Zvlsseg will be decoupled as `NF` vector values when passing
as arguments. `NF` is the number of fields for the tuple types. For example, values
with the tuple type for LMUL = 2 and NF = 3 will be passed as 3 vector arugments
with LMUL = 2. If there is no enough vector registers for the vector tuple, it
will use up the vector argument registers and the remaining values will be passed
by reference. v8-v15 are enough for vector tuple return values because
`LMUL` * `NF` ≤ 8 in V specification.

No vector registers shall be preserved across procedure calls.

There is no scalar values passed through vector registers. There is no vector
Expand Down

0 comments on commit 31fcb90

Please sign in to comment.