From be3414250dcdb258408b9a75187d4b0c99eb46b5 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 13 Aug 2013 00:54:21 -0700 Subject: [PATCH] Add test program for dummy rocc Should move this elsewhere --- riscv/dummy-rocc-test.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 riscv/dummy-rocc-test.c 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"); +} -- 2.30.2