Skip to content

Commit bef4791

Browse files
committed
Initial version for riscv sifive x280
1 parent c5c4888 commit bef4791

Some content is hidden

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

80 files changed

+15188
-0
lines changed

Diff for: Makefile.install

+7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ PREFIX ?= /opt/OpenBLAS
88
OPENBLAS_INCLUDE_DIR := $(PREFIX)/include
99
OPENBLAS_LIBRARY_DIR := $(PREFIX)/lib
1010
OPENBLAS_BINARY_DIR := $(PREFIX)/bin
11+
OPENBLAS_RELEASE_DIR := $(PREFIX)/release
1112
OPENBLAS_BUILD_DIR := $(CURDIR)
1213
OPENBLAS_CMAKE_DIR := $(OPENBLAS_LIBRARY_DIR)/cmake/$(LIBSONAMEBASE)
1314
OPENBLAS_CMAKE_CONFIG := OpenBLASConfig.cmake
@@ -38,6 +39,7 @@ install : lib.grd
3839
@-mkdir -p "$(DESTDIR)$(OPENBLAS_INCLUDE_DIR)"
3940
@-mkdir -p "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
4041
@-mkdir -p "$(DESTDIR)$(OPENBLAS_BINARY_DIR)"
42+
@-mkdir -p "$(DESTDIR)$(OPENBLAS_RELEASE_DIR)"
4143
@-mkdir -p "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)"
4244
@-mkdir -p "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)"
4345
@echo Generating openblas_config.h in $(DESTDIR)$(OPENBLAS_INCLUDE_DIR)
@@ -202,3 +204,8 @@ endif
202204
@echo " endif ()" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG_VERSION)"
203205
@echo "endif ()" >> "$(DESTDIR)$(OPENBLAS_CMAKE_DIR)/$(OPENBLAS_CMAKE_CONFIG_VERSION)"
204206
@echo Install OK!
207+
#Generating release tar
208+
@echo Generating $(OPENBLAS_RELEASE_DIR)/$(basename $(LIBNAME)).tar.gz
209+
@tar -cvz --file=$(OPENBLAS_RELEASE_DIR)/$(basename $(LIBNAME)).tar.gz --directory=$(PREFIX) --exclude=release .
210+
211+

Diff for: Makefile.prebuild

+8
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@ ifeq ($(TARGET), C910V)
5555
TARGET_FLAGS = -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d
5656
endif
5757

58+
ifeq ($(TARGET), x280)
59+
TARGET_FLAGS = -march=rv64imafdcv_zba_zbb_zfh_xsfvqmaccqoq_xsfvfhbfmin -mabi=lp64d -mcpu=sifive-x280
60+
endif
61+
62+
ifeq ($(TARGET), RISCV64_GENERIC)
63+
TARGET_FLAGS = -march=rv64imafdc -mabi=lp64d
64+
endif
65+
5866
all: getarch_2nd
5967
./getarch_2nd 0 >> $(TARGET_MAKE)
6068
./getarch_2nd 1 >> $(TARGET_CONF)

Diff for: Makefile.riscv64

+8
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,11 @@ ifeq ($(CORE), C910V)
22
CCOMMON_OPT += -march=rv64imafdcv0p7_zfh_xtheadc -mabi=lp64d -mtune=c920
33
FCOMMON_OPT += -march=rv64imafdcv0p7_zfh_xtheadc -mabi=lp64d -mtune=c920 -static
44
endif
5+
ifeq ($(CORE), x280)
6+
CCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh_xsfvqmaccqoq_xsfvfhbfmin -mabi=lp64d -menable-experimental-extensions -mllvm --riscv-v-vector-bits-min=512 -mcpu=sifive-x280 -ffast-math
7+
FCOMMON_OPT += -march=rv64imafdcv_zba_zbb_zfh_xsfvqmaccqoq_xsfvfhbfmin -mabi=lp64d -menable-experimental-extensions -static
8+
endif
9+
ifeq ($(CORE), RISCV64_GENERIC)
10+
CCOMMON_OPT += -march=rv64imafdc -mabi=lp64d
11+
FCOMMON_OPT += -march=rv64imafdc -mabi=lp64d -static
12+
endif

Diff for: README.md

