Skip to content

Commit 232881c

Browse files
committed
Add a WASM SIMD128 2x2 complex GEMM microkernel
Vectorize the packed 2x2 CGEMM/ZGEMM inner loop with f32x4/f64x2 complex mul. Do not let kernel/wasm/KERNEL override the target kernel the way 4x4 real GEMM already guards TRMM. Signed-off-by: Julien Jerphanion <git@jjerphan.xyz>
1 parent 6d59c0d commit 232881c

3 files changed

Lines changed: 971 additions & 2 deletions

File tree

kernel/wasm/KERNEL

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,17 +142,37 @@ ifndef DGEMMOTCOPYOBJ
142142
DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX)
143143
endif
144144

145+
ifndef CGEMMKERNEL
145146
CGEMMKERNEL = ../generic/zgemmkernel_2x2.c
147+
endif
148+
ifndef CGEMMONCOPY
146149
CGEMMONCOPY = ../generic/zgemm_ncopy_2.c
150+
endif
151+
ifndef CGEMMOTCOPY
147152
CGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
153+
endif
154+
ifndef CGEMMONCOPYOBJ
148155
CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX)
156+
endif
157+
ifndef CGEMMOTCOPYOBJ
149158
CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX)
159+
endif
150160

161+
ifndef ZGEMMKERNEL
151162
ZGEMMKERNEL = ../generic/zgemmkernel_2x2.c
163+
endif
164+
ifndef ZGEMMONCOPY
152165
ZGEMMONCOPY = ../generic/zgemm_ncopy_2.c
166+
endif
167+
ifndef ZGEMMOTCOPY
153168
ZGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
169+
endif
170+
ifndef ZGEMMONCOPYOBJ
154171
ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX)
172+
endif
173+
ifndef ZGEMMOTCOPYOBJ
155174
ZGEMMOTCOPYOBJ = zgemm_otcopy$(TSUFFIX).$(SUFFIX)
175+
endif
156176

157177
ifndef STRSMKERNEL_LN
158178
STRSMKERNEL_LN = ../generic/trsm_kernel_LN.c

kernel/wasm/KERNEL.WASM128_GENERIC

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,13 @@ DGEMMOTCOPY = ../generic/gemm_tcopy_4.c
112112
DGEMMONCOPYOBJ = dgemm_oncopy$(TSUFFIX).$(SUFFIX)
113113
DGEMMOTCOPYOBJ = dgemm_otcopy$(TSUFFIX).$(SUFFIX)
114114

115-
CGEMMKERNEL = ../generic/zgemmkernel_2x2.c
115+
CGEMMKERNEL = zgemmkernel_2x2_wasm128.c
116116
CGEMMONCOPY = ../generic/zgemm_ncopy_2.c
117117
CGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
118118
CGEMMONCOPYOBJ = cgemm_oncopy$(TSUFFIX).$(SUFFIX)
119119
CGEMMOTCOPYOBJ = cgemm_otcopy$(TSUFFIX).$(SUFFIX)
120120

121-
ZGEMMKERNEL = ../generic/zgemmkernel_2x2.c
121+
ZGEMMKERNEL = zgemmkernel_2x2_wasm128.c
122122
ZGEMMONCOPY = ../generic/zgemm_ncopy_2.c
123123
ZGEMMOTCOPY = ../generic/zgemm_tcopy_2.c
124124
ZGEMMONCOPYOBJ = zgemm_oncopy$(TSUFFIX).$(SUFFIX)

0 commit comments

Comments
 (0)