X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=benchmarks%2FMakefile;h=fb0d2977dec06ad2128afd7fe516838c89be71eb;hb=HEAD;hp=8cc1e35ddfe8c11338880d3a058af6749758744d;hpb=22742246287feda0be2666ba14ca6f4a6bc73bb2;p=riscv-tests.git diff --git a/benchmarks/Makefile b/benchmarks/Makefile index 8cc1e35..fb0d297 100644 --- a/benchmarks/Makefile +++ b/benchmarks/Makefile @@ -4,6 +4,8 @@ # Yunsup Lee (yunsup@cs.berkeley.edu) # +XLEN ?= 64 + default: all src_dir = . @@ -27,41 +29,29 @@ bmarks = \ spmv \ mt-vvadd \ mt-matmul \ - -bmarks_host = \ - median \ - qsort \ - towers \ - vvadd \ - multiply \ - spmv \ - vec-vvadd \ - vec-cmplxmult \ - vec-matmul \ + pmp \ #-------------------------------------------------------------------- # Build rules #-------------------------------------------------------------------- -HOST_OPTS = -std=gnu99 -DPREALLOCATE=0 -DHOST_DEBUG=1 -HOST_COMP = gcc $(HOST_OPTS) - -RISCV_PREFIX ?= riscv64-unknown-elf- +RISCV_PREFIX ?= riscv$(XLEN)-unknown-elf- RISCV_GCC ?= $(RISCV_PREFIX)gcc -RISCV_GCC_OPTS ?= -fpie -static -std=gnu99 -O2 -ffast-math -fno-common -fno-builtin-printf +RISCV_GCC_OPTS ?= -DPREALLOCATE=1 -mcmodel=medany -static -std=gnu99 -O2 -ffast-math -fno-common -fno-builtin-printf RISCV_LINK ?= $(RISCV_GCC) -T $(src_dir)/common/test.ld $(incs) -RISCV_LINK_MT ?= $(RISCV_GCC) -T $(src_dir)/common/test-mt.ld -RISCV_LINK_OPTS ?= -nostdlib -nostartfiles -ffast-math -lgcc +RISCV_LINK_OPTS ?= -static -nostdlib -nostartfiles -lm -lgcc -T $(src_dir)/common/test.ld RISCV_OBJDUMP ?= $(RISCV_PREFIX)objdump --disassemble-all --disassemble-zeroes --section=.text --section=.text.startup --section=.data -RISCV_SIM ?= spike - -VPATH += $(addprefix $(src_dir)/, $(bmarks)) -VPATH += $(src_dir)/common +RISCV_SIM ?= spike --isa=rv$(XLEN)gc incs += -I$(src_dir)/../env -I$(src_dir)/common $(addprefix -I$(src_dir)/, $(bmarks)) objs := -include $(patsubst %, $(src_dir)/%/bmark.mk, $(bmarks)) +define compile_template +$(1).riscv: $(wildcard $(src_dir)/$(1)/*) $(wildcard $(src_dir)/common/*) + $$(RISCV_GCC) $$(incs) $$(RISCV_GCC_OPTS) -o $$@ $(wildcard $(src_dir)/$(1)/*.c) $(wildcard $(src_dir)/common/*.c) $(wildcard $(src_dir)/common/*.S) $$(RISCV_LINK_OPTS) +endef + +$(foreach bmark,$(bmarks),$(eval $(call compile_template,$(bmark)))) #------------------------------------------------------------ # Build and run benchmarks on riscv simulator @@ -70,46 +60,17 @@ bmarks_riscv_bin = $(addsuffix .riscv, $(bmarks)) bmarks_riscv_dump = $(addsuffix .riscv.dump, $(bmarks)) bmarks_riscv_out = $(addsuffix .riscv.out, $(bmarks)) -bmarks_defs = -DPREALLOCATE=1 -DHOST_DEBUG=0 -bmarks_cycles = 80000 - $(bmarks_riscv_dump): %.riscv.dump: %.riscv $(RISCV_OBJDUMP) $< > $@ $(bmarks_riscv_out): %.riscv.out: %.riscv $(RISCV_SIM) $< > $@ -%.o: %.c - $(RISCV_GCC) $(RISCV_GCC_OPTS) $(bmarks_defs) \ - -c $(incs) $< -o $@ - -%.o: %.S - $(RISCV_GCC) $(RISCV_GCC_OPTS) $(bmarks_defs) -D__ASSEMBLY__=1 \ - -c $(incs) $< -o $@ - riscv: $(bmarks_riscv_dump) -run-riscv: $(bmarks_riscv_out) - echo; perl -ne 'print " [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \ - $(bmarks_riscv_out); echo; +run: $(bmarks_riscv_out) junk += $(bmarks_riscv_bin) $(bmarks_riscv_dump) $(bmarks_riscv_hex) $(bmarks_riscv_out) -#------------------------------------------------------------ -# Build and run benchmarks on host machine - -bmarks_host_bin = $(addsuffix .host, $(bmarks_host)) -bmarks_host_out = $(addsuffix .host.out, $(bmarks_host)) - -$(bmarks_host_out): %.host.out: %.host - ./$< > $@ - -host: $(bmarks_host_bin) -run-host: $(bmarks_host_out) - echo; perl -ne 'print " [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \ - $(bmarks_host_out); echo; - -junk += $(bmarks_host_bin) $(bmarks_host_out) - #------------------------------------------------------------ # Default