Skip to content

Commit 99d0557

Browse files
committed
Enable SAXPY for WebAssembly SIMD backend
1 parent 7ff3588 commit 99d0557

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

kernel/wasm/KERNEL.WASM128_GENERIC

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ DSUMKERNEL = ../arm/sum.c
4040
CSUMKERNEL = ../arm/zsum.c
4141
ZSUMKERNEL = ../arm/zsum.c
4242

43-
SAXPYKERNEL = ../riscv64/axpy.c
43+
SAXPYKERNEL = ../x86_64/saxpy.c
4444
DAXPYKERNEL = ../x86_64/daxpy.c
4545
CAXPYKERNEL = ../riscv64/zaxpy.c
4646
ZAXPYKERNEL = ../riscv64/zaxpy.c

kernel/x86_64/saxpy.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,23 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4343

4444

4545
#ifndef HAVE_KERNEL_16
46+
#include"../simd/intrin.h"
4647

4748
static void saxpy_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha)
4849
{
4950
BLASLONG register i = 0;
5051
FLOAT a = *alpha;
5152

53+
#if V_SIMD
54+
v_f32 __alpha, tmp;
55+
__alpha = v_setall_f32(*alpha);
56+
const int vstep = v_nlanes_f32;
57+
58+
for (; i < n; i += vstep) {
59+
tmp = v_muladd_f32(__alpha, v_loadu_f32(x + i), v_loadu_f32(y + i));
60+
v_storeu_f32(y + i, tmp);
61+
}
62+
#else
5263
while(i < n)
5364
{
5465
y[i] += a * x[i];
@@ -62,6 +73,7 @@ static void saxpy_kernel_16(BLASLONG n, FLOAT *x, FLOAT *y, FLOAT *alpha)
6273
i+=8 ;
6374

6475
}
76+
#endif
6577

6678
}
6779

@@ -131,4 +143,3 @@ int CNAME(BLASLONG n, BLASLONG dummy0, BLASLONG dummy1, FLOAT da, FLOAT *x, BLAS
131143

132144
}
133145

134-

0 commit comments

Comments
 (0)