Как рассчитать количество тактов в RISCV-clang - PullRequest
0 голосов
/ 05 сентября 2018

Я использую riscv64-unknown-elf-clang, "clang version 5.0.0", чтобы скомпилировать мой код, а затем запустить его с "spike" и "pk" . Мне нужно рассчитать количество тактов, которое занимает программа. Я использовал "__ builtin_readcyclecounter ()" или обычный "clock ()" для вычисления тактов, но ни один из них не работает.

Приведенный ниже код работает с riscv64-unknown-elf-gcc , но не с riscv64-unknown-elf-clang

#define read_csr(reg) ({ unsigned long __tmp;asm volatile ("csrr %0, " #reg : "=r"(__tmp));__tmp; })
#define CSR_CYCLE 0xc00
#define CSR_TIME 0xc01
#define CSR_INSTRET 0xc02
#define CSR_MCYCLE 0xb00

Затем из основной программы, которую я назвал

long cycles;
cycles=read_csr(cycle);
...