Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions workloads/linux/spec2006/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,10 +165,10 @@ make -f rules.mk spec2006-elfs SPEC2006_ISO=/path/to/cpu2006.iso SPEC2006_INPUT=

## Configuration

The default SPEC cfg is the GCC 16 configuration:
The default SPEC cfg is the GCC 16 RVA23U64 no-vector configuration:

```text
workloads/linux/spec2006/configs/riscv_gcc16_base.cfg
workloads/linux/spec2006/configs/gcc16-linux-riscv64-rva23u64_novec.cfg
```

For GCC 15, select:
Expand Down Expand Up @@ -202,7 +202,7 @@ riscv64-unknown-linux-gnu-
Override it with `SPEC2006_CROSS_COMPILE=/path/to/bin/riscv64-unknown-linux-gnu-`.

The helper derives the toolchain root from `SPEC2006_CROSS_COMPILE` and exports
the env vars expected by `riscv_gcc16_base.cfg` (or a custom config):
the env vars expected by the default config (or a custom config):

- `LLVM_INSTALL_PATH`
- `GNU_RISCV64_PATH`
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
####################################################################
# RISC-V Config file for SPEC CPU2006

# Please see http://www.spec.org/cpu2006/Docs/config.html (also available in
# the Docs directory of your SPEC tree) for details on config file setup. The
# config.html page has a list of all of the fields required for a full
# publication ofresults.

#####################################################################
# System Under Test (SUT) Section

# If it affects performance, you need to describe it, either in the
# pre-defined fields or by adding it to the notes section. Replace the
# setting below with the ones that match your machine.

#######################################################################

# Tester Description
test_sponsor = OpenXiangShan
tester = OpenXiangShan

# System Description
hw_model = XiangShan Kunminghu
hw_memory = 2 GiB DDR
hw_disk = None
hw_vendor = Institute of Computing Technology, Chinese Academy of Sciences
hw_other = N/A
hw_avail = Dec-9999

# CPU description
# See http://www.spec.org/cpu2006/Docs/runrules.html#cpucount
# for a discussion of these fields

hw_cpu_name = XiangShan Kunminghu
hw_cpu_char =
hw_cpu_mhz = 3000
hw_fpu = Integrated
hw_nchips = 1
hw_ncores = 1
hw_ncoresperchip = 1
hw_nthreadspercore = 1
hw_ncpuorder = N/A

# Cache description

hw_pcache = N/A
hw_scache = N/A
hw_tcache = N/A
hw_ocache = N/A

# Tester description

license_num = 0

# Operating system, file system

sw_os = Linux with OpenSBI firmware boot
sw_file = initramfs rootfs
sw_state = Single-user
sw_other = None

## SW config
sw_compiler = gcc, g++ 16.1.0
sw_avail = Jul-2026
sw_base_ptrsize = 64-bit
sw_peak_ptrsize = 64-bit

#######################################################################
# End of SUT section
# If this config file were to be applied to several SUTs, edits would
# be needed only ABOVE this point.
######################################################################

ignore_errors = yes
tune = base
basepeak = no
ext = gcc16-rva23u64_novec
teeout = yes
teerunout = yes
output_format = asc, csv, html
makeflags = -j64

reportable = yes

default=default=default=default:
#####################################################################
#
# Compiler selection
#
#####################################################################

COMPILER_PATH = ${LLVM_INSTALL_PATH}
JEMALLOC_PATH = ${JEMALLOC_INSTALL_PATH}
GCC_TOOLCHAIN_PATH = ${GNU_RISCV64_PATH}

JEMALLOC_LIBS = -L$(JEMALLOC_PATH)/lib -ljemalloc -lm
# jemalloc also exports C++ operator new/delete. Some SPEC C++ benchmarks
# define replaceable allocation symbols in their own objects, so keep
# muldefs enabled for the final static link.
STATIC_LDFLAGS = -z muldefs -static

CC = $(COMPILER_PATH)/bin/riscv64-unknown-linux-gnu-gcc -std=gnu89
CXX = $(COMPILER_PATH)/bin/riscv64-unknown-linux-gnu-g++
FC = $(COMPILER_PATH)/bin/riscv64-unknown-linux-gnu-gfortran

MARCH = rv64gcb_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zaamo1p0_zalrsc1p0_zawrs1p0_zfa1p0_zfhmin1p0_zca1p0_zcb1p0_zcd1p0_zcmop1p0_zba1p0_zbb1p0_zbs1p0_zkt1p0

#####################################################################
# Optimization
#####################################################################

int=base=default:
COPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=off -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing
CXXOPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=off -std=c++98 -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing

EXTRA_LIBS = $(JEMALLOC_LIBS)
EXTRA_LDFLAGS = $(STATIC_LDFLAGS)

fp=base=default:
COPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=fast -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing
CXXOPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=fast -std=c++98 -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing
FOPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=fast -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing

