neorv32/sw/example/bit_manipulation
2021-01-26 17:52:33 +01:00
..
main.c [sw/example/bit_manip] minor output edits 2021-01-26 17:52:33 +01:00
makefile [sw/bit_manipulation] added bit manipulation test program (including pure-software reference implementation off all Zbb instructions; including 'intrinsic' library to use B extension's instruction in C-language code) 2021-01-10 16:14:17 +01:00
neorv32_b_extension_intrinsics.h [sw/bit_manipulation] added bit manipulation test program (including pure-software reference implementation off all Zbb instructions; including 'intrinsic' library to use B extension's instruction in C-language code) 2021-01-10 16:14:17 +01:00
README.md [documentation] added current version of the bit manipulation specs supported by the NEORV32 CPU 2021-01-11 15:45:45 +01:00

NEORV32 Bit Manipulation B Extension

⚠️ The RISC-V B extension is not ratified yet. Hence, it is not supported by the upstream RISC-V GCC port.

⚠️ The NEORV32's bit manipulation instruction only supports the Zbb base instructions subset yet.

The provided test program main.c verifies all instructions of the B.Zbb extensions by checking the results against a pure-software emulation model. The emulation functions as well as the available intrinsics for the B extension are located in neorv32_b_extension_intrinsics.h.

More information regarding the RISC-V bit manipulation extension can be found in the officail GitHub repo: github.com/riscv/riscv-bitmanip. The current specification of the bitmanipulation spec supported by the NEORV32 can be found in docs/bitmanip-draft.pdf.

Compiling the test program (main.c) and/or the intriniscs library using the MARCH b flag should be avoided (might add further instructions from the B extension that are not part of the Zbb subset).