diff --git a/Makefile.alpha b/Makefile.alpha index bd4f4d58b..97e4d757e 100644 --- a/Makefile.alpha +++ b/Makefile.alpha @@ -1,42 +1,24 @@ -CPP = $(CC) -E -RANLIB = ranlib - -ifeq ($(LIBSUBARCH), EV4) -LIBNAME = $(LIBPREFIX)_ev4.a -LIBNAME_P = $(LIBPREFIX)_ev4_p.a -endif - -ifeq ($(LIBSUBARCH), EV5) -LIBNAME = $(LIBPREFIX)_ev5.a -LIBNAME_P = $(LIBPREFIX)_ev5_p.a -endif - -ifeq ($(LIBSUBARCH), EV6) -LIBNAME = $(LIBPREFIX)_ev6.a -LIBNAME_P = $(LIBPREFIX)_ev6_p.a -endif - ifneq ($(COMPILER), NATIVE) # GCC User -ifeq ($(LIBSUBARCH), EV4) -OPTION += -DEV4 -mcpu=ev4 +ifeq ($(CORE), EV4) +CCOMMON_OPT += -mcpu=ev4 endif -ifeq ($(LIBSUBARCH), EV5) -OPTION += -DEV5 -mcpu=ev5 +ifeq ($(CORE), EV5) +CCOMMON_OPT += -mcpu=ev5 endif -ifeq ($(LIBSUBARCH), EV6) -OPTION += -DEV6 -mcpu=ev6 +ifeq ($(CORE), EV6) +CCOMMON_OPT += -mcpu=ev6 endif else # Compaq Compiler User -ifeq ($(LIBSUBARCH), EV4) -OPTION += -DEV4 -tune ev4 -arch ev4 +ifeq ($(CORE), EV4) +CCOMMON_OPT += -tune ev4 -arch ev4 endif -ifeq ($(LIBSUBARCH), EV5) -OPTION += -DEV5 -tune ev5 -arch ev5 +ifeq ($(CORE), EV5) +CCOMMON_OPT += -tune ev5 -arch ev5 endif -ifeq ($(LIBSUBARCH), EV6) -OPTION += -DEV6 -tune ev6 -arch ev6 +ifeq ($(CORE), EV6) +CCOMMON_OPT += -tune ev6 -arch ev6 endif endif diff --git a/TargetList.txt b/TargetList.txt index d17caf480..6274c4a74 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -128,3 +128,7 @@ LOONGSON2K1000 12. Elbrus E2000: E2K +13. Alpha +EV4 +EV5 +EV6 diff --git a/common_alpha.h b/common_alpha.h index f1ea8ff94..021eb93ae 100644 --- a/common_alpha.h +++ b/common_alpha.h @@ -43,7 +43,7 @@ #define MB asm("mb") #define WMB asm("wmb") -#define RMB asm("rmb") +#define RMB asm("mb") static void __inline blas_lock(unsigned long *address){ #ifndef __DECC diff --git a/common_macro.h b/common_macro.h index d2fa822c2..3226d0f11 100644 --- a/common_macro.h +++ b/common_macro.h @@ -2612,7 +2612,7 @@ #ifndef ASSEMBLER #if !defined(DYNAMIC_ARCH) \ && (defined(ARCH_X86) || defined(ARCH_X86_64) || defined(ARCH_IA64) || defined(ARCH_MIPS64) || defined(ARCH_ARM64) \ - || defined(ARCH_LOONGARCH64) || defined(ARCH_E2K)) + || defined(ARCH_LOONGARCH64) || defined(ARCH_E2K) || defined(ARCH_ALPHA)) extern BLASLONG gemm_offset_a; extern BLASLONG gemm_offset_b; extern BLASLONG sbgemm_p; diff --git a/cpuid_alpha.c b/cpuid_alpha.c index 58dccdefc..e0e019af2 100644 --- a/cpuid_alpha.c +++ b/cpuid_alpha.c @@ -59,6 +59,11 @@ void get_subarchitecture(void){ printf("ev%d", implver() + 4); } + +void get_corename(void){ + printf("EV%d", implver() + 4); +} + void get_subdirname(void){ printf("alpha"); } diff --git a/getarch.c b/getarch.c index 7761551ea..403f3ef7b 100644 --- a/getarch.c +++ b/getarch.c @@ -146,6 +146,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* #define FORCE_SPARCV7 */ /* #define FORCE_ZARCH_GENERIC */ /* #define FORCE_Z13 */ +/* #define FORCE_EV4 */ +/* #define FORCE_EV5 */ +/* #define FORCE_EV6 */ /* #define FORCE_GENERIC */ #ifdef FORCE_P2 @@ -1601,6 +1604,42 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define CORENAME "Z14" #endif +#ifdef FORCE_EV4 +#define FORCE +#define ARCHITECTURE "ALPHA" +#define SUBARCHITECTURE "ev4" +#define ARCHCONFIG "-DEV4 " \ + "-DL1_DATA_SIZE=16384 -DL1_DATA_LINESIZE=32 " \ + "-DL2_SIZE=2097152 -DL2_LINESIZE=32 " \ + "-DDTB_DEFAULT_ENTRIES=32 -DDTB_SIZE=8192 " +#define LIBNAME "ev4" +#define CORENAME "EV4" +#endif + +#ifdef FORCE_EV5 +#define FORCE +#define ARCHITECTURE "ALPHA" +#define SUBARCHITECTURE "ev5" +#define ARCHCONFIG "-DEV5 " \ + "-DL1_DATA_SIZE=16384 -DL1_DATA_LINESIZE=32 " \ + "-DL2_SIZE=2097152 -DL2_LINESIZE=64 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=8192 " +#define LIBNAME "ev5" +#define CORENAME "EV5" +#endif + +#ifdef FORCE_EV6 +#define FORCE +#define ARCHITECTURE "ALPHA" +#define SUBARCHITECTURE "ev6" +#define ARCHCONFIG "-DEV6 " \ + "-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=64 " \ + "-DL2_SIZE=4194304 -DL2_LINESIZE=64 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=8192 " +#define LIBNAME "ev6" +#define CORENAME "EV6" +#endif + #ifdef FORCE_C910V #define FORCE #define ARCHITECTURE "RISCV64" @@ -1777,7 +1816,7 @@ int main(int argc, char *argv[]){ #ifdef FORCE printf("CORE=%s\n", CORENAME); #else -#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv) +#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv) || defined(__alpha__) printf("CORE=%s\n", get_corename()); #endif #endif diff --git a/kernel/alpha/amax.S b/kernel/alpha/amax.S index e528adc07..88635e8ec 100644 --- a/kernel/alpha/amax.S +++ b/kernel/alpha/amax.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/asum.S b/kernel/alpha/asum.S index b312d064b..54725b5cc 100644 --- a/kernel/alpha/asum.S +++ b/kernel/alpha/asum.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/axpy.S b/kernel/alpha/axpy.S index 1007b063b..403b89df1 100644 --- a/kernel/alpha/axpy.S +++ b/kernel/alpha/axpy.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 40 diff --git a/kernel/alpha/cabs.S b/kernel/alpha/cabs.S index 5fa27af53..79b92836b 100644 --- a/kernel/alpha/cabs.S +++ b/kernel/alpha/cabs.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + .set noat .set noreorder diff --git a/kernel/alpha/cnrm2.S b/kernel/alpha/cnrm2.S index bd1ab8782..445eaa7ea 100644 --- a/kernel/alpha/cnrm2.S +++ b/kernel/alpha/cnrm2.S @@ -39,7 +39,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCH_SIZE 80 diff --git a/kernel/alpha/copy.S b/kernel/alpha/copy.S index 749039c9e..315a02b1e 100644 --- a/kernel/alpha/copy.S +++ b/kernel/alpha/copy.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/cscal.S b/kernel/alpha/cscal.S index bba3137a9..a09306a1c 100644 --- a/kernel/alpha/cscal.S +++ b/kernel/alpha/cscal.S @@ -42,7 +42,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + .globl NAME .ent NAME diff --git a/kernel/alpha/dnrm2.S b/kernel/alpha/dnrm2.S index 0dfb64924..c71a8e3c9 100644 --- a/kernel/alpha/dnrm2.S +++ b/kernel/alpha/dnrm2.S @@ -39,7 +39,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCH_SIZE 80 diff --git a/kernel/alpha/dot.S b/kernel/alpha/dot.S index 330196c78..fe84c719f 100644 --- a/kernel/alpha/dot.S +++ b/kernel/alpha/dot.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/gemm_beta.S b/kernel/alpha/gemm_beta.S index 44b2fada1..e234a3216 100644 --- a/kernel/alpha/gemm_beta.S +++ b/kernel/alpha/gemm_beta.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + .set noat .set noreorder diff --git a/kernel/alpha/gemm_kernel_4x4.S b/kernel/alpha/gemm_kernel_4x4.S index c55d817df..8fda1ab5a 100644 --- a/kernel/alpha/gemm_kernel_4x4.S +++ b/kernel/alpha/gemm_kernel_4x4.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified." diff --git a/kernel/alpha/gemv_n.S b/kernel/alpha/gemv_n.S index 3e9d1d7fb..0fcd5b865 100644 --- a/kernel/alpha/gemv_n.S +++ b/kernel/alpha/gemv_n.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define STACKSIZE 64 #define PREFETCHSIZE 32 diff --git a/kernel/alpha/gemv_t.S b/kernel/alpha/gemv_t.S index ea95546e8..f9432486f 100644 --- a/kernel/alpha/gemv_t.S +++ b/kernel/alpha/gemv_t.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define STACKSIZE 64 #define PREFETCHSIZE 32 diff --git a/kernel/alpha/iamax.S b/kernel/alpha/iamax.S index 2be5d5d08..384df07e6 100644 --- a/kernel/alpha/iamax.S +++ b/kernel/alpha/iamax.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/imax.S b/kernel/alpha/imax.S index d8958c86a..785751075 100644 --- a/kernel/alpha/imax.S +++ b/kernel/alpha/imax.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/izamax.S b/kernel/alpha/izamax.S index c932581ae..d85b909e1 100644 --- a/kernel/alpha/izamax.S +++ b/kernel/alpha/izamax.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/lsame.S b/kernel/alpha/lsame.S index 082f79082..b1a7d5b70 100644 --- a/kernel/alpha/lsame.S +++ b/kernel/alpha/lsame.S @@ -36,7 +36,7 @@ /* or implied, of The University of Texas at Austin. */ /*********************************************************************/ -#include "version.h" + .set noat .set noreorder diff --git a/kernel/alpha/max.S b/kernel/alpha/max.S index af1b8fb85..935f27718 100644 --- a/kernel/alpha/max.S +++ b/kernel/alpha/max.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/rot.S b/kernel/alpha/rot.S index d1656d7e3..7a0991015 100644 --- a/kernel/alpha/rot.S +++ b/kernel/alpha/rot.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/scal.S b/kernel/alpha/scal.S index 2d95801c8..db6959520 100644 --- a/kernel/alpha/scal.S +++ b/kernel/alpha/scal.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/snrm2.S b/kernel/alpha/snrm2.S index 0dfb64924..c71a8e3c9 100644 --- a/kernel/alpha/snrm2.S +++ b/kernel/alpha/snrm2.S @@ -39,7 +39,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCH_SIZE 80 diff --git a/kernel/alpha/sum.S b/kernel/alpha/sum.S index 3902817a7..adc4ca5a1 100644 --- a/kernel/alpha/sum.S +++ b/kernel/alpha/sum.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/swap.S b/kernel/alpha/swap.S index 9e21990c4..34e58a72a 100644 --- a/kernel/alpha/swap.S +++ b/kernel/alpha/swap.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + PROLOGUE PROFCODE diff --git a/kernel/alpha/trsm_kernel_4x4_LN.S b/kernel/alpha/trsm_kernel_4x4_LN.S index 600b4e255..be5062244 100644 --- a/kernel/alpha/trsm_kernel_4x4_LN.S +++ b/kernel/alpha/trsm_kernel_4x4_LN.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified." diff --git a/kernel/alpha/trsm_kernel_4x4_LT.S b/kernel/alpha/trsm_kernel_4x4_LT.S index 81436d034..dfc7e98aa 100644 --- a/kernel/alpha/trsm_kernel_4x4_LT.S +++ b/kernel/alpha/trsm_kernel_4x4_LT.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified." diff --git a/kernel/alpha/trsm_kernel_4x4_RT.S b/kernel/alpha/trsm_kernel_4x4_RT.S index 71d6c43fa..d77ccc61b 100644 --- a/kernel/alpha/trsm_kernel_4x4_RT.S +++ b/kernel/alpha/trsm_kernel_4x4_RT.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified." diff --git a/kernel/alpha/zamax.S b/kernel/alpha/zamax.S index f1ea18d2d..96502a7a9 100644 --- a/kernel/alpha/zamax.S +++ b/kernel/alpha/zamax.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/zasum.S b/kernel/alpha/zasum.S index 67ed78584..37a1c234a 100644 --- a/kernel/alpha/zasum.S +++ b/kernel/alpha/zasum.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/zaxpy.S b/kernel/alpha/zaxpy.S index 1416769a1..1494c7fc0 100644 --- a/kernel/alpha/zaxpy.S +++ b/kernel/alpha/zaxpy.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 40 diff --git a/kernel/alpha/zdot.S b/kernel/alpha/zdot.S index 78dcae668..724526407 100644 --- a/kernel/alpha/zdot.S +++ b/kernel/alpha/zdot.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/zgemm_beta.S b/kernel/alpha/zgemm_beta.S index f7ca347f1..fcabe48d0 100644 --- a/kernel/alpha/zgemm_beta.S +++ b/kernel/alpha/zgemm_beta.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + .set noat .set noreorder diff --git a/kernel/alpha/zgemm_kernel_2x2.S b/kernel/alpha/zgemm_kernel_2x2.S index 67ba6d108..e56a3e10d 100644 --- a/kernel/alpha/zgemm_kernel_2x2.S +++ b/kernel/alpha/zgemm_kernel_2x2.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified." diff --git a/kernel/alpha/zgemv_n.S b/kernel/alpha/zgemv_n.S index fd602a3eb..2ebb918d5 100644 --- a/kernel/alpha/zgemv_n.S +++ b/kernel/alpha/zgemv_n.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define STACKSIZE 64 #define PREFETCHSIZE 32 diff --git a/kernel/alpha/zgemv_t.S b/kernel/alpha/zgemv_t.S index bac56eb3f..96d8caa27 100644 --- a/kernel/alpha/zgemv_t.S +++ b/kernel/alpha/zgemv_t.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define STACKSIZE 64 #define PREFETCHSIZE 32 diff --git a/kernel/alpha/znrm2.S b/kernel/alpha/znrm2.S index bd1ab8782..445eaa7ea 100644 --- a/kernel/alpha/znrm2.S +++ b/kernel/alpha/znrm2.S @@ -39,7 +39,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCH_SIZE 80 diff --git a/kernel/alpha/zrot.S b/kernel/alpha/zrot.S index afcdf12b4..61fe4f3d9 100644 --- a/kernel/alpha/zrot.S +++ b/kernel/alpha/zrot.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define N $16 #define X $17 diff --git a/kernel/alpha/zscal.S b/kernel/alpha/zscal.S index 1a2ac10b3..bed3033f8 100644 --- a/kernel/alpha/zscal.S +++ b/kernel/alpha/zscal.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/zsum.S b/kernel/alpha/zsum.S index 1ad0eb137..5c51bbc6f 100644 --- a/kernel/alpha/zsum.S +++ b/kernel/alpha/zsum.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #define PREFETCHSIZE 88 diff --git a/kernel/alpha/zswap.S b/kernel/alpha/zswap.S index a12a2c7a7..02be94115 100644 --- a/kernel/alpha/zswap.S +++ b/kernel/alpha/zswap.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + PROLOGUE PROFCODE diff --git a/kernel/alpha/ztrsm_kernel_2x2_LN.S b/kernel/alpha/ztrsm_kernel_2x2_LN.S index dcbe4e236..44d46daa7 100644 --- a/kernel/alpha/ztrsm_kernel_2x2_LN.S +++ b/kernel/alpha/ztrsm_kernel_2x2_LN.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified." diff --git a/kernel/alpha/ztrsm_kernel_2x2_LT.S b/kernel/alpha/ztrsm_kernel_2x2_LT.S index e0c82026e..f17987faf 100644 --- a/kernel/alpha/ztrsm_kernel_2x2_LT.S +++ b/kernel/alpha/ztrsm_kernel_2x2_LT.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified." diff --git a/kernel/alpha/ztrsm_kernel_2x2_RT.S b/kernel/alpha/ztrsm_kernel_2x2_RT.S index e890f599d..90b56c954 100644 --- a/kernel/alpha/ztrsm_kernel_2x2_RT.S +++ b/kernel/alpha/ztrsm_kernel_2x2_RT.S @@ -38,7 +38,7 @@ #define ASSEMBLER #include "common.h" -#include "version.h" + #if !defined(EV4) && !defined(EV5) && !defined(EV6) #error "Architecture is not specified."