Skip to content

Commit fc516af

Browse files
authored
Merge branch 'develop' into issue5414
2 parents 2b5d8c7 + e939c6c commit fc516af

96 files changed

Lines changed: 4001 additions & 619 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/apple_m.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ jobs:
4444
elif [ "$RUNNER_OS" == "macOS" ]; then
4545
# It looks like "gfortran" isn't working correctly unless "gcc" is re-installed.
4646
brew reinstall gcc
47-
brew install coreutils cmake ccache
47+
brew install coreutils ccache
4848
brew install llvm
4949
else
5050
echo "::error::$RUNNER_OS not supported"

.github/workflows/dynamic_arch.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
elif [ "$RUNNER_OS" == "macOS" ]; then
5050
# It looks like "gfortran" isn't working correctly unless "gcc" is re-installed.
5151
brew reinstall gcc
52-
brew install coreutils cmake ccache
52+
brew install coreutils ccache
5353
else
5454
echo "::error::$RUNNER_OS not supported"
5555
exit 1

.github/workflows/riscv64_vector.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
triple: riscv64-unknown-linux-gnu
1818
riscv_gnu_toolchain: https://github.com/riscv-collab/riscv-gnu-toolchain
1919
riscv_gnu_toolchain_version: 13.2.0
20-
riscv_gnu_toolchain_nightly_download_path: /releases/download/2024.02.02/riscv64-glibc-ubuntu-22.04-llvm-nightly-2024.02.02-nightly.tar.gz
20+
riscv_gnu_toolchain_nightly_download_path: /releases/download/2025.08.29/riscv64-glibc-ubuntu-22.04-llvm-nightly-2025.08.29-nightly.tar.xz
2121
strategy:
2222
fail-fast: false
2323
matrix:

Jenkinsfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@ pipeline {
1010
sh 'make clean && make'
1111
}
1212
}
13+
stage('CMakeBuild') {
14+
steps {
15+
sh 'sudo apt update && sudo apt install cmake -y && make clean && rm -rf build && mkdir build && cd build && cmake -DDYNAMIC_ARCH=1 .. && make'
16+
}
17+
}
1318
}
1419
}

Makefile.prebuild

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ TARGET_FLAGS = -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d
6464
endif
6565

6666
ifeq ($(TARGET), RISCV64_ZVL256B)
67-
TARGET_FLAGS = -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
67+
TARGET_FLAGS = -march=rv64imafdcv -mabi=lp64d
6868
endif
6969

7070
ifeq ($(TARGET), RISCV64_ZVL128B)
71-
TARGET_FLAGS = -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
71+
TARGET_FLAGS = -march=rv64imafdcv -mabi=lp64d
7272
endif
7373

7474
ifeq ($(TARGET), RISCV64_GENERIC)

Makefile.riscv64

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,20 @@ ifeq ($(CORE), x280)
66
CCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh_zvl512b -mabi=lp64d
77
FCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh -mabi=lp64d -static
88
endif
9+
RISCV64_OPT = rv64imafdcv
10+
ifeq ($(BUILD_HFLOAT16), 1)
11+
RISCV64_OPT := $(RISCV64_OPT)_zvfh_zfh
12+
endif
13+
ifeq ($(BUILD_BFLOAT16), 1)
14+
RISCV64_OPT := $(RISCV64_OPT)_zvfbfwma
15+
endif
916
ifeq ($(CORE), RISCV64_ZVL256B)
10-
CCOMMON_OPT += -march=rv64imafdcv_zvl256b_zvfh_zfh -mabi=lp64d
11-
FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
17+
CCOMMON_OPT += -march=$(RISCV64_OPT)_zvl256b -mabi=lp64d
18+
FCOMMON_OPT += -march=$(RISCV64_OPT) -mabi=lp64d
1219
endif
1320
ifeq ($(CORE), RISCV64_ZVL128B)
14-
CCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
15-
FCOMMON_OPT += -march=rv64imafdcv_zvfh_zfh -mabi=lp64d
21+
CCOMMON_OPT += -march=$(RISCV64_OPT) -mabi=lp64d
22+
FCOMMON_OPT += -march=$(RISCV64_OPT) -mabi=lp64d
1623
endif
1724
ifeq ($(CORE), RISCV64_GENERIC)
1825
CCOMMON_OPT += -march=rv64imafdc -mabi=lp64d

Makefile.system

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -441,12 +441,10 @@ ifeq (x$(XCVER), x 15)
441441
CCOMMON_OPT += -Wl,-ld_classic
442442
FCOMMON_OPT += -Wl,-ld_classic
443443
endif
444-
ifeq (x$(XCVER), x 16)
445-
ifeq ($(F_COMPILER), GFORTRAN)
444+
ifeq ($(shell [ $(XCVER) -ge 16 ] && echo yes),yes)
446445
override CEXTRALIB := $(filter-out(-lto_library, $(CEXTRALIB)))
447446
endif
448447
endif
449-
endif
450448

