kernel-fxtec-pro1x/lib/raid6
Ken Steele ae77cbc1e7 RAID: add tilegx SIMD implementation of raid6
This change adds TILE-Gx SIMD instructions to the software raid
(md), modeling the Altivec implementation. This is only for Syndrome
generation; there is more that could be done to improve recovery,
as in the recent Intel SSE3 recovery implementation.

The code unrolls 8 times; this turns out to be the best on tilegx
hardware among the set 1, 2, 4, 8 or 16.  The code reads one
cache-line of data from each disk, stores P and Q then goes to the
next cache-line.

The test code in sys/linux/lib/raid6/test reports 2008 MB/s data
read rate for syndrome generation using 18 disks (16 data and 2
parity). It was 1512 MB/s before this SIMD optimizations. This is
running on 1 core with all the data in cache.

This is based on the paper The Mathematics of RAID-6.
(http://kernel.org/pub/linux/kernel/people/hpa/raid6.pdf).

Signed-off-by: Ken Steele <ken@tilera.com>
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2013-08-27 16:05:50 +10:00
..
test RAID: add tilegx SIMD implementation of raid6 2013-08-27 16:05:50 +10:00
.gitignore Move .gitignore from drivers/md to lib/raid6 2010-08-30 17:35:52 +10:00
algos.c RAID: add tilegx SIMD implementation of raid6 2013-08-27 16:05:50 +10:00
altivec.uc lib/raid6: build proper files on corresponding arch 2012-12-13 19:51:04 +11:00
avx2.c lib/raid6: Add AVX2 optimized gen_syndrome functions 2012-12-13 19:51:03 +11:00
int.uc lib/raid6: Fix filename emitted in generated code 2011-10-20 11:27:50 +11:00
Makefile RAID: add tilegx SIMD implementation of raid6 2013-08-27 16:05:50 +10:00
mktables.c lib/raid6: Add SSSE3 optimized recovery functions 2012-05-22 13:54:18 +10:00
mmx.c lib/raid6: build proper files on corresponding arch 2012-12-13 19:51:04 +11:00
recov.c lib/raid6: fix sparse warnings in recovery functions 2012-05-28 14:10:22 +10:00
recov_avx2.c lib/raid6: build proper files on corresponding arch 2012-12-13 19:51:04 +11:00
recov_ssse3.c lib/raid6: build proper files on corresponding arch 2012-12-13 19:51:04 +11:00
sse1.c lib/raid6: build proper files on corresponding arch 2012-12-13 19:51:04 +11:00
sse2.c lib/raid6: build proper files on corresponding arch 2012-12-13 19:51:04 +11:00
tilegx.uc RAID: add tilegx SIMD implementation of raid6 2013-08-27 16:05:50 +10:00
unroll.awk Merge branch 'async' of macbook:git/btrfs-unstable 2010-08-09 10:36:44 +01:00
x86.h lib/raid6: Add AVX2 optimized recovery functions 2012-12-13 16:42:01 +11:00