148 lines
4.9 KiB
INI
148 lines
4.9 KiB
INI
# match spec result standard
|
|
reportable = yes
|
|
# skip peak
|
|
basepeak = yes
|
|
# show live output
|
|
teeout = yes
|
|
# speedup compilation
|
|
makeflags = --jobs=%{nproc}
|
|
|
|
# compilers
|
|
default:
|
|
preENV_LD_LIBRARY_PATH = /usr/lib64:/usr/lib:/lib64
|
|
SPECLANG = /usr/bin/
|
|
%if %{clang} eq "1"
|
|
CC = $(SPECLANG)clang -std=c99
|
|
CXX = $(SPECLANG)clang++
|
|
%else
|
|
CC = $(SPECLANG)gcc -std=c99
|
|
CXX = $(SPECLANG)g++
|
|
%endif
|
|
%if %{flang} eq "1"
|
|
FC = $(SPECLANG)flang-new
|
|
%else
|
|
FC = $(SPECLANG)gfortran
|
|
%endif
|
|
# allow to override compilers
|
|
%ifdef %{override-cc}
|
|
CC = %{override-cc} -std=c99
|
|
%endif
|
|
%ifdef %{override-cxx}
|
|
CXX = %{override-cxx}
|
|
%endif
|
|
%ifdef %{override-fc}
|
|
FC = %{override-fc}
|
|
%endif
|
|
# How to say "Show me your version, please"
|
|
CC_VERSION_OPTION = -v
|
|
CXX_VERSION_OPTION = -v
|
|
FC_VERSION_OPTION = -v
|
|
|
|
# perf: use runcpu --define perf=1 --noreportable to enable
|
|
%if %{perf} eq "1"
|
|
# override branch-misses counter if necessary
|
|
# e.g. on ARMv8 PMUv3, use r22 for branch misses
|
|
# e.g. on Apple M1, use rcb for branch misses
|
|
%ifndef %{perf-branchmisses}
|
|
%define perf-branchmisses branch-misses
|
|
%endif
|
|
# override branches counter if necessary
|
|
# e.g. on Apple M1, use r8d for branches
|
|
%ifndef %{perf-branches}
|
|
%define perf-branches branches
|
|
%endif
|
|
default:
|
|
command_add_redirect = 1
|
|
# bind to core if requested
|
|
%ifdef %{bindcore}
|
|
monitor_wrapper = mkdir -p $[top]/result/perf.$lognum; echo "$command" > $[top]/result/perf.$lognum/$benchmark.cmd.$iter.\$\$; taskset -c %{bindcore} perf stat -x \\; -e instructions,cycles,%{perf-branches},%{perf-branchmisses},task-clock -o $[top]/result/perf.$lognum/$benchmark.perf.$iter.\$\$ $command
|
|
%else
|
|
monitor_wrapper = mkdir -p $[top]/result/perf.$lognum; echo "$command" > $[top]/result/perf.$lognum/$benchmark.cmd.$iter.\$\$; perf stat -x \\; -e instructions,cycles,%{perf-branches},%{perf-branchmisses},task-clock -o $[top]/result/perf.$lognum/$benchmark.perf.$iter.\$\$ $command
|
|
%endif
|
|
%endif
|
|
|
|
# portability flags
|
|
default:
|
|
EXTRA_PORTABILITY = -DSPEC_LP64
|
|
500.perlbench_r,600.perlbench_s: #lang='C'
|
|
%if %{machine} eq "x86_64"
|
|
PORTABILITY = -DSPEC_LINUX_X64
|
|
%else
|
|
PORTABILITY = -DSPEC_LINUX_AARCH64
|
|
%endif
|
|
|
|
521.wrf_r,621.wrf_s: #lang='F,C'
|
|
CPORTABILITY = -DSPEC_CASE_FLAG
|
|
FPORTABILITY = -fconvert=big-endian
|
|
|
|
523.xalancbmk_r,623.xalancbmk_s: #lang='CXX'
|
|
PORTABILITY = -DSPEC_LINUX
|
|
|
|
526.blender_r: #lang='CXX,C'
|
|
PORTABILITY = -funsigned-char -DSPEC_LINUX
|
|
%if %{clang} eq "1"
|
|
# from config/Example-aocc-linux-x86.cfg
|
|
CXXPORTABILITY = -D__BOOL_DEFINED
|
|
%endif
|
|
|
|
527.cam4_r,627.cam4_s: #lang='F,C'
|
|
PORTABILITY = -DSPEC_CASE_FLAG
|
|
|
|
628.pop2_s: #lang='F,C'
|
|
CPORTABILITY = -DSPEC_CASE_FLAG
|
|
FPORTABILITY = -fconvert=big-endian
|
|
|
|
intspeed,fpspeed:
|
|
EXTRA_OPTIMIZE = -fopenmp -DSPEC_OPENMP
|
|
fpspeed:
|
|
#
|
|
# 627.cam4 needs a big stack; the preENV will apply it to all
|
|
# benchmarks in the set, as required by the rules.
|
|
#
|
|
preENV_OMP_STACKSIZE = 120M
|
|
|
|
default=base: # flags for all base
|
|
%ifdef %{extralibs}
|
|
EXTRA_LIBS = %{extralibs}
|
|
%endif
|
|
%ifdef %{optflags}
|
|
OPTIMIZE = %{optflags}
|
|
%else
|
|
OPTIMIZE = -O3
|
|
%endif
|
|
# -std=c++03 required for https://www.spec.org/cpu2017/Docs/benchmarks/510.parest_r.html
|
|
CXXOPTIMIZE = -std=c++03
|
|
%if %{flang} ne "1"
|
|
# -fallow-argument-mismatch required for https://www.spec.org/cpu2017/Docs/benchmarks/521.wrf_r.html
|
|
FOPTIMIZE = -fallow-argument-mismatch
|
|
%endif
|
|
|
|
intrate,intspeed=base: # flags for integer base
|
|
EXTRA_COPTIMIZE = -fno-strict-aliasing -fno-unsafe-math-optimizations -fno-finite-math-only -fgnu89-inline -fcommon
|
|
# Notes about the above
|
|
# - 500.perlbench_r/600.perlbench_s needs -fno-strict-aliasing, -fno-unsafe-math-optimizations and -fno-finite-math-only
|
|
# - 502.gcc_r/602.gcc_s needs -fgnu89-inline or -z muldefs
|
|
# - 525.x264_r/625.x264_s needs -fcommon
|
|
# - For 'base', all benchmarks in a set must use the same options.
|
|
# - Therefore, all base benchmarks get the above. See:
|
|
# https://www.spec.org/cpu2017/Docs/runrules.html#BaseFlags
|
|
# https://www.spec.org/cpu2017/Docs/benchmarks/500.perlbench_r.html
|
|
# https://www.spec.org/cpu2017/Docs/benchmarks/502.gcc_r.html
|
|
# https://www.spec.org/cpu2017/Docs/benchmarks/525.x264_r.html
|
|
|
|
%if %{clang} eq "1"
|
|
# https://github.com/llvm/llvm-project/issues/96859
|
|
# 523.xalancbmk_r
|
|
EXTRA_CXXOPTIMIZE = -fdelayed-template-parsing
|
|
%endif
|
|
|
|
%if %{gcc15} eq "1"
|
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116064
|
|
# 523.xalamcbmk_r
|
|
EXTRA_CXXOPTIMIZE += -Wno-error=template-body
|
|
%endif
|
|
|
|
fprate,fpspeed=base: # flags for fp base
|
|
EXTRA_COPTIMIZE = -Wno-error=implicit-int
|
|
# Notes about the above
|
|
# - 527.cam4_r,627.cam4_s needs -Wno-error=implicit-int |