blob: b45e55182877d2bb1e5ca7d45611a22287567a55 [file] [log] [blame]
#/=======================================================================
# UCB VLSI FLOW: Makefile for riscv-bmarks/mt
#-----------------------------------------------------------------------
# Henry Cook (hcook@cs.berkeley.edu)
#
default: all
bmarkdir = .
common = ../benchmarks/common
instname = riscv-bmarks-mt
instbasedir = $(UCB_VLSI_HOME)/install
#--------------------------------------------------------------------
# Sources
#--------------------------------------------------------------------
bmarks_matmul = \
ad_matmul\
ae_matmul\
af_matmul\
ag_matmul\
ai_matmul\
ak_matmul\
al_matmul\
am_matmul\
an_matmul\
ap_matmul\
aq_matmul\
ar_matmul\
at_matmul\
av_matmul\
ay_matmul\
az_matmul\
bb_matmul\
bc_matmul\
bf_matmul\
bh_matmul\
bj_matmul\
bk_matmul\
bm_matmul\
bo_matmul\
br_matmul\
bs_matmul\
ce_matmul\
cf_matmul\
cg_matmul\
ci_matmul\
ck_matmul\
cl_matmul\
cm_matmul\
cs_matmul\
cv_matmul\
cy_matmul\
dc_matmul\
df_matmul\
dm_matmul\
do_matmul\
dr_matmul\
ds_matmul\
du_matmul\
dv_matmul\
bmarks_vvadd = \
vvadd0\
vvadd1\
vvadd2\
vvadd3\
vvadd4\
bmarks = $(bmarks_vvadd) $(bmarks_matmul)
#--------------------------------------------------------------------
# Build rules
#--------------------------------------------------------------------
RISCV_PREFIX=riscv$(XLEN)-unknown-elf-
RISCV_GCC = $(RISCV_PREFIX)gcc
RISCV_GCC_OPTS = -std=gnu99 -O2 -ffast-math
RISCV_LINK = $(RISCV_GCC) -T $(common)/test.ld $(incs)
RISCV_LINK_OPTS = -nostdlib -nostartfiles -ffast-math -lc
RISCV_OBJDUMP = $(RISCV_PREFIX)objdump --disassemble-all --disassemble-zeroes --section=.text --section=.text.startup --section=.data
RISCV_SIM = spike -p2
VPATH += $(common) $(common)/../mt-matmul $(common)/../mt-vvadd
incs += -I. -I$(bmarkdir)/../env -I$(common) -I$(common)/../mt-matmul -I$(common)/../mt-vvadd
objs :=
#include $(patsubst %, $(bmarkdir)/%/bmark.mk, $(bmarks))
#------------------------------------------------------------
# Build and run benchmarks on riscv simulator
#------------------------------------------------------------
bmarks_riscv_obj = $(addsuffix .o, $(bmarks))
bmarks_riscv_matmul_bin = $(addsuffix .riscv, $(bmarks_matmul))
bmarks_riscv_vvadd_bin = $(addsuffix .riscv, $(bmarks_vvadd))
bmarks_riscv_dump = $(addsuffix .riscv.dump, $(bmarks))
bmarks_riscv_hex = $(addsuffix .riscv.hex, $(bmarks))
bmarks_riscv_out = $(addsuffix .riscv.out, $(bmarks))
bmarks_riscv_bin = $(bmarks_riscv_matmul_bin) $(bmarks_riscv_vvadd_bin)
bmarks_defs = -DPREALLOCATE=1 -DHOST_DEBUG=0
bmarks_cycles = 80000
%.hex: %
elf2hex 16 32768 $< > $@
$(bmarks_riscv_vvadd_bin): %.riscv: %.o mt-vvadd.o syscalls.o crt.o
$(RISCV_LINK) $< mt-vvadd.o syscalls.o crt.o $(RISCV_LINK_OPTS) -o $@
$(bmarks_riscv_matmul_bin): %.riscv: %.o mt-matmul.o syscalls.o crt.o
$(RISCV_LINK) $< mt-matmul.o syscalls.o crt.o $(RISCV_LINK_OPTS) -o $@
$(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) -D__ASSEMBLY__=1 \
-c $(incs) $< -o $@
%.o: %.S
$(RISCV_GCC) $(RISCV_GCC_OPTS) $(bmarks_defs) \
-c $(incs) $< -o $@
riscv: $(bmarks_riscv_dump) $(bmarks_riscv_hex)
run-riscv: $(bmarks_riscv_out)
echo; perl -ne 'print " [$$1] $$ARGV \t$$2\n" if /\*{3}(.{8})\*{3}(.*)/' \
junk += $(bmarks_riscv_bin) $(bmarks_riscv_dump) $(bmarks_riscv_hex) $(bmarks_riscv_out) $(bmarks_riscv_obj)
#------------------------------------------------------------
# Default
all: riscv
#------------------------------------------------------------
# Install
date_suffix = $(shell date +%Y-%m-%d_%H-%M)
install_dir = $(instbasedir)/$(instname)-$(date_suffix)
latest_install = $(shell ls -1 -d $(instbasedir)/$(instname)* | tail -n 1)
install:
mkdir $(install_dir)
cp -r $(bmarks_riscv_bin) $(bmarks_riscv_dump) $(install_dir)
install-link:
rm -rf $(instbasedir)/$(instname)
ln -s $(latest_install) $(instbasedir)/$(instname)
#------------------------------------------------------------
# Clean up
clean:
rm -rf $(objs) $(junk) syscall.o crt.o mt-matmul.o mt-vvadd.o