Commit graph

45 commits

Author SHA1 Message Date
Andrea Mazzoleni
d03a583523 Use vpternlogq in raid_gen3-6_avx512bw to fuse sequential vpxorq instructions into single 3-way XORs 2026-06-04 17:48:25 +02:00
Andrea Mazzoleni
7a2eac4bb3 Gate AVX-512BW gen1/gen2 behind slow_avx512() to avoid double-pumped shuffle penalties
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-06-04 09:41:53 +02:00
Andrea Mazzoleni
fdadb443ad Change RAID AVX512/GFNI functions to use forward iterations 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
54f1185cde Remove the special case of a single data disk when not strictly required 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
33a62a4c74 Remove unused level 0 from the pshufb table 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
5fb82d6195 Change the AVX512BW generation to use pshufb also for Q parity 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
d9798b6377 Extend the pshufb table to include the Q parity coefficients 2026-06-03 22:01:00 +02:00
Andrea Mazzoleni
e3a0671c00 Assume the assembler supports all x86 SSE/AVX instructions 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
8ae654d8a6 Disable AVX512 on CPUs with narrow shuffle ports or double-pumped 256-bit datapath 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
821a0e444e Optimize AVX512 gen1 parity with the vpternlogq instruction 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
31c394ec84 Comment about the RAID optimizations 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
914a0216b4 Use a simpler approach in the new AVX512 generation functions 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
746a9b8940 Preliminary support for AVX512GFNI 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
b61168a561 Add more AVX512 functions for parity 2026-06-03 22:00:59 +02:00
Andrea Mazzoleni
18aa07be36 Preliminary support for ADVX512 2026-06-03 22:00:59 +02:00
Christoph Hellwig
c889153cb2 Make all RAID forwarders static and local using a new registration interface
Co-authored-by: Andrea Mazzoleni <amadvance@gmail.com>
2026-06-03 22:00:59 +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
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
1c06674d1a Some comments about x86 optimizations 2015-06-20 16:47:50 +02:00
Andrea Mazzoleni
7fd0beb36a Review of the new alignment method 2015-03-18 08:21:28 +01:00
Andrea Mazzoleni
b0d2368cce Use a more generic approach to align the stack
This is independent of the compiler used.
2015-03-17 21:46:20 +01:00
Andrea Mazzoleni
c8558c28ac Fix some formatting issues of the code
Now it matches the Linux kernel style.
2015-03-12 18:53:36 +01:00
Andrea Mazzoleni
a99cd9daff Use specialized assembler header and footer for sse and avx 2015-03-10 19:02:23 +01:00
Andrea Mazzoleni
555b161df1 Minor changes to make it more similar at kernel version 2015-03-09 23:39:30 +01:00
Andrea Mazzoleni
763dccaaed Use an implicit clobber list for asm snipsets
There is no speed gain in a custom clobber list.
2015-03-09 22:25:29 +01:00
Andrea Mazzoleni
4a92b064f4 Beautifies the raid lib. 2014-11-12 20:41:00 +01:00
Andrea Mazzoleni
6cfe0e66b2 Bautifies volatile calls. 2014-11-12 20:03:23 +01:00
Andrea Mazzoleni
7d6c30333f Uses a more precise intructions set detection.
This allows to build with old assembler programs.
2014-11-12 19:52:35 +01:00
Andrea Mazzoleni
3274b7cd2e Uses a different way to handle registers conflict with the compiler. 2014-09-21 08:45:33 +02:00
Andrea Mazzoleni
6effc8230e Aligns with the Linux Kernel about using no-sse and no-avx. 2014-09-20 10:34:28 +02:00
Andrea Mazzoleni
8a8408a5d0 Adds GCC options to disable SSE2 use by the compiler. 2014-09-19 23:38:18 +02:00
Andrea Mazzoleni
a7cdd9cf2f Adds missing AVX2 functions. 2014-09-16 20:17:54 +02:00
Andrea Mazzoleni
0e3901ca3e Adds gen3/z support for AVX2. 2014-09-15 22:31:25 +02:00
Andrea Mazzoleni
957db46f5b Preliminary AVX2 support. 2014-09-14 18:03:40 +02:00
Andrea Mazzoleni
44ef039a13 Different source organization. 2014-03-23 17:50:27 +01:00
Andrea Mazzoleni
a7bc628bc3 Moves the source files into the src/ dir. 2014-03-22 21:02:12 +01:00
Andrea Mazzoleni
00a05a80e5 Changes the argument format of raid_rec() and renames raid_par() to raid_gen(). 2014-01-08 17:07:13 +01:00
Andrea Mazzoleni
21436089c7 Removes unnecessary register loads. 2014-01-04 17:29:04 +01:00
Andrea Mazzoleni
eef93ebb0a Uses inline functions instead of macros for asm_begin/end(). 2014-01-03 12:31:38 +01:00
Andrea Mazzoleni
6b619906af Refactors again function calls. 2014-01-03 10:36:21 +01:00
Andrea Mazzoleni
cbddaa108d Refactors even more and add an additional selftest. 2013-12-31 15:46:24 +01:00
Andrea Mazzoleni
8a904cbe7a Uses specific architecture defines. 2013-12-30 21:12:29 +01:00
Andrea Mazzoleni
03482b84a6 Moves RAID tests in the raid/ dir. 2013-12-29 22:13:08 +01:00
Andrea Mazzoleni
684edf2173 Updates the coding style of the RAID engine. 2013-12-28 12:04:16 +01:00
Andrea Mazzoleni
abc05c612c Splits the RAID engine in multiple files. 2013-12-28 09:10:00 +01:00
Renamed from raid.c (Browse further)