From 5fdf8dfbecd2d728a4f5833b12847adf67b0bb93 Mon Sep 17 00:00:00 2001 From: David Harris Date: Wed, 17 Apr 2024 04:01:25 -0700 Subject: [PATCH] Switched back to unsigned ints for RV32 CoreMark per spec. CM/MHz rises from 3.35 to 3.36 --- benchmarks/coremark/Makefile | 2 +- benchmarks/coremark/riscv64-baremetal/core_portme.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmarks/coremark/Makefile b/benchmarks/coremark/Makefile index 323dd1316..52ffbb05e 100644 --- a/benchmarks/coremark/Makefile +++ b/benchmarks/coremark/Makefile @@ -12,7 +12,7 @@ sources=$(cmbase)/core_main.c $(cmbase)/core_list_join.c $(cmbase)/coremark.h \ $(PORT_DIR)/crt.S $(PORT_DIR)/encoding.h $(PORT_DIR)/util.h $(PORT_DIR)/syscalls.c ABI := $(if $(findstring "64","$(XLEN)"),lp64,ilp32) #ARCH := rv$(XLEN)gc_zba_zbb_zbc -ARCH := rv$(XLEN)im_zicsr_zba_zbb_zbc +ARCH := rv$(XLEN)im_zicsr_zba_zbb_zbs #ARCH := rv$(XLEN)gc #ARCH := rv$(XLEN)imc_zicsr #ARCH := rv$(XLEN)im_zicsr diff --git a/benchmarks/coremark/riscv64-baremetal/core_portme.h b/benchmarks/coremark/riscv64-baremetal/core_portme.h index 4f5efc1d8..8db43d20a 100755 --- a/benchmarks/coremark/riscv64-baremetal/core_portme.h +++ b/benchmarks/coremark/riscv64-baremetal/core_portme.h @@ -109,11 +109,11 @@ typedef unsigned short ee_u16; typedef signed int ee_s32; typedef double ee_f32; typedef unsigned char ee_u8; -//typedef unsigned int ee_u32; -typedef signed int ee_u32; // replaced with signed to improve performance per https://github.com/sifive/benchmark-coremark/blob/master/linux64/core_portme.h#L102 #if (XLEN==64) + typedef signed int ee_u32; // replaced with signed to improve performance by avoiding zero extension in RV64 per https://github.com/sifive/benchmark-coremark/blob/master/linux64/core_portme.h#L102 typedef unsigned long long ee_ptr_int; #else + typedef unsigned int ee_u32; typedef ee_u32 ee_ptr_int; #endif typedef size_t ee_size_t;