[B ISA extension] add carry-less multiply instructions (Zbc) support #260
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is a follow-up of #259 and adds the last missing sub-extension to the CPU's RISC-V bit-manipulation ISA extension "
B
":Zbc
- carry-less multiplication instructionsThe NEORV32 CPU now supports all four
B
subsets (according to the recently frozen and ratified RISC-V bit-manipulation spec. v0.93/v1.00):Zbb
- basic bit-manipulation instructionsZba
- address-generation instructionsZbs
- single-bit instructionsZbc
- carry-less multiplication instructions📚 A copy of the RISC-V
B
spec (v0.93) can be found in docs/references.Since there is no upstream gcc support yet,
Zbc
intrinsics and emulation functions have been added tosw/example/bitmanip_test/neorv32_b_extension_intrinsics.h
. Furthermore, according test cases have been added tosw/example/bitmanip_test/main.c
to verify correct operations.