Skip to content

Commit a5d0d21

Browse files
pengxuyinshiyou
authored andcommitted
loongarch64: Add zgemm and cgemm optimization
1 parent 546f135 commit a5d0d21

14 files changed

+4621
-5
lines changed

common_loongarch64.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ static inline int WhereAmI(void){
144144
#define XVCMPLT xvfcmp.clt.d
145145
#define XVMUL xvfmul.d
146146
#define XVMSUB xvfmsub.d
147+
#define XVNMSUB xvfnmsub.d
147148

148149
#define VFSUB vfsub.d
149150
#define VFADD vfadd.d
@@ -158,6 +159,7 @@ static inline int WhereAmI(void){
158159
#define VCMPLT vfcmp.clt.d
159160
#define VMUL vfmul.d
160161
#define VMSUB vfmsub.d
162+
#define VNMSUB vfnmsub.d
161163

162164
#else
163165

@@ -198,6 +200,7 @@ static inline int WhereAmI(void){
198200
#define XVCMPLT xvfcmp.clt.s
199201
#define XVMUL xvfmul.s
200202
#define XVMSUB xvfmsub.s
203+
#define XVNMSUB xvfnmsub.s
201204

202205
#define VFSUB vfsub.s
203206
#define VFADD vfadd.s
@@ -212,6 +215,7 @@ static inline int WhereAmI(void){
212215
#define VCMPLT vfcmp.clt.s
213216
#define VMUL vfmul.s
214217
#define VMSUB vfmsub.s
218+
#define VNMSUB vfnmsub.s
215219

216220
#endif /* defined(DOUBLE) */
217221

kernel/loongarch64/KERNEL.LOONGSON2K1000

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,16 @@ DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
9595
DTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
9696
DTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
9797
DTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
98+
99+
CGEMMKERNEL = cgemm_kernel_2x2_lsx.S
100+
CGEMMONCOPY = cgemm_ncopy_2_lsx.S
101+
CGEMMOTCOPY = cgemm_tcopy_2_lsx.S
102+
CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX)
103+
CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX)
104+
105+
CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
106+
CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
107+
CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
108+
CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
109+
98110
endif

kernel/loongarch64/KERNEL.LOONGSON3R5

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,35 @@ SGEMMOTCOPYOBJ = sgemm_otcopy$(TSUFFIX).$(SUFFIX)
107107
SGEMVNKERNEL = sgemv_n_8_lasx.S
108108
SGEMVTKERNEL = sgemv_t_8_lasx.S
109109

110+
CGEMMKERNEL = cgemm_kernel_2x2_lsx.S
111+
CGEMMONCOPY = cgemm_ncopy_2_lsx.S
112+
CGEMMOTCOPY = cgemm_tcopy_2_lsx.S
113+
CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX)
114+
CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX)
115+
116+
CTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
117+
CTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
118+
CTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
119+
CTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
120+
121+
ZGEMMKERNEL = zgemm_kernel_2x2_lasx.S
122+
ZGEMMONCOPY = zgemm_ncopy_2_lasx.S
123+
ZGEMMOTCOPY = zgemm_tcopy_2_lasx.S
124+
ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX)
125+
ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX)
126+
127+
ZTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
128+
ZTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
129+
ZTRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
130+
ZTRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
131+
110132
DTRSMKERNEL_LN = dtrsm_kernel_LN_16x4_lasx.S
111133
DTRSMKERNEL_LT = dtrsm_kernel_LT_16x4_lasx.S
112134
DTRSMKERNEL_RN = dtrsm_kernel_RN_16x4_lasx.S
113135
DTRSMKERNEL_RT = dtrsm_kernel_RT_16x4_lasx.S
114-
endif
115136

116137
STRSMKERNEL_LN = ../generic/trsm_kernel_LN.c
117138
STRSMKERNEL_LT = ../generic/trsm_kernel_LT.c
118139
STRSMKERNEL_RN = ../generic/trsm_kernel_RN.c
119140
STRSMKERNEL_RT = ../generic/trsm_kernel_RT.c
141+
endif

0 commit comments

Comments
 (0)