| @@ -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 | ||||