-
Notifications
You must be signed in to change notification settings - Fork 40
LLVM verification #356
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
LLVM verification #356
Conversation
a56b0b1
to
d9b50b2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is a good start, and is heading in the right direction. Some immediate comments before I look again in the next few days.
Is there anything specific you want feedback on?
Which instructions are you running into issues with so far?
Another overall thought I have is: if this is a test/validation suite, could this be structured using pytest? For instance, you could parse the YAML and the JSON to match up instruction descriptions, and use that to create parameterized fixtures (one instance per matched description) - the advantage of this is that you get all of the niceness of pytest's asserts, and pytest's test suite reports, without having to reimplement all the testcase management. This also makes it easier to split the test code that checks the encoding matches from tests that check the assembly strings match (for example, but we can think of others).
Thanks for your feedback!
Not yet, the point was just some general considerations about the initial approach.
I still didnt find a pattern, but I'll try to fix this soon and if I run into any issue I'm not able to solve by myself, I'll try to bring it up, thanks!
I'll take a look into pytest and see how to port this, thanks for the suggestion! |
current known bugs are:
I'm working on both now. |
Somewhere, a |
Unit testing is now working. TODO: |
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
Signed-off-by: Afonso Oliveira <[email protected]>
956ad97
to
5992124
Compare
Signed-off-by: Afonso Oliveira <[email protected]>
Can I insert LLVM as a submodule or would this be another licensing problem? |
This is functional. Things missing is how to address LLVM and adding it the test to Rakefile. I will also see how I can optimize code, e.g. what @lenary proposed on one review. |
I highly suggest using environment variables to point to LLVM, and skipping these tests if those environment variables are not set. |
6ca01a7
to
e2a5b73
Compare
Signed-off-by: Afonso Oliveira <[email protected]>
e2a5b73
to
92f9c99
Compare
…he ISA Spec Signed-off-by: Afonso Oliveira <[email protected]>
Sorry for the mess with force pushes, but I had some trouble finding what I was messing up with GH actions caching. However, I believe this PR is ready for merge after #428 is solved and after @dhower-qc and @lenary reviews. |
5eff105
to
af0acae
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I've taken too long to get back to this.
I have one actionable comment, but let's just land this and fix-forward the verification/validation (i.e., new PRs)
Hopefully that makes sense?
Yes, that makes total sense. @dhower-qc mentioned that this was on queue depending on #386, so likely I'll have to adapt to that as well. I guess I'll change both things at the time. Thank for the review! |
@dhower-qc should be working now. Remember that the test is optional, so if the users don't have LLVM tablegen generated in their computers, it will just skip all tests. |
@dhower-qc Can I get an approval on this so I don't need to consistently come back and solve merge conflicts? |
25c201c
to
7b1697f
Compare
Yep, thanks for the bump |
@dhower-qc @kbroch-rivosinc the pre-commit is complaining about copyright licenses, should I just insert BSD-3 license? |
@kbroch-rivosinc Sorry for bothering about this, but is it now a requirement that all files introduced into UDB have an explicit LICENSE somewhere? To fix this I should introduce the BSD-3 reference on the top of each of the files I am adding?
|
Signed-off-by: Afonso Oliveira <[email protected]>
Following up on #258.
I've been doing work on what @lenary proposed as a first approach, I think this is an ok first mock-up. Still a WIP since many instructions still have bugs, but if you have any comments or recommendations, please LMK :).
I did not add LLVM as a submodule yet because it may be easier licensing wise to just point at it in the script? Usage is
python3 riscv_parser.py <tablegen_json_file> <arch_inst_directory>")
. I've also used jq to enhance readibility on the output ofllvm-tblgen -I llvm/include -I llvm/lib/Target/RISCV llvm/lib/Target/RISCV/RISCV.td --dump-json -o <path-to-json-output>
.