Commit graph

135 commits

Author SHA1 Message Date
Andrea Mazzoleni
bce4965998 Add RAID library developer README 2026-08-13 16:03:30 +02:00
Andrea Mazzoleni
0e4bc5bcee Document dummy register clobbers in raid_sse_end and raid_neon_end 2026-08-10 11:23:15 +02:00
Andrea Mazzoleni
b43cf8caad Support dynamic runtime selection of RAID AES mode 2026-08-10 11:23:14 +02:00
Andrea Mazzoleni
6a559ae0ee Avoid a folding VLA warning in clang 2026-08-10 11:23:13 +02:00
Andrea Mazzoleni
49cf8b85b3 Use uniform ending on files for parity implementation 2026-08-10 11:23:12 +02:00
Andrea Mazzoleni
47034ceeec Fix building on x86 for missing AVX512 support 2026-08-10 11:23:12 +02:00
Andrea Mazzoleni
7127ec3135 Run the speed test with and without displacement 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
58e92fa3c8 Allow to specify the wrap size in allocation 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
8904c27ce2 Refactor and reorganize parity generation functions using inline templates 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
f76fcf7ab1 Add AArch64 NEON parity generation and recovery functions 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
d9c6b7989e Use vpternlogq in raid_gen3-6_avx512bw to fuse sequential vpxorq instructions into single 3-way XORs 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
43e0104101 Gate AVX-512BW gen1/gen2 behind slow_avx512() to avoid double-pumped shuffle penalties 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
a907dbc492 Remove the unused number of data disks from the vector allocation
The same addressing rules are applied to the parity disks because
they are used as data disks during recovery operations.
2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
785562a367 Inject variable page-offset noise to disk buffer displacement to mitigate prefetcher contention 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
73c0b9285c Use the optimal displacement depending on the number of disks 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
ef750e7d59 Change RAID AVX512/GFNI functions to use forward iterations 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
dc97ecfc6a Remove the special case of a single data disk when not strictly required 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
1463cd1be4 Remove unused level 0 from the pshufb table 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
d0fdc02313 Change the AVX512BW generation to use pshufb also for Q parity 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
064e033542 Extend the pshufb table to include the Q parity coefficients 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
ae89addf87 New displacement benchmarks 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
a9363982ed Simplify GFNI implementations 2026-08-04 09:48:00 +02:00
Andrea Mazzoleni
d4a67908c7 Always build RAID test with USE_RAID_AES 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
4406714811 Assume the assembler supports all x86 SSE/AVX instructions 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
74185323eb Extend the RAID regression test to detect unset parity 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
6e9f17bb96 Add support for AVX2 GFNI 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
e04249a5af Disable AVX512 on CPUs with narrow shuffle ports or double-pumped 256-bit datapath 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
c394629684 Revise the RAID library Makefile 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
a87135af97 Be more clear when GFNI is really used 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
37536de677 Optimize AVX512 gen1 parity with the vpternlogq instruction 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
b0579142fa Add tables for the AES Polynomial 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
e3bb158fcc Comment about the RAID optimizations 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
b388c8be13 Use a simpler approach in the new AVX512 generation functions 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
c080c3aa91 Preliminary support for AVX512GFNI 2026-08-04 09:47:59 +02:00
Andrea Mazzoleni
288e30247d Change commenting style 2026-08-04 09:47:58 +02:00
Andrea Mazzoleni
e29f428017 Add detection of AVX2GFNI 2026-08-04 09:47:58 +02:00
Andrea Mazzoleni
047852b08b Add more AVX512 functions for parity 2026-08-04 09:47:58 +02:00
Andrea Mazzoleni
51f1d207c4 Preliminary support for ADVX512 2026-08-04 09:47:58 +02:00
Christoph Hellwig
9ccbe54bc5 Make all RAID forwarders static and local using a new registration interface
Co-authored-by: Andrea Mazzoleni <amadvance@gmail.com>
2026-08-04 09:47:58 +02:00
Andrea Mazzoleni
562d59d9c8 Avoid a folding VLA warning in clang 2026-07-06 15:57:49 +02:00
Andrea Mazzoleni
ae9b472898 Add detection of AVX512BW and AVX512GFNI 2026-04-16 00:13:51 +02:00
Andrea Mazzoleni
b709371d2d Fix typos in the comment of the raid library
Some checks are pending
Build / build-mac (push) Waiting to run
Build / build-linux (push) Waiting to run
Build / build-win (push) Waiting to run
CodeQL Advanced / Analyze (c-cpp) (push) Waiting to run
CodeQL Advanced / Analyze (actions) (push) Waiting to run
2026-04-15 10:53:25 +02:00
Andrea Mazzoleni
0d0431a907 Simpler Copyright string 2026-04-09 17:56:49 +02:00
Christoph Hellwig
60269a1236 Use SPDX (https://spdx.dev/) tags to identify the license used for each
file, and a COPYING file explaining the licensing scheme, with the actual
licenses listed in the LICENSES/ directory.
2026-04-02 16:01:37 +02:00
Andrea Mazzoleni
e80734fc4c Fix typos 2026-01-22 16:13:25 +01:00
Andrea Mazzoleni
f7798b2357 Update performance test of raid.c
Some checks failed
Build / build-mac (push) Has been cancelled
Build / build-linux (push) Has been cancelled
Build / build-win (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
2025-10-14 23:26:34 +02:00
Andrea Mazzoleni
13a4872e69 Revise the top comment of raid.c
Some checks failed
Build / build-mac (push) Has been cancelled
Build / build-linux (push) Has been cancelled
Build / build-win (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
2025-10-13 17:32:55 +02:00
Andrea Mazzoleni
56c4076e23 Avoid a warning about function pointer conversion. No functional changes 2025-01-23 15:51:59 +01:00
Andrea Mazzoleni
607564c5fe Fix some typos 2023-12-09 10:45:26 +01:00
Jens Kühnel
6b3ac2a6cb Update address of FSF in GPLv2 2023-08-09 14:44:48 +02:00