EXTRA_LIBS = $(JEMALLOC_LIBS)
EXTRA_LDFLAGS = $(STATIC_LDFLAGS)

int=peak=default:
COPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=off -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing
CXXOPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=off -std=c++98 -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing

EXTRA_LIBS = $(JEMALLOC_LIBS)
EXTRA_LDFLAGS = $(STATIC_LDFLAGS)

fp=peak=default:
COPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=fast -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing
CXXOPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=fast -std=c++98 -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing
FOPTIMIZE = -static -O3 -march=$(MARCH) -ffast-math -flto -ffp-contract=fast -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing

EXTRA_LIBS = $(JEMALLOC_LIBS)
EXTRA_LDFLAGS = $(STATIC_LDFLAGS)


#####################################################################
# 32/64 bit Portability Flags - all
#####################################################################

default=default=default=default:
PORTABILITY = -DSPEC_CPU_LP64

#####################################################################
# Portability Flags
#####################################################################

400.perlbench=default=default=default:
CPORTABILITY = -DSPEC_CPU_LINUX_X64 -std=gnu89

401.bzip2=default=default=default:
CPORTABILITY = -std=gnu89

416.gamess=default=default=default:
CPORTABILITY = -funconstrained-commons
FPORTABILITY = -std=legacy -funconstrained-commons -fno-strict-aliasing

436.cactusADM=default=default=default:
CPORTABILITY = -std=gnu17

462.libquantum=default=default=default:
CPORTABILITY = -DSPEC_CPU_LINUX

464.h264ref=default=default=default:
CPORTABILITY = -fsigned-char

482.sphinx3=default=default=default:
CPORTABILITY = -fsigned-char

483.xalancbmk=default=default=default:
CXXPORTABILITY = -DSPEC_CPU_LINUX -include cstring -Wno-c++11-narrowing -Wno-template-body

453.povray=base=default=default:
CXXOPTIMIZE = -static -O3 -march=$(MARCH) -flto -ffp-contract=fast -std=c++98 -fno-tree-vectorize -fno-tree-loop-vectorize -fno-strict-aliasing

481.wrf=default=default=default:
CPORTABILITY = -DSPEC_CPU_CASE_FLAG -DSPEC_CPU_LINUX
FPORTABILITY = -std=legacy -fallow-argument-mismatch

447.dealII=default=default=default:
CXXPORTABILITY = -fpermissive -include cstring -std=c++11

450.soplex=default=default=default:
CXXPORTABILITY = -std=gnu++98

#####################################################################
# Notes
#####################################################################
2 changes: 1 addition & 1 deletion workloads/linux/spec2006/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ SPEC2006_SCRIPTS_DIR := $(SPEC2006_REPO_ROOT)/scripts
SPEC2006_DTS_DIR := $(SPEC2006_REPO_ROOT)/dts
SPEC2006_BUILD_DIR ?= $(SPEC2006_REPO_ROOT)/build/linux-workloads/spec2006
SPEC2006_CASE_CONFIG := $(SPEC2006_WORKLOAD_DIR)/spec06.json
SPEC2006_CFG ?= $(SPEC2006_WORKLOAD_DIR)/configs/riscv_gcc16_base.cfg
SPEC2006_CFG ?= $(SPEC2006_WORKLOAD_DIR)/configs/gcc16-linux-riscv64-rva23u64_novec.cfg
SPEC2006_HELPER := $(SPEC2006_WORKLOAD_DIR)/spec2006-package.py
SPEC2006_IMAGE_DIR ?= $(SPEC2006_REPO_ROOT)/build/images/spec2006
SPEC2006_SOURCE_SPEC_ISO := $(SPEC2006_ISO)
Expand Down
10 changes: 5 additions & 5 deletions workloads/linux/spec2017/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ build/images/<mode>/
opensbi/fw_jump.elf
opensbi/defconfig
manifest/<variant>.json
cfg/riscv-gcc16.cfg
cfg/riscv-gcc16-rva23u64-novec.cfg
```

`<mode>` is `spec2017rate` for rate and `spec2017speed` for speed.
Expand Down Expand Up @@ -215,16 +215,16 @@ They are compiled into each case's `dt/` directory during firmware assembly.

## Configuration

By default, rate cases use the GCC 16 configuration:
By default, rate cases use the GCC 16 RVA23U64 no-vector configuration:

```text
workloads/linux/spec2017/configs/riscv-gcc16.cfg
workloads/linux/spec2017/configs/riscv-gcc16-rva23u64-novec.cfg
```

Speed cases use the same GCC 16 configuration:
Speed cases use the same GCC 16 RVA23U64 no-vector configuration:

```text
workloads/linux/spec2017/configs/riscv-gcc16.cfg
workloads/linux/spec2017/configs/riscv-gcc16-rva23u64-novec.cfg
```

Override both modes with `SPEC2017_CFG=/path/to/config.cfg`, or override the
Expand Down
Loading
Loading