Fix building on POWER with IBM XLF 16.1.1tags/v0.3.25^2
| @@ -42,15 +42,14 @@ FCOMMON_OPT += -O2 -qrecur -qnosave | |||||
| else | else | ||||
| FCOMMON_OPT += -O2 -frecursive -fno-fast-math | FCOMMON_OPT += -O2 -frecursive -fno-fast-math | ||||
| endif | endif | ||||
| ifeq ($(C_COMPILER), GCC) | |||||
| ifeq ($(F_COMPILER), GFORTRAN) | |||||
| ifneq ($(GCCVERSIONGT4), 1) | ifneq ($(GCCVERSIONGT4), 1) | ||||
| $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended) | $(warning your compiler is too old to fully support POWER9, getting a newer version of gcc is recommended) | ||||
| FCOMMON_OPT += -mcpu=power8 -mtune=power8 | FCOMMON_OPT += -mcpu=power8 -mtune=power8 | ||||
| else | else | ||||
| FCOMMON_OPT += -mcpu=power9 -mtune=power9 | FCOMMON_OPT += -mcpu=power9 -mtune=power9 | ||||
| endif | endif | ||||
| else | |||||
| FCOMMON_OPT += -mcpu=power9 -mtune=power9 | |||||
| endif | endif | ||||
| else | else | ||||
| FCOMMON_OPT += -O2 -Mrecursive | FCOMMON_OPT += -O2 -Mrecursive | ||||
| @@ -84,12 +83,16 @@ CCOMMON_OPT += -DUSE_OPENMP -fopenmp | |||||
| else | else | ||||
| CCOMMON_OPT += -DUSE_OPENMP -mp | CCOMMON_OPT += -DUSE_OPENMP -mp | ||||
| endif | endif | ||||
| ifeq ($(F_COMPILER), IBM) | |||||
| FCOMMON_OPT += -DUSE_OPENMP | |||||
| else | |||||
| ifneq ($(F_COMPILER), PGI) | ifneq ($(F_COMPILER), PGI) | ||||
| FCOMMON_OPT += -DUSE_OPENMP -fopenmp | FCOMMON_OPT += -DUSE_OPENMP -fopenmp | ||||
| else | else | ||||
| FCOMMON_OPT += -DUSE_OPENMP -mp | FCOMMON_OPT += -DUSE_OPENMP -mp | ||||
| endif | endif | ||||
| endif | endif | ||||
| endif | |||||
| # workaround for C->FORTRAN ABI violation in LAPACKE | # workaround for C->FORTRAN ABI violation in LAPACKE | ||||
| ifeq ($(F_COMPILER), GFORTRAN) | ifeq ($(F_COMPILER), GFORTRAN) | ||||
| @@ -1167,6 +1167,10 @@ endif | |||||
| ifeq ($(F_COMPILER), IBM) | ifeq ($(F_COMPILER), IBM) | ||||
| CCOMMON_OPT += -DF_INTERFACE_IBM | CCOMMON_OPT += -DF_INTERFACE_IBM | ||||
| FEXTRALIB += -lxlf90 | |||||
| ifeq ($(C_COMPILER), GCC) | |||||
| FCOMMON_OPT += -qextname | |||||
| endif | |||||
| # FCOMMON_OPT += -qarch=440 | # FCOMMON_OPT += -qarch=440 | ||||
| ifdef BINARY64 | ifdef BINARY64 | ||||
| FCOMMON_OPT += -q64 | FCOMMON_OPT += -q64 | ||||
| @@ -214,6 +214,11 @@ endif | |||||
| ifeq ($(F_COMPILER), NAG) | ifeq ($(F_COMPILER), NAG) | ||||
| CEXTRALIB = -lgomp | CEXTRALIB = -lgomp | ||||
| endif | endif | ||||
| ifeq ($(F_COMPILER), IBM) | |||||
| ifeq ($(C_COMPILER), GCC) | |||||
| CEXTRALIB += -lgomp | |||||
| endif | |||||
| endif | |||||
| endif | endif | ||||
| ifeq ($(BUILD_SINGLE),1) | ifeq ($(BUILD_SINGLE),1) | ||||
| @@ -272,23 +272,23 @@ static : ../$(LIBNAME) | |||||
| rm -f goto.$(SUFFIX) | rm -f goto.$(SUFFIX) | ||||
| osx.def : $(GENSYM) ../Makefile.system ../getarch.c | osx.def : $(GENSYM) ../Makefile.system ../getarch.c | ||||
| ./$(GENSYM) osx $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| ./$(GENSYM) osx $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| aix.def : $(GENSYM) ../Makefile.system ../getarch.c | aix.def : $(GENSYM) ../Makefile.system ../getarch.c | ||||
| ./$(GENSYM) aix $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| ./$(GENSYM) aix $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| objcopy.def : $(GENSYM) ../Makefile.system ../getarch.c | objcopy.def : $(GENSYM) ../Makefile.system ../getarch.c | ||||
| ./$(GENSYM) objcopy $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| ./$(GENSYM) objcopy $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| objconv.def : $(GENSYM) ../Makefile.system ../getarch.c | objconv.def : $(GENSYM) ../Makefile.system ../getarch.c | ||||
| ./$(GENSYM) objconv $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| ./$(GENSYM) objconv $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > $(@F) | |||||
| test : linktest.c | test : linktest.c | ||||
| $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) -lm && echo OK. | $(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) -lm && echo OK. | ||||
| rm -f linktest | rm -f linktest | ||||
| linktest.c : $(GENSYM) ../Makefile.system ../getarch.c | linktest.c : $(GENSYM) ../Makefile.system ../getarch.c | ||||
| ./$(GENSYM) linktest $(ARCH) $(BU) $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > linktest.c | |||||
| ./$(GENSYM) linktest $(ARCH) "$(BU)" $(EXPRECISION) $(NO_CBLAS) $(NO_LAPACK) $(NO_LAPACKE) $(NEED2UNDERSCORES) $(ONLY_CBLAS) "$(SYMBOLPREFIX)" "$(SYMBOLSUFFIX)" $(BUILD_LAPACK_DEPRECATED) $(BUILD_BFLOAT16) $(BUILD_SINGLE) $(BUILD_DOUBLE) $(BUILD_COMPLEX) $(BUILD_COMPLEX16) > linktest.c | |||||
| clean :: | clean :: | ||||
| @rm -f *.def *.dylib __.SYMDEF* *.renamed | @rm -f *.def *.dylib __.SYMDEF* *.renamed | ||||
| @@ -155,6 +155,10 @@ else | |||||
| *'IBM XL'*) | *'IBM XL'*) | ||||
| vendor=IBM | vendor=IBM | ||||
| openmp='-openmp' | openmp='-openmp' | ||||
| case "$CC" in *gcc*) | |||||
| bu=_ | |||||
| ;; | |||||
| esac | |||||
| ;; | ;; | ||||
| *NAG*) | *NAG*) | ||||
| vendor=NAG | vendor=NAG | ||||
| @@ -223,6 +227,10 @@ else | |||||
| *ppuf*|*xlf*) | *ppuf*|*xlf*) | ||||
| vendor=IBM | vendor=IBM | ||||
| openmp='-openmp' | openmp='-openmp' | ||||
| case "$CC" in *gcc*) | |||||
| bu=_ | |||||
| ;; | |||||
| esac | |||||
| ;; | ;; | ||||
| *open64*) | *open64*) | ||||
| vendor=OPEN64 | vendor=OPEN64 | ||||
| @@ -1301,7 +1301,7 @@ xhpr2.$(SUFFIX) xhpr2.$(PSUFFIX) : zhpr2.c | |||||
| ifeq ($(BUILD_BFLOAT16),1) | ifeq ($(BUILD_BFLOAT16),1) | ||||
| sbgemm.$(SUFFIX) sbgemm.$(PSUFFIX) : gemm.c ../param.h | sbgemm.$(SUFFIX) sbgemm.$(PSUFFIX) : gemm.c ../param.h | ||||
| $(CC) -c $(CFLAGS) $< -o $(@F) | $(CC) -c $(CFLAGS) $< -o $(@F) | ||||
| sbgemmt.$(SUFFIX) sbgemm.$(PSUFFIX) : gemmt.c ../param.h | |||||
| sbgemmt.$(SUFFIX) sbgemmt.$(PSUFFIX) : gemmt.c ../param.h | |||||
| $(CC) -c $(CFLAGS) $< -o $(@F) | $(CC) -c $(CFLAGS) $< -o $(@F) | ||||
| endif | endif | ||||
| @@ -271,6 +271,11 @@ endif | |||||
| ifeq ($(F_COMPILER), NAG) | ifeq ($(F_COMPILER), NAG) | ||||
| CEXTRALIB = -lgomp | CEXTRALIB = -lgomp | ||||
| endif | endif | ||||
| ifeq ($(F_COMPILER), IBM) | |||||
| ifeq ($(C_COMPILER), GCC) | |||||
| CEXTRALIB += -lgomp | |||||
| endif | |||||
| endif | |||||
| endif | endif | ||||
| ifeq ($(BUILD_SINGLE),1) | ifeq ($(BUILD_SINGLE),1) | ||||
| @@ -326,7 +331,7 @@ endif | |||||
| ifeq ($(BUILD_BFLOAT16),1) | ifeq ($(BUILD_BFLOAT16),1) | ||||
| test_sbgemm : compare_sgemm_sbgemm.c ../$(LIBNAME) | test_sbgemm : compare_sgemm_sbgemm.c ../$(LIBNAME) | ||||
| $(FC) $(FLDFLAGS) -o test_sbgemm compare_sgemm_sbgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) | |||||
| $(CC) $(CFLAGS) -o test_sbgemm compare_sgemm_sbgemm.c ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) | |||||
| endif | endif | ||||
| ifeq ($(BUILD_COMPLEX),1) | ifeq ($(BUILD_COMPLEX),1) | ||||