From aa1cebd45b89f48e0d76021f47d3095e8893ba13 Mon Sep 17 00:00:00 2001 From: Chip Kerchner Date: Tue, 10 Feb 2026 18:30:02 +0000 Subject: [PATCH] 128-bit versions. --- kernel/riscv64/shgemm_kernel_8x8_zvl128b.c | 372 ++++++++++++++++++++- 1 file changed, 370 insertions(+), 2 deletions(-) diff --git a/kernel/riscv64/shgemm_kernel_8x8_zvl128b.c b/kernel/riscv64/shgemm_kernel_8x8_zvl128b.c index 3197f7c00..9e720fd84 100644 --- a/kernel/riscv64/shgemm_kernel_8x8_zvl128b.c +++ b/kernel/riscv64/shgemm_kernel_8x8_zvl128b.c @@ -1,4 +1,3 @@ - #include "common.h" #include @@ -30,6 +29,16 @@ int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, IFLOAT *A, IFLOAT *B, vfloat16m1_t A0 = __riscv_vle16_v_f16m1( &A[ai+0*gvl], gvl ); ai += 8; +#ifdef FP16_NARROW + vfloat16m1_t result0 = __riscv_vfmul_vf_f16m1( A0, B0, gvl); + vfloat16m1_t result1 = __riscv_vfmul_vf_f16m1( A0, B1, gvl); + vfloat16m1_t result2 = __riscv_vfmul_vf_f16m1( A0, B2, gvl); + vfloat16m1_t result3 = __riscv_vfmul_vf_f16m1( A0, B3, gvl); + vfloat16m1_t result4 = __riscv_vfmul_vf_f16m1( A0, B4, gvl); + vfloat16m1_t result5 = __riscv_vfmul_vf_f16m1( A0, B5, gvl); + vfloat16m1_t result6 = __riscv_vfmul_vf_f16m1( A0, B6, gvl); + vfloat16m1_t result7 = __riscv_vfmul_vf_f16m1( A0, B7, gvl); +#else vfloat32m2_t result0 = __riscv_vfwmul_vf_f32m2( A0, B0, gvl); vfloat32m2_t result1 = __riscv_vfwmul_vf_f32m2( A0, B1, gvl); vfloat32m2_t result2 = __riscv_vfwmul_vf_f32m2( A0, B2, gvl); @@ -38,6 +47,7 @@ int CNAME(BLASLONG M, BLASLONG N, BLASLONG K, FLOAT alpha, IFLOAT *A, IFLOAT *B, vfloat32m2_t result5 = __riscv_vfwmul_vf_f32m2( A0, B5, gvl); vfloat32m2_t result6 = __riscv_vfwmul_vf_f32m2( A0, B6, gvl); vfloat32m2_t result7 = __riscv_vfwmul_vf_f32m2( A0, B7, gvl); +#endif for(BLASLONG k=1; k