Commit graph

204 commits

Author SHA1 Message Date
Andrea Mazzoleni
ee47fdf723 Fix raid_gen_force parity count in benchmarks 2026-08-31 20:45:39 +02:00
Andrea Mazzoleni
5acd43c9e5 Add dedicated XOR-only fast path for AVX512 rec1of1 2026-08-31 20:45:39 +02:00
Andrea Mazzoleni
e39c21a4c5 Add XOR-only fast path for AVX2 GFNI rec1of1 2026-08-31 20:45:39 +02:00
Andrea Mazzoleni
82089165b5 Add dedicated XOR-only fast path for NEON rec1of1 2026-08-31 20:45:38 +02:00
Andrea Mazzoleni
6613eb5776 Optimize NEON nibble mask setup using MOVI and hoist invariant initialization 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
85d50456d7 Use size_t instead of ssize_t for buffer sizes in raid_malloc_vector_align 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
e0c0ea3dcc Optimize scalar 8-bit RAID parity generation and recovery in int.c 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
69a1ed1125 Specialize RAID recovery functions by passing has_p as a constant argument 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
e0e3618240 Add 64-byte unrolled raid_recX_neon_12 recovery kernel for NEON 2026-08-31 10:39:17 +02:00
Andrea Mazzoleni
2a73074faa Use fused 1-pass recovery for rec2 in AVX2 backend 2026-08-26 21:11:46 +02:00
Andrea Mazzoleni
35abfd81e1 Use fused 1-pass recovery for rec1of1 and rec2of2 in NEON, AVX512 and GFNI backends 2026-08-26 21:11:46 +02:00
Andrea Mazzoleni
64271ac429 Add FreeBSD build and test job using freebsd-vm action 2026-08-26 10:44:01 +02:00
Andrea Mazzoleni
f25fbd0c1b Do not flag AMD CPUs as having slow AVX-512 in raid_cpu_has_slow_avx512 2026-08-26 10:11:44 +02:00
Andrea Mazzoleni
9bd2f68046 Add and standardize top comments across SIMD assembly functions 2026-08-25 12:09:03 +02:00
Andrea Mazzoleni
3759c9356b Optimize gen2 and gen3 kernels for AVX-512 GFNI with coefficient preloading 2026-08-25 11:24:43 +02:00
Andrea Mazzoleni
76ed8d643a Rename static test helpers in module.c to selftest_* 2026-08-25 11:03:36 +02:00
Andrea Mazzoleni
697ab3056e Extend selftest and fulltest with disk edge cases, polynomial checks, and comments 2026-08-25 10:59:33 +02:00
Andrea Mazzoleni
f85c014c1c Extend raid_selftest with comprehensive recovery combinations for raid_rec 2026-08-25 10:45:46 +02:00
Andrea Mazzoleni
c192fe8982 Add compiler memory barriers to NEON and NEON32 end helpers 2026-08-25 09:58:53 +02:00
Andrea Mazzoleni
7250521e66 Clarify fulltest scope and test_count limits in raid README 2026-08-24 22:16:52 +02:00
Andrea Mazzoleni
e43bdda22b Return -1 in raid_check and raid_scan when block size is 0 2026-08-24 22:11:52 +02:00
Andrea Mazzoleni
46a09a380a Check maximum basic CPUID leaf before querying leaf 7 in AVX probing 2026-08-24 22:06:17 +02:00
Andrea Mazzoleni
5ed6a29db2 Document memory helpers, freeing semantics, and design invariants 2026-08-24 22:01:40 +02:00
Andrea Mazzoleni
306f847689 Reset global zero buffer with raid_zero(0) in raid_selftest cleanup 2026-08-24 21:53:08 +02:00
Andrea Mazzoleni
eba07d2173 Include <stddef.h> in raid.h to make the public header self-contained 2026-08-24 21:53:08 +02:00
Andrea Mazzoleni
453fb20d83 Avoid UB in raid_gen memcpy when output aliases input with nd == 1 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
88442cb10c Avoid writing to healthy parities in raid_rec() using local vector remapping 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
c1a78092c4 Fix RAID documentation accuracy 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
03d82a71f4 Document raid_selftest startup execution and mode selection requirements 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
df4667ffd5 Add NOTES 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
0ebe2e1e5e Add OTHERS 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
3f4d7e15fa Reduce SSSE3ext REC1 unrolling from 64 to 32 bytes for better performance 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
048d0c14b1 Make TEST_COUNT and TEST_SIZE parametric in raid fulltest and test Makefile 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
4d97df38ce Optimize recovery with P by deriving the final missing block via XOR 2026-08-24 21:53:07 +02:00
Andrea Mazzoleni
d3e67b2fdf Extract common recovery function setup 2026-08-24 17:39:29 +02:00
Andrea Mazzoleni
e74b03a062 Remove unused argument from recovery functions 2026-08-24 17:39:29 +02:00
Andrea Mazzoleni
46ebce4e3c Add specialized P+Q REC2OF2 recovery to all SIMD backends 2026-08-24 17:39:29 +02:00
Andrea Mazzoleni
d4184b9aee Harden public RAID API argument validation 2026-08-24 17:39:29 +02:00
Andrea Mazzoleni
ae703ce68c Optimize multi-parity recovery with fused syndrome generation 2026-08-24 11:57:04 +02:00
Andrea Mazzoleni
9d842b0dfb Precompute direct Cauchy affine matrices for RAID GFNI generation 2026-08-23 21:57:16 +02:00
Andrea Mazzoleni
0c030c024e Remove horner evaluation for RAID GFNI parity generation 2026-08-23 21:34:41 +02:00
Andrea Mazzoleni
63c81dedf3 Clarify AES GFNI performance expectations and document RAID affine multiplication behavior 2026-08-23 20:29:02 +02:00
Andrea Mazzoleni
a745a05d4e Add raid_test_tail to test recovery of tail disks across all array sizes up to 251 2026-08-21 12:06:40 +02:00
Andrea Mazzoleni
c410b11162 Clarify SIMD register preservation rationale and AVX transition comments 2026-08-21 12:06:26 +02:00
Andrea Mazzoleni
335f2619fd Optimize triple parity generation by preloading multiplication tables in vector registers 2026-08-21 12:06:26 +02:00
Andrea Mazzoleni
8c456ee354 Optimize dual parity generation by preloading multiplication tables in vector registers
Optimize AVX2 and AVX-512 GFNI AES dual parity generation by preloading coefficients in registers
2026-08-21 12:06:26 +02:00
Andrea Mazzoleni
3ff07a8297 Document RAID thread-safety requirements 2026-08-21 12:06:26 +02:00
Andrea Mazzoleni
5c24968e6d Add AArch32 (ARM32) NEON SIMD support for parity generation and recovery 2026-08-21 12:06:25 +02:00
Andrea Mazzoleni
e5ca862a37 Correct raid_scan documentation on candidate search and return semantics 2026-08-21 12:06:25 +02:00
Andrea Mazzoleni
ecb26a6aee Fix raid_selftest() parity bounds and dispatch in Vandermonde mode 2026-08-21 12:06:25 +02:00