[PATCH 12/12] simd-common-riscv: faster vector register clearing
Jussi Kivilinna
jussi.kivilinna at iki.fi
Sun Oct 11 19:23:21 CEST 2026
* cipher/simd-common-riscv.h (clear_vec_regs): Clear registers with
four independent LMUL=8 'vmv.v.i' instructions.
--
Faster clearing with independent vector splats instead of chain of
whole register moves.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna at iki.fi>
---
cipher/simd-common-riscv.h | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/cipher/simd-common-riscv.h b/cipher/simd-common-riscv.h
index 8ddd5056..98361f49 100644
--- a/cipher/simd-common-riscv.h
+++ b/cipher/simd-common-riscv.h
@@ -38,14 +38,11 @@
#define memory_barrier_with_vec(a) __asm__("" : "+vr"(a) :: "memory")
-#define clear_vec_regs() __asm__ volatile("vsetvli zero, %0, e8, m1, ta, ma;\n" \
+#define clear_vec_regs() __asm__ volatile("vsetvli zero, %0, e32, m8, ta, ma;\n" \
"vmv.v.i v0, 0;\n" \
- "vmv.v.i v1, 0;\n" \
- "vmv2r.v v2, v0;\n" \
- "vmv4r.v v4, v0;\n" \
- "vmv8r.v v8, v0;\n" \
- "vmv8r.v v16, v0;\n" \
- "vmv8r.v v24, v0;\n" \
+ "vmv.v.i v8, 0;\n" \
+ "vmv.v.i v16, 0;\n" \
+ "vmv.v.i v24, 0;\n" \
: \
: "r" (~0) \
: "memory", "vl", "vtype", \
--
2.53.0
More information about the Gcrypt-devel
mailing list