From: Andrew Waterman Date: Tue, 13 Aug 2013 07:54:21 +0000 (-0700) Subject: Add test program for dummy rocc X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=be3414250dcdb258408b9a75187d4b0c99eb46b5;p=riscv-isa-sim.git Add test program for dummy rocc Should move this elsewhere --- diff --git a/riscv/dummy-rocc-test.c b/riscv/dummy-rocc-test.c new file mode 100644 index 0000000..ba362a4 --- /dev/null +++ b/riscv/dummy-rocc-test.c @@ -0,0 +1,29 @@ +// The following is a RISC-V program to test the functionality of the +// dummy RoCC accelerator. +// Compile with riscv-gcc dummy.c +// Run with spike --extension=dummy pk a.out + +#include +#include +#include + +int main() { + uint64_t x = 123, y = 456, z = 0; + // load x into accumulator 2 (funct=0) + asm volatile ("custom0 x0, %0, 2, 0" : : "r"(x)); + // read it back into z (funct=1) to verify it + asm volatile ("custom0 %0, x0, 2, 1" : "=r"(z)); + assert(z == x); + // accumulate 456 into it (funct=3) + asm volatile ("custom0 x0, %0, 2, 3" : : "r"(y)); + // verify it + asm volatile ("custom0 %0, x0, 2, 1" : "=r"(z)); + assert(z == x+y); + // do it all again, but initialize acc2 via memory this time (funct=2) + asm volatile ("custom0 x0, %0, 2, 2" : : "r"(&x)); + asm volatile ("custom0 x0, %0, 2, 3" : : "r"(y)); + asm volatile ("custom0 %0, x0, 2, 1" : "=r"(z)); + assert(z == x+y); + + printf("success!\n"); +}