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

Implement Zve32x Vector Integer Arithmetic Instructions #11

Merged
merged 34 commits into from
Oct 30, 2024

Conversation

danielschloms
Copy link

This PR implements the vector integer arithmetic instructions according to the RVV spec version 1.0. Testing was done using the relevant rv32uv tests from this repository. Therefore, the functionality for EEW = 64 is untested.

@PhilippvK
Copy link
Member

@danielschloms Did you also add new test cases/files to the test suite by any chance? Can you give an estimate on how many of the vector integer arithmetic instructions are covered by at least one test case?

@PhilippvK
Copy link
Member

@danielschloms Do you need help setting up an etiss architecture to test the Zve64x support as well?

@danielschloms
Copy link
Author

danielschloms commented Oct 9, 2024

@danielschloms Did you also add new test cases/files to the test suite by any chance? Can you give an estimate on how many of the vector integer arithmetic instructions are covered by at least one test case?

Are you talking about the golden tests in the softvector repo or your riscv-tests fork? As for the the softvector test suite, only a small set of instructions is covered (add, sub, unitstride load/store, mul(h/hu/hsu), and, or, xor, and single width shifts). Would you like that all instructions are also covered by the softvector test suite? The other repo did cover all vector integer arithmetic instructions, but some others are missing, e.g. vnclip(u).

@danielschloms Do you need help setting up an etiss architecture to test the Zve64x support as well?

That would be great :)

@PhilippvK
Copy link
Member

Are you talking about the golden tests in the softvector repo or your riscv-tests fork?

I was interested in both.

As for the the softvector test suite, only a small set of instructions is covered (add, sub, unitstride load/store, mul(h/hu/hsu), and, or, xor, and single width shifts). Would you like that all instructions are also covered by the softvector test suite?

Yes at some point (but probably out of scope for this PR)

The other repo did cover all vector integer arithmetic instructions, but some others are missing, e.g. vnclip(u).

thanks for the clarification. I saw that recently a few new test suites for RVV showed up, probably with greater coverage. Would probably be a good idea to try it out at some point: https://github.com/chipsalliance/riscv-vector-tests

That would be great :)

I am out of office until next Thursday, but we can arrange something when I am back :)

@PhilippvK
Copy link
Member

@danielschloms Sorry for the delay!

I created a RVV 64-bit ETISS arch and pushed it here: https://github.com/PhilippvK/etiss/tree/rvv-2024-new
I guess that you have you own etiss fork with different changes, but you can probably cherry-pick/copy the relevant patches.

I couldn't check check if the generated RV64 arch passes any tests in the test suite. You will probably download a rv64 riscv-gcc and recompile the test-cases with XLEN=64. Please let me know if you need further advice...

@PhilippvK PhilippvK merged commit 8b218e3 into tum-ei-eda:rvv1.0 Oct 30, 2024
1 check passed
@PhilippvK
Copy link
Member

Merging this now. RV64 support should be addressed in a new PR.

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

Successfully merging this pull request may close these issues.

2 participants