RISC-V P Extension Test Samples
Note
Toolchain
riscv-gnu-toolchain
riscv-gcc
riscv-binutils-gdb
git clone https://github.com/riscv-collab/riscv-gnu-toolchain.git
git clone https://github.com/plctlab/riscv-gcc.git -b riscv-gcc-p-ext
git clone https://github.com/plctlab/riscv-binutils-gdb.git -b riscv-binutils-p-ext
cd riscv-gnu-toolchain
sudo ./configure --prefix=/opt/riscv --with-arch=rv64imafd_zicsr_zifencei_zpn --with-abi=lp64d --with-gcc-src=/home/mzero/workspace/riscv-gcc --with-binutils-src=/home/mzero/workspace/riscv-binutils-gdb
sudo make linux -j4
Spike
riscv-isa-sim
git clone https://github.com/riscv-software-src/riscv-isa-sim.git
cd riscv-isa-sim
mkdir build
cd build
../configure --prefix=$RISCV --with-isa=rv64imafdp --with-target=riscv64-unknown-linux-gnu
make -j4
sudo make install
Proxy Kernel
riscv-pk
git clone https://github.com/riscv-software-src/riscv-pk.git
cd riscv-pk
mkdir build
../configure --prefix=$RISCV --host=riscv64-unknown-linux-gnu --with-arch=rv64imafd_zicsr_zifencei_zpn --with-abi=lp64d
make -j4
sudo make install
Trick
rvp_intrinsic.h
//CREATE_RVP_INTRINSIC_EMPTY_ARGS (void, clrov)
//CREATE_RVP_INTRINSIC_EMPTY_ARGS (uintXLEN_t, rdov)
Cross Compile
VSCode CMake & CMake Tools Extensions
cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/opt/riscv/bin/riscv64-unknown-linux-gnu-gcc -DCMAKE_CXX_COMPILER:FILEPATH=/opt/riscv/bin/riscv64-unknown-linux-gnu-g++ -S/home/mzero/workspace/rvtest -B/home/mzero/workspace/rvtest/build -G Ninja
Run
cd build
spike pk spike-test
bbl loader
bcdf10dec0df0cde
spike pk asm-test
bbl loader
bcdeffffc0deffff
spike pk intrin-test
bbl loader
bcdeffffc0deffff
spike pk intrin-test-2
bbl loader
ffffc0deffffbcde
Important
// Little-Endian Style
uint64_t intA = 0xFBCDAFCDFFCDABCD ;
uint16x4_t vecA = {0xABCD , 0xFFCD , 0xAFCD , 0xFBCD };