+5
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,11 @@ Please read `GotoBLAS_01Readme.txt` for older CPU models already supported by th
186186
```
187187
(also known to work on C906)
188188

189+
- **x280**: LLVM auto-vectorization using RISC-V Vector extension 1.0.
190+
```sh
191+
make HOSTCC=gcc TARGET=x280 NUM_THREADS=8 CC=riscv64-unknown-linux-gnu-clang FC=riscv64-unknown-linux-gnu-gfortran
192+
```
193+
189194
### Support for multiple targets in a single library
190195

191196
OpenBLAS can be built for multiple targets with runtime detection of the target cpu by specifiying `DYNAMIC_ARCH=1` in Makefile.rule, on the gmake command line or as `-DDYNAMIC_ARCH=TRUE` in cmake.

Diff for: TargetList.txt

+1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ Z14
120120
10.RISC-V 64:
121121
RISCV64_GENERIC
122122
C910V
123+
x280
123124

124125
11.LOONGARCH64:
125126
LOONGSONGENERIC

Diff for: benchmark/Makefile

+6
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ ESSL=/opt/ibm/lib
3737
#LIBESSL = -lesslsmp $(ESSL)/libxlomp_ser.so.1 $(ESSL)/libxlf90_r.so.1 $(ESSL)/libxlfmath.so.1 $(ESSL)/libxlsmp.so.1 /opt/ibm/xlC/13.1.3/lib/libxl.a
3838
LIBESSL = -lesslsmp $(ESSL)/libxlf90_r.so.1 $(ESSL)/libxlfmath.so.1 $(ESSL)/libxlsmp.so.1 /opt/ibm/xlC/13.1.3/lib/libxl.a
3939

40+
# x280 temporary workaround for gfortran
41+
ifeq ($(TARGET), x280)
42+
CCOMMON_OPT:=$(filter-out -mllvm --riscv-v-vector-bits-min=512,$(CCOMMON_OPT))
43+
endif
44+
45+
4046
ifneq ($(NO_LAPACK), 1)
4147
GOTO_LAPACK_TARGETS=slinpack.goto dlinpack.goto clinpack.goto zlinpack.goto \
4248
scholesky.goto dcholesky.goto ccholesky.goto zcholesky.goto \

Diff for: common_riscv64.h

+4
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ static inline int blas_quickdivide(blasint x, blasint y){
9292
#define SEEK_ADDRESS
9393

9494
#if defined(C910V)
95+
#include <riscv-vector.h>
96+
#endif
97+
98+
#if defined(x280)
9599
#include <riscv_vector.h>
96100
#endif
97101

Diff for: cpuid_riscv64.c

+2
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,12 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7272

7373
#define CPU_GENERIC 0
7474
#define CPU_C910V 1
75+
#define CPU_x280 2
7576

7677
static char *cpuname[] = {
7778
"RISCV64_GENERIC",
7879
"C910V"
80+
"x280"
7981
};
8082

8183
int detect(void){

Diff for: getarch.c

+12
Original file line numberDiff line numberDiff line change
@@ -1677,6 +1677,18 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
16771677
#define LIBNAME "c910v"
16781678
#define CORENAME "C910V"
16791679
#endif
1680+
#endif
1681+
#ifdef FORCE_x280
1682+
#define FORCE
1683+
#define ARCHITECTURE "RISCV64"
1684+
#define SUBARCHITECTURE "x280"
1685+
#define SUBDIRNAME "riscv64"
1686+
#define ARCHCONFIG "-Dx280 " \
1687+
"-DL1_DATA_SIZE=64536 -DL1_DATA_LINESIZE=32 " \
1688+
"-DL2_SIZE=262144 -DL2_LINESIZE=32 " \
1689+
"-DDTB_DEFAULT_ENTRIES=128 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=4 "
1690+
#define LIBNAME "x280"
1691+
#define CORENAME "x280"
16801692
#else
16811693
#endif
16821694

Diff for: kernel/riscv64/KERNEL.x280

+267
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
# **********************************************************************************
2+
# Copyright (c) 2022, The OpenBLAS Project
3+
# All rights reserved.
4+
# Redistribution and use in source and binary forms, with or without
5+
# modification, are permitted provided that the following conditions are
6+
# met:
7+
# 1. Redistributions of source code must retain the above copyright
8+
# notice, this list of conditions and the following disclaimer.
9+
# 2. Redistributions in binary form must reproduce the above copyright
10+
# notice, this list of conditions and the following disclaimer in
11+
# the documentation and/or other materials provided with the
12+
# distribution.
13+
# 3. Neither the name of the OpenBLAS project nor the names of
14+
# its contributors may be used to endorse or promote products
15+
# derived from this software without specific prior written permission.
16+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
# ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBLAS PROJECT OR CONTRIBUTORS BE
20+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
25+
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+
# **********************************************************************************
27+
28+
SAMAXKERNEL = amax_rvv.c
29+
DAMAXKERNEL = amax_rvv.c
30+
CAMAXKERNEL = zamax_rvv.c
31+
ZAMAXKERNEL = zamax_rvv.c
32+
33+
SAMINKERNEL = amin_rvv.c
34+
DAMINKERNEL = amin_rvv.c
35+
CAMINKERNEL = zamin_rvv.c
36+
ZAMINKERNEL = zamin_rvv.c
37+
38+
SMAXKERNEL = max_rvv.c
39+
DMAXKERNEL = max_rvv.c
40+
41+
SMINKERNEL = min_rvv.c
42+
DMINKERNEL = min_rvv.c
43+
44+
ISAMAXKERNEL = iamax_rvv.c
45+
IDAMAXKERNEL = iamax_rvv.c
46+
ICAMAXKERNEL = izamax_rvv.c
47+
IZAMAXKERNEL = izamax_rvv.c
48+
49+
ISAMINKERNEL = iamin_rvv.c
50+
IDAMINKERNEL = iamin_rvv.c
51+
ICAMINKERNEL = izamin_rvv.c
52+
IZAMINKERNEL = izamin_rvv.c
53+
54+
ISMAXKERNEL = imax_rvv.c
55+
IDMAXKERNEL = imax_rvv.c
56+
57+
ISMINKERNEL = imin_rvv.c
58+
IDMINKERNEL = imin_rvv.c
59+
60+
SASUMKERNEL = asum_rvv.c
61+
DASUMKERNEL = asum_rvv.c
62+
CASUMKERNEL = zasum_rvv.c
63+
ZASUMKERNEL = zasum_rvv.c
64+
65+
SSUMKERNEL = sum_rvv.c
66+
DSUMKERNEL = sum_rvv.c
67+
CSUMKERNEL = zsum_rvv.c
68+
ZSUMKERNEL = zsum_rvv.c
69+
70+
SAXPYKERNEL = axpy_rvv.c
71+
DAXPYKERNEL = axpy_rvv.c
72+
CAXPYKERNEL = zaxpy_rvv.c
73+
ZAXPYKERNEL = zaxpy_rvv.c
74+
75+
SAXPBYKERNEL = axpby_rvv.c
76+
DAXPBYKERNEL = axpby_rvv.c
77+
CAXPBYKERNEL = zaxpby_rvv.c
78+
ZAXPBYKERNEL = zaxpby_rvv.c
79+
80+
SCOPYKERNEL = copy_rvv.c
81+
DCOPYKERNEL = copy_rvv.c
82+
CCOPYKERNEL = zcopy_rvv.c
83+
ZCOPYKERNEL = zcopy_rvv.c
84+
85+
SDOTKERNEL = dot_rvv.c
86+
DDOTKERNEL = dot_rvv.c
87+
CDOTKERNEL = zdot_rvv.c
88+
ZDOTKERNEL = zdot_rvv.c
89+
DSDOTKERNEL = dot_rvv.c
90+
91+
SNRM2KERNEL = nrm2_rvv.c
92+
DNRM2KERNEL = nrm2_rvv.c
93+
CNRM2KERNEL = znrm2_rvv.c
94+
ZNRM2KERNEL = znrm2_rvv.c
95+
96+
SROTKERNEL = rot_rvv.c
97+
DROTKERNEL = rot_rvv.c
98+
CROTKERNEL = zrot_rvv.c
99+
ZROTKERNEL = zrot_rvv.c
100+
101+
SSCALKERNEL = scal_rvv.c
102+
DSCALKERNEL = scal_rvv.c
103+
CSCALKERNEL = zscal_rvv.c
104+
ZSCALKERNEL = zscal_rvv.c
105+
106+
SSWAPKERNEL = swap_rvv.c
107+
DSWAPKERNEL = swap_rvv.c
108+
CSWAPKERNEL = zswap_rvv.c
109+
ZSWAPKERNEL = zswap_rvv.c
110+
111+
SGEMVNKERNEL = gemv_n_rvv.c
112+
DGEMVNKERNEL = gemv_n_rvv.c
113+
CGEMVNKERNEL = zgemv_n_rvv.c
114+
ZGEMVNKERNEL = zgemv_n_rvv.c
115+
116+
SGEMVTKERNEL = gemv_t_rvv.c
117+
DGEMVTKERNEL = gemv_t_rvv.c
118+
CGEMVTKERNEL = zgemv_t_rvv.c
119+
ZGEMVTKERNEL = zgemv_t_rvv.c
120+
121+
CTRMMKERNEL = ztrmmkernel_2x2_rvv.c
122+
ZTRMMKERNEL = ztrmmkernel_2x2_rvv.c
123+
124+
# SGEMM_UNROLL_N set in params.h
125+
ifeq ($(SGEMM_UNROLL_N), 2)
126+
SGEMMKERNEL = gemmkernel_2x2_rvv.c
127+
SGEMMONCOPY = gemm_ncopy_2_rvv.c
128+
SGEMMOTCOPY = gemm_tcopy_2_rvv.c
129+
SGEMMONCOPYOBJ = sgemm_oncopy.o
130+
SGEMMOTCOPYOBJ = sgemm_otcopy.o
131+
132+
STRMMKERNEL = trmmkernel_2x2_rvv.c
133+
else ifeq ($(SGEMM_UNROLL_N), 4)
134+
SGEMMKERNEL = gemmkernel_4x4_rvv.c
135+
SGEMMONCOPY = gemm_ncopy_4_rvv.c
136+
SGEMMOTCOPY = ../generic/gemm_tcopy_4.c
137+
SGEMMONCOPYOBJ = sgemm_oncopy.o
138+
SGEMMOTCOPYOBJ = sgemm_otcopy.o
139+
140+
STRMMKERNEL = trmmkernel_4x4_rvv.c
141+
else ifeq ($(SGEMM_UNROLL_N), 8)
142+
# UNROLL_M is VLMAX
143+
SGEMMKERNEL = gemmkernel_rvv_v1x8.c
144+
SGEMMINCOPY = gemm_ncopy_rvv_v1.c
145+
SGEMMITCOPY = gemm_tcopy_rvv_v1.c
146+
SGEMMONCOPY = gemm_ncopy_$(SGEMM_UNROLL_N)_rvv.c
147+
SGEMMOTCOPY = gemm_tcopy_$(SGEMM_UNROLL_N)_rvv.c
148+
SGEMMINCOPYOBJ = sgemm_incopy$(TSUFFIX).$(SUFFIX)
149+
SGEMMITCOPYOBJ = sgemm_itcopy$(TSUFFIX).$(SUFFIX)
150+
SGEMMONCOPYOBJ = sgemm_oncopy$(TSUFFIX).$(SUFFIX)
151+
SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX)
152+
153+
STRMMKERNEL = trmmkernel_rvv_v1x8.c
154+
155+
STRMMUNCOPY_M = trmm_uncopy_rvv_v1.c
156+
STRMMLNCOPY_M = trmm_lncopy_rvv_v1.c
157+
STRMMUTCOPY_M = trmm_utcopy_rvv_v1.c
158+
STRMMLTCOPY_M = trmm_ltcopy_rvv_v1.c
159+
160+
SSYMMUCOPY_M = symm_ucopy_rvv_v1.c
161+
SSYMMLCOPY_M = symm_lcopy_rvv_v1.c
162+
endif
163+
164+
# SGEMM_UNROLL_N set in params.h
165+
ifeq ($(DGEMM_UNROLL_N), 2)
166+
DGEMMKERNEL = gemmkernel_2x2_rvv.c
167+
DGEMMONCOPY = gemm_ncopy_2_rvv.c
168+
DGEMMOTCOPY = gemm_tcopy_2_rvv.c
169+
DGEMMONCOPYOBJ = dgemm_oncopy.o
170+
DGEMMOTCOPYOBJ = dgemm_otcopy.o
171+
172+
DTRMMKERNEL = trmmkernel_2x2_rvv.c
173+
else ifeq ($(DGEMM_UNROLL_N), 4)
174+
DGEMMKERNEL = gemmkernel_4x4_rvv.c
175+
DGEMMONCOPY = gemm_ncopy_4_rvv.c
176+
DGEMMOTCOPY = ../generic/gemm_tcopy_4.c
177+
DGEMMONCOPYOBJ = dgemm_oncopy.o
178+
DGEMMOTCOPYOBJ = dgemm_otcopy.o
179+
180+
DTRMMKERNEL = trmmkernel_4x4_rvv.c
181+
else ifeq ($(DGEMM_UNROLL_N), 8)
182+
# UNROLL_M is VLMAX
183+
DGEMMKERNEL = gemmkernel_rvv_v1x8.c
184+
DGEMMINCOPY = gemm_ncopy_rvv_v1.c
185+
DGEMMITCOPY = gemm_tcopy_rvv_v1.c
186+
DGEMMONCOPY = gemm_ncopy_$(DGEMM_UNROLL_N)_rvv.c
187+
DGEMMOTCOPY = gemm_tcopy_$(DGEMM_UNROLL_N)_rvv.c
188+
DGEMMINCOPYOBJ = dgemm_incopy$(TSUFFIX).$(SUFFIX)
189+
DGEMMITCOPYOBJ = dgemm_itcopy$(TSUFFIX).$(SUFFIX)
190+
DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX)
191+
DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX)
192+
193+
DTRMMKERNEL = trmmkernel_rvv_v1x8.c
194+
DTRMMUNCOPY_M = trmm_uncopy_rvv_v1.c
195+
DTRMMLNCOPY_M = trmm_lncopy_rvv_v1.c
196+
DTRMMUTCOPY_M = trmm_utcopy_rvv_v1.c
197+
DTRMMLTCOPY_M = trmm_ltcopy_rvv_v1.c
198+
199+
DSYMMUCOPY_M = symm_ucopy_rvv_v1.c
200+
DSYMMLCOPY_M = symm_lcopy_rvv_v1.c
201+
endif
202+
203+
CGEMMKERNEL = ../generic/zgemmkernel_2x2.c
204+
CGEMMONCOPY = ../generic/zgemm_ncopy_2.c
205+
CGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
206+
CGEMMONCOPYOBJ = cgemm_oncopy.o
207+
CGEMMOTCOPYOBJ = cgemm_otcopy.o
208+
209+
ZGEMMKERNEL = ../generic/zgemmkernel_2x2.c
210+
ZGEMMONCOPY = ../generic/zgemm_ncopy_2.c
211+
ZGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
212+
ZGEMMONCOPYOBJ = zgemm_oncopy.o
213+
ZGEMMOTCOPYOBJ = zgemm_otcopy.o
214+
215+
STRSMKERNEL_LN = trsm_kernel_LN_rvv_v1.c
216+
STRSMKERNEL_LT = trsm_kernel_LT_rvv_v1.c
217+
STRSMKERNEL_RN = trsm_kernel_RN_rvv_v1.c
218+
STRSMKERNEL_RT = trsm_kernel_RT_rvv_v1.c
219+
220+
DTRSMKERNEL_LN = trsm_kernel_LN_rvv_v1.c
221+
DTRSMKERNEL_LT = trsm_kernel_LT_rvv_v1.c
222+
DTRSMKERNEL_RN = trsm_kernel_RN_rvv_v1.c
223+
DTRSMKERNEL_RT = trsm_kernel_RT_rvv_v1.c
224+
225+
CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
226+
CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
227+
CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
228+
CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
229+
230+
ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
231+
ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
232+
ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
233+
ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
234+
235+
TRSMCOPYLN_M = trsm_lncopy_rvv_v1.c
236+
TRSMCOPYLT_M = trsm_ltcopy_rvv_v1.c
237+
TRSMCOPYUN_M = trsm_uncopy_rvv_v1.c
238+
TRSMCOPYUT_M = trsm_utcopy_rvv_v1.c
239+
240+
SSYMV_U_KERNEL = symv_U_rvv.c
241+
SSYMV_L_KERNEL = symv_L_rvv.c
242+
DSYMV_U_KERNEL = symv_U_rvv.c
243+
DSYMV_L_KERNEL = symv_L_rvv.c
244+
CSYMV_U_KERNEL = ../generic/zsymv_k.c
245+
CSYMV_L_KERNEL = ../generic/zsymv_k.c
246+
ZSYMV_U_KERNEL = ../generic/zsymv_k.c
247+
ZSYMV_L_KERNEL = ../generic/zsymv_k.c
248+
249+
250+
LSAME_KERNEL = ../generic/lsame.c
251+
252+
SCABS_KERNEL = ../generic/cabs.c
253+
DCABS_KERNEL = ../generic/cabs.c
254+
QCABS_KERNEL = ../generic/cabs.c
255+
256+
ifndef SGEMM_BETA
257+
SGEMM_BETA = gemm_beta_rvv.c
258+
endif
259+
ifndef DGEMM_BETA
260+
DGEMM_BETA = gemm_beta_rvv.c
261+
endif
262+
ifndef CGEMM_BETA
263+
CGEMM_BETA = zgemm_beta_rvv.c
264+
endif
265+
ifndef ZGEMM_BETA
266+
ZGEMM_BETA = zgemm_beta_rvv.c
267+
endif

0 commit comments

Comments
 (0)