Skip to content
This repository has been archived by the owner on Mar 20, 2024. It is now read-only.

example of vmv.v.* is inconsistent with the definition in spec-1.0.pdf? #947

Open
Oxyw opened this issue Mar 18, 2024 · 3 comments
Open

Comments

@Oxyw
Copy link

Oxyw commented Mar 18, 2024

I noticed that in Appendix A.8 (page 106 of spec-1.0.pdf), there is

vmv.v.x v5, t0, v0.t

However, previously in Section 11.16 (page 55), vmv.v.* instructions were defined to have vm=1 (encoded as unmasked instructions).
It seems there might be a mismatch between the example and definition.

@dkravitz-sifive
Copy link

dkravitz-sifive commented Mar 18, 2024 via email

@topperc
Copy link
Contributor

topperc commented Mar 18, 2024

The assembly parser does not allow v0.t as an operand to vmv.v.x. So the code is invalid.

@aswaterman
Copy link
Collaborator

I suppose we could've made vmv.v.x vd, rs, v0.t a pseudo-op for vmerge.vxm vd, vd, rs, v0, though that ship has probably sailed and it doesn't matter much anyway.

In any event, @ericlove fixed this bug last year in 5b04775 as part of a rewrite to use a more accurate algorithm.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants