[B ISA Extension] Rework and addition of Zba subset #190
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 rework of the NEOR32 preliminary support of the RISC-V bit-manipulation ISA extension
B
. It adds the address generation instructions subsetZba
to the already implemented basic bit-manipulation instructions subsetZbb
.This PR also reworks the configuration generic of the bit-manipulation extensions:
CPU_EXTENSION_RISCV_Zbb
top generic is removedSYSINFO_CPU_ZBB
flag from the SYSINFO module is removedCPU_EXTENSION_RISCV_B
top generic is added and will implement all currently support subsets (Zba
Zbb
) when "true"B
extensions is implemented by checking the accordingmisa
CSR bitB
extension is frozen but not officially ratified yet. Hence, there is no upstream gcc support available at this time. However, the NEORV32B
extension can still be utilized via the provided intrinsics (sw/example/bitmanip_test/neorv32_b_extension_intrinsics.h
).Zb*
subsets have to be implemented when theB
bit in themisa
CSR is set. This is a NEORV32-specific deviation from the spec.I accidentally added minor VHDL source code clean-ups of the TWI module to this PR. I won't revert that commit because it is entirely cosmetic 😉