451449
ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD DragonFly))
452450
MD5SUM = md5 -r

cblas.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,14 @@ void cblas_cgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enu
456456
void cblas_zgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array,
457457
OPENBLAS_CONST void * alpha_array, OPENBLAS_CONST void ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST void ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST void * beta_array, void ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size);
458458

459+
void cblas_sgemm_batch_strided(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float * A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST blasint stridea, OPENBLAS_CONST float * B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST blasint strideb, OPENBLAS_CONST float beta, float * C, OPENBLAS_CONST blasint ldc, OPENBLAS_CONST blasint stridec, OPENBLAS_CONST blasint group_size);
460+
461+
void cblas_dgemm_batch_strided(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double * A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST blasint stridea, OPENBLAS_CONST double * B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST blasint strideb, OPENBLAS_CONST double beta, double * C, OPENBLAS_CONST blasint ldc, OPENBLAS_CONST blasint stridec, OPENBLAS_CONST blasint group_size);
462+
463+
void cblas_cgemm_batch_strided(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void * alpha, OPENBLAS_CONST void * A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST blasint stridea, OPENBLAS_CONST void * B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST blasint strideb, OPENBLAS_CONST void * beta, void * C, OPENBLAS_CONST blasint ldc, OPENBLAS_CONST blasint stridec, OPENBLAS_CONST blasint group_size);
464+
465+
void cblas_zgemm_batch_strided(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void * alpha, OPENBLAS_CONST void * A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST blasint stridea, OPENBLAS_CONST void * B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST blasint strideb, OPENBLAS_CONST void * beta, void * C, OPENBLAS_CONST blasint ldc, OPENBLAS_CONST blasint stridec, OPENBLAS_CONST blasint group_size);
466+
459467
/*** BFLOAT16 and INT8 extensions ***/
460468
/* convert float array to BFLOAT16 array by rounding */
461469
void cblas_sbstobf16(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *in, OPENBLAS_CONST blasint incin, bfloat16 *out, OPENBLAS_CONST blasint incout);
@@ -477,6 +485,7 @@ void cblas_sbgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum C
477485
void cblas_sbgemm_batch(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransA_array, OPENBLAS_CONST enum CBLAS_TRANSPOSE * TransB_array, OPENBLAS_CONST blasint * M_array, OPENBLAS_CONST blasint * N_array, OPENBLAS_CONST blasint * K_array,
478486
OPENBLAS_CONST float * alpha_array, OPENBLAS_CONST bfloat16 ** A_array, OPENBLAS_CONST blasint * lda_array, OPENBLAS_CONST bfloat16 ** B_array, OPENBLAS_CONST blasint * ldb_array, OPENBLAS_CONST float * beta_array, float ** C_array, OPENBLAS_CONST blasint * ldc_array, OPENBLAS_CONST blasint group_count, OPENBLAS_CONST blasint * group_size);
479487

488+
void cblas_sbgemm_batch_strided(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST bfloat16 * A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST blasint stridea, OPENBLAS_CONST bfloat16 * B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST blasint strideb, OPENBLAS_CONST float beta, float * C, OPENBLAS_CONST blasint ldc, OPENBLAS_CONST blasint stridec, OPENBLAS_CONST blasint group_size);
480489
/*** FLOAT16 extensions ***/
481490
void cblas_shgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K,
482491
OPENBLAS_CONST float alpha, OPENBLAS_CONST hfloat16 *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST hfloat16 *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc);

cmake/arch.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,13 @@ if (DYNAMIC_ARCH)
9494
set(DYNAMIC_CORE PRESCOTT ${DYNAMIC_LIST})
9595
endif ()
9696
endif ()
97-
97+
98+
if (ZARCH)
99+
set(DYNAMIC_CORE Z13 Z14 ZARCH_GENERIC)
100+
set(DYN_Z13 1)
101+
set(DYN_Z14 1)
102+
endif ()
103+
98104
if (LOONGARCH64)
99105
set(DYNAMIC_CORE LA64_GENERIC LA264 LA464)
100106
endif ()

cmake/cc.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LS
8686
set(BINARY_DEFINED 1)
8787
endif ()
8888

89+
if (ZARCH)
90+
set (BINARY_DEFINED 1)
91+
endif ()
92+
8993
if (CMAKE_SYSTEM_NAME STREQUAL "AIX")
9094
set(BINARY_DEFINED 1)
9195
endif ()

0 commit comments

Comments
 (0)