@@ -77,6 +77,11 @@ ifndef NO_PARALLEL_MAKE | |||||
NO_PARALLEL_MAKE=0 | NO_PARALLEL_MAKE=0 | ||||
endif | endif | ||||
GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE) | GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE) | ||||
ifeq ($(HOSTCC), loongcc) | |||||
GETARCH_FLAGS += -static | |||||
endif | |||||
# This operation is expensive, so execution should be once. | # This operation is expensive, so execution should be once. | ||||
ifndef GOTOBLAS_MAKEFILE | ifndef GOTOBLAS_MAKEFILE | ||||
export GOTOBLAS_MAKEFILE = 1 | export GOTOBLAS_MAKEFILE = 1 | ||||
@@ -568,11 +573,28 @@ ifdef INTERFACE64 | |||||
FCOMMON_OPT += -i8 | FCOMMON_OPT += -i8 | ||||
endif | endif | ||||
endif | endif | ||||
ifeq ($(ARCH), mips64) | |||||
ifndef BINARY64 | |||||
FCOMMON_OPT += -n32 | |||||
else | |||||
FCOMMON_OPT += -n64 | |||||
endif | |||||
ifeq ($(CORE), LOONGSON3A) | |||||
FCOMMON_OPT += -loongson3 -static | |||||
endif | |||||
ifeq ($(CORE), LOONGSON3B) | |||||
FCOMMON_OPT += -loongson3 -static | |||||
endif | |||||
else | |||||
ifndef BINARY64 | ifndef BINARY64 | ||||
FCOMMON_OPT += -m32 | FCOMMON_OPT += -m32 | ||||
else | else | ||||
FCOMMON_OPT += -m64 | FCOMMON_OPT += -m64 | ||||
endif | endif | ||||
endif | |||||
ifdef USE_OPENMP | ifdef USE_OPENMP | ||||
FEXTRALIB += -lstdc++ | FEXTRALIB += -lstdc++ | ||||
@@ -581,12 +603,30 @@ endif | |||||
endif | endif | ||||
ifeq ($(C_COMPILER), OPEN64) | ifeq ($(C_COMPILER), OPEN64) | ||||
ifeq ($(ARCH), mips64) | |||||
ifndef BINARY64 | |||||
CCOMMON_OPT += -n32 | |||||
else | |||||
CCOMMON_OPT += -n64 | |||||
endif | |||||
ifeq ($(CORE), LOONGSON3A) | |||||
CCOMMON_OPT += -loongson3 -static | |||||
endif | |||||
ifeq ($(CORE), LOONGSON3B) | |||||
CCOMMON_OPT += -loongson3 -static | |||||
endif | |||||
else | |||||
ifndef BINARY64 | ifndef BINARY64 | ||||
CCOMMON_OPT += -m32 | CCOMMON_OPT += -m32 | ||||
else | else | ||||
CCOMMON_OPT += -m64 | CCOMMON_OPT += -m64 | ||||
endif | endif | ||||
endif | endif | ||||
endif | |||||
ifeq ($(C_COMPILER), SUN) | ifeq ($(C_COMPILER), SUN) | ||||
CCOMMON_OPT += -w | CCOMMON_OPT += -w | ||||
@@ -32,6 +32,10 @@ On X86 box, compile this library for loongson3a CPU. | |||||
make BINARY=64 CC=mips64el-unknown-linux-gnu-gcc FC=mips64el-unknown-linux-gnu-gfortran HOSTCC=gcc TARGET=LOONGSON3A | make BINARY=64 CC=mips64el-unknown-linux-gnu-gcc FC=mips64el-unknown-linux-gnu-gfortran HOSTCC=gcc TARGET=LOONGSON3A | ||||
On X86 box, compile this library for loongson3a CPU with loongcc (based on Open64) compiler. | |||||
make CC=loongcc FC=loongf95 HOSTCC=gcc TARGET=LOONGSON3A CROSS=1 CROSS_SUFFIX=mips64el-st-linux-gnu- NO_LAPACKE=1 NO_SHARED=1 BINARY=32 | |||||
### Debug version | ### Debug version | ||||
make DEBUG=1 | make DEBUG=1 | ||||
@@ -255,8 +255,8 @@ REALNAME: ;\ | |||||
#endif | #endif | ||||
#if defined(LOONGSON3B) | #if defined(LOONGSON3B) | ||||
#define PAGESIZE (32UL << 10) | |||||
#define FIXED_PAGESIZE (32UL << 10) | |||||
#define PAGESIZE (16UL << 10) | |||||
#define FIXED_PAGESIZE (16UL << 10) | |||||
#endif | #endif | ||||
#ifndef PAGESIZE | #ifndef PAGESIZE | ||||
@@ -71,7 +71,7 @@ int CNAME(int mode, blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, int ( | |||||
queue[num_cpu].args = arg; | queue[num_cpu].args = arg; | ||||
queue[num_cpu].range_m = range_m; | queue[num_cpu].range_m = range_m; | ||||
queue[num_cpu].range_n = &range[num_cpu]; | queue[num_cpu].range_n = &range[num_cpu]; | ||||
#if defined(LOONGSON3A) | |||||
#if 0 //defined(LOONGSON3A) | |||||
queue[num_cpu].sa = sa + GEMM_OFFSET_A1 * num_cpu; | queue[num_cpu].sa = sa + GEMM_OFFSET_A1 * num_cpu; | ||||
queue[num_cpu].sb = queue[num_cpu].sa + GEMM_OFFSET_A1 * 5; | queue[num_cpu].sb = queue[num_cpu].sa + GEMM_OFFSET_A1 * 5; | ||||
#else | #else | ||||
@@ -83,7 +83,7 @@ int CNAME(int mode, blas_arg_t *arg, BLASLONG *range_m, BLASLONG *range_n, int ( | |||||
} | } | ||||
if (num_cpu) { | if (num_cpu) { | ||||
#if defined(LOONGSON3A) | |||||
#if 0 //defined(LOONGSON3A) | |||||
queue[0].sa = sa; | queue[0].sa = sa; | ||||
queue[0].sb = sa + GEMM_OFFSET_A1 * 5; | queue[0].sb = sa + GEMM_OFFSET_A1 * 5; | ||||
#else | #else | ||||