diff options
author | Martin Kroeker <martin@ruby.chemie.uni-freiburg.de> | 2022-01-22 18:53:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-22 18:53:38 +0100 |
commit | bc93f468ef98c7bb76bdcaf779e9dbe7231303b4 (patch) | |
tree | 0d21019146dc7f951a351f0976b499a9a6e6c0ad | |
parent | 1937b4e435cce48dbf8d7d124800e03e1ba5d30d (diff) | |
download | openblas-bc93f468ef98c7bb76bdcaf779e9dbe7231303b4.tar.gz openblas-bc93f468ef98c7bb76bdcaf779e9dbe7231303b4.tar.bz2 openblas-bc93f468ef98c7bb76bdcaf779e9dbe7231303b4.zip |
Add Elbrus E2000 architecture as generic x86_64 compatible
-rw-r--r-- | Makefile.e2k | 1 | ||||
-rw-r--r-- | TargetList.txt | 4 | ||||
-rw-r--r-- | common.h | 4 | ||||
-rw-r--r-- | common_e2k.h | 64 | ||||
-rw-r--r-- | common_macro.h | 2 | ||||
-rw-r--r-- | getarch.c | 11 |
6 files changed, 85 insertions, 1 deletions
diff --git a/Makefile.e2k b/Makefile.e2k new file mode 100644 index 000000000..a5e50b1f0 --- /dev/null +++ b/Makefile.e2k @@ -0,0 +1 @@ +COPT = -Wall -O2 # -DGEMMTEST diff --git a/TargetList.txt b/TargetList.txt index 97c8a8f06..a5a07a661 100644 --- a/TargetList.txt +++ b/TargetList.txt @@ -115,3 +115,7 @@ C910V 11.LOONGARCH64: LOONGSON3R5 + +12. Elbrus E2000: +E2K + @@ -474,6 +474,10 @@ please https://github.com/xianyi/OpenBLAS/issues/246 #include "common_loongarch64.h" #endif +#ifdef ARCH_E2K +#include "common_e2k.h" +#endif + #ifndef ASSEMBLER #ifdef OS_WINDOWSSTORE typedef char env_var_t[MAX_PATH]; diff --git a/common_e2k.h b/common_e2k.h new file mode 100644 index 000000000..0739c9473 --- /dev/null +++ b/common_e2k.h @@ -0,0 +1,64 @@ +/***************************************************************************** +Copyright (c) 2011-2016, The OpenBLAS Project +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + 3. Neither the name of the OpenBLAS project nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**********************************************************************************/ + +#ifndef COMMON_E2K +#define COMMON_E2K + +#ifdef ASSEMBLER +#error +#endif + +#define MB do { __asm__ __volatile__("": : :"memory"); } while (0) +#define WMB do { __asm__ __volatile__("": : :"memory"); } while (0) +#define RMB + +#define INLINE __attribute__((__always_inline__)) inline + +static inline int blas_quickdivide(blasint x, blasint y) { + return x / y; +} + +#ifndef PAGESIZE +#define PAGESIZE ( 4 << 10) +#endif +#define HUGE_PAGESIZE ( 2 << 20) + +#ifndef BUFFERSIZE +#define BUFFER_SIZE (32 << 20) +#else +#define BUFFER_SIZE (32 << BUFFERSIZE) +#endif + +#define SEEK_ADDRESS + +#endif + diff --git a/common_macro.h b/common_macro.h index cf2a3fd88..9826f1809 100644 --- a/common_macro.h +++ b/common_macro.h @@ -2611,7 +2611,7 @@ #ifndef ASSEMBLER #if defined(ARCH_X86) || defined(ARCH_X86_64) || defined(ARCH_IA64) || defined(ARCH_MIPS64) || defined(ARCH_ARM64)\ -|| defined(ARCH_LOONGARCH64) +|| defined(ARCH_LOONGARCH64) || defined(ARCH_E2K) extern BLASLONG gemm_offset_a; extern BLASLONG gemm_offset_b; extern BLASLONG sbgemm_p; @@ -1536,6 +1536,17 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif +#if defined(FORCE_E2K) || defined(__e2k__) +#define FORCE +#define ARCHITECTURE "E2K" +#define ARCHCONFIG "-DGENERIC " \ + "-DL1_DATA_SIZE=16384 -DL1_DATA_LINESIZE=64 " \ + "-DL2_SIZE=524288 -DL2_LINESIZE=64 " \ + "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " +#define LIBNAME "generic" +#define CORENAME "generic" +#endif + #ifndef FORCE #ifdef USER_TARGET |