84 lines
2.7 KiB
Makefile
84 lines
2.7 KiB
Makefile
|
#Compile all benchmarks with individual settings defined in their Makefiles
|
||
|
|
||
|
_default-target: default
|
||
|
|
||
|
# RVB_ROOT defined as argument
|
||
|
|
||
|
# TODO: RVB_COMMON_DIR should substitute COMMON_DIR
|
||
|
COMMON_DIR=$(RVB_ROOT)/common
|
||
|
RVB_COMMON_DIR=$(RVB_ROOT)/common
|
||
|
|
||
|
#CC=clang
|
||
|
#CXX=clang++
|
||
|
|
||
|
# Needs EPI clang
|
||
|
#MEPI=-mepi
|
||
|
MEPI=
|
||
|
|
||
|
#VREPORT_FLAGS=-Rpass=loop-vectorize -Rpass-missed=loop-vectorize -Rpass-analysis=loop-vectorize
|
||
|
#Available CFLAGS conditional compilation:
|
||
|
# -DUSE_MALLOC_HP, redefines the use of malloc and free
|
||
|
|
||
|
#Makefile: General compiler flags: CFLAGS, CFLAGS_<VERSION_1>, CFLAGS_<VERSION_2>, ...
|
||
|
#CFLAGS=-B ${LLVM_BIN} -Wall -Wextra -march=rv64g -O2 -I${RVB_COMMON_DIR}
|
||
|
CFLAGS=-B ${LLVM_BIN} -Wall -Wextra -O2 -I${RVB_COMMON_DIR}
|
||
|
LDFLAGS=
|
||
|
|
||
|
#Only scalar instructions
|
||
|
CFLAGS_SCALAR=${CFLAGS} -DRVB_USE_SCALAR
|
||
|
LDFLAGS_SCALAR=
|
||
|
|
||
|
#NOVEC=-fno-vectorize
|
||
|
NOVEC=
|
||
|
|
||
|
#Vector instructions using intrinsics
|
||
|
CFLAGS_VECTORIAL=${CFLAGS} ${NOVEC} $(MEPI)
|
||
|
LDFLAGS_VECTORIAL=
|
||
|
|
||
|
# TODO: RVV should substitute VECTORIAL (?)
|
||
|
#Vector instructions using intrinsics
|
||
|
CFLAGS_RVV=${CFLAGS} -DRVB_USE_RVV ${NOVEC} $(MEPI)
|
||
|
LDFLAGS_RVV=${LDFLAGS}
|
||
|
|
||
|
#Vector instructions only when code is annotate
|
||
|
CFLAGS_EXPLICIT_AUTOVECTORIZATION=${CFLAGS} -fopenmp-simd ${NOVEC} $(MEPI) ${VREPORT_FLAGS}
|
||
|
LDFLAGS_EXPLICIT_AUTOVECTORIZATION=
|
||
|
|
||
|
# TODO: OMP substitutes EXPLICIT_AUTOVECTORIZATION
|
||
|
#Vector instructions only when code is annotate
|
||
|
CFLAGS_OMP=${CFLAGS} -DRVB_USE_OMP -fopenmp-simd $(MEPI) ${VREPORT_FLAGS}
|
||
|
LDFLAGS_OMP=${LDFLAGS}
|
||
|
|
||
|
#Vector instructions when compiler decides
|
||
|
CFLAGS_AUTOVECTORIZATION=${CFLAGS} -fopenmp-simd $(MEPI) ${VREPORT_FLAGS}
|
||
|
LDFLAGS_AUTOVECTORIZATION=
|
||
|
|
||
|
# TODO: AUTOVECT shoud substitue AUTOVECTORIZATION (?)
|
||
|
#Vector instructions when compiler decides
|
||
|
CFLAGS_AUTOVECT=${CFLAGS} -DRVB_USE_AUTOVECT -fopenmp-simd $(MEPI) ${VREPORT_FLAGS}
|
||
|
LDFLAGS_AUTOVECT=${LDFLAGS}
|
||
|
|
||
|
# CBLAS library compile and link flags
|
||
|
CFLAGS_CBLAS=${CFLAGS} -DRVB_USE_CBLAS -I${CBLAS_INC} -I${LLVM_INC}
|
||
|
LDFLAGS_CBLAS=${LDFLAGS} -L${CBLAS_LIB} -lblis -Wl,-rpath,${CBLAS_LIB} -fopenmp
|
||
|
|
||
|
# BARE-METAL compile and link flags
|
||
|
# You may consider to disable OpenPiton Stream: -DDISABLE_OPSTREAM
|
||
|
CFLAGS_BMETAL=${CFLAGS} -DRVB_USE_BMETAL -B ${RVB_BMETAL_DIR} \
|
||
|
--target=riscv64-unknown-elf \
|
||
|
-I../ \
|
||
|
-I/apps/riscv/llvm/EPI-0.7/cross/development/riscv64-unknown-linux-gnu/sysroot/usr/include \
|
||
|
-I/usr/include/riscv64-linux-gnu \
|
||
|
-I/usr/include \
|
||
|
-I${RVB_BMETAL_DIR}/env \
|
||
|
-I${RVB_BMETAL_DIR} \
|
||
|
-DPREALLOCATE=1 -mcmodel=medany \
|
||
|
-static -std=gnu99 \
|
||
|
-ffast-math \
|
||
|
-fno-common \
|
||
|
-fno-builtin-printf \
|
||
|
${RVB_BMETAL_DIR}/syscalls.c \
|
||
|
${RVB_BMETAL_DIR}/crt.S \
|
||
|
-static -nostdlib -T \
|
||
|
${RVB_BMETAL_DIR}/test.ld
|