+5
−0
+1
−0
+9
−0
lib/raid6/recov_rvv.c
0 → 100644
+229
−0
lib/raid6/rvv.c
0 → 100644
+1212
−0
File added.
Preview size limit exceeded, changes collapsed.
Loading
The assembly is originally based on the ARM NEON and int.uc, but uses RISC-V vector instructions to implement the RAID6 syndrome and recovery calculations. The functions are tested on QEMU running with the option "-icount shift=0": raid6: rvvx1 gen() 1008 MB/s raid6: rvvx2 gen() 1395 MB/s raid6: rvvx4 gen() 1584 MB/s raid6: rvvx8 gen() 1694 MB/s raid6: int64x8 gen() 113 MB/s raid6: int64x4 gen() 116 MB/s raid6: int64x2 gen() 272 MB/s raid6: int64x1 gen() 229 MB/s raid6: using algorithm rvvx8 gen() 1694 MB/s raid6: .... xor() 1000 MB/s, rmw enabled raid6: using rvv recovery algorithm [Charlie: - Fixup vector options] Signed-off-by:Charlie Jenkins <charlie@rivosinc.com> Signed-off-by:
Chunyan Zhang <zhangchunyan@iscas.ac.cn> Reviewed-by:
Charlie Jenkins <charlie@rivosinc.com> Tested-by:
Charlie Jenkins <charlie@rivosinc.com> Link: https://lore.kernel.org/r/20250305083707.74218-1-zhangchunyan@iscas.ac.cn Signed-off-by:
Alexandre Ghiti <alexghiti@rivosinc.com> Signed-off-by:
Palmer Dabbelt <palmer@dabbelt.com>
File added.
Preview size limit exceeded, changes collapsed.