Matt Brown
751ba79cc5
lib/raid6/altivec: Add vpermxor implementation for raid6 Q syndrome
...
This patch uses the vpermxor instruction to optimise the raid6 Q
syndrome. This instruction was made available with POWER8, ISA version
2.07. It allows for both vperm and vxor instructions to be done in a
single instruction. This has been tested for correctness on a ppc64le
vm with a basic RAID6 setup containing 5 drives.
The performance benchmarks are from the raid6test in the
/lib/raid6/test directory. These results are from an IBM Firestone
machine with ppc64le architecture. The benchmark results show a 35%
speed increase over the best existing algorithm for powerpc (altivec).
The raid6test has also been run on a big-endian ppc64 vm to ensure it
also works for big-endian architectures.
Performance benchmarks:
raid6: altivecx4 gen() 18773 MB/s
raid6: altivecx8 gen() 19438 MB/s
raid6: vpermxor4 gen() 25112 MB/s
raid6: vpermxor8 gen() 26279 MB/s
Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com >
Reviewed-by: Daniel Axtens <dja@axtens.net >
[mpe: Add VPERMXOR macro so we can build with old binutils]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au >
2018-03-20 16:47:25 +11:00
..
2017-11-16 14:05:12 -08:00
2018-01-31 12:25:27 -08:00
2018-02-01 09:51:57 -08:00
2018-02-02 14:19:19 -08:00
2018-02-06 11:09:45 -08:00
2018-01-31 14:31:10 -08:00
2018-02-20 11:34:54 +00:00
2018-02-03 12:10:09 -08:00
2018-02-06 15:30:52 -08:00
2018-03-20 16:47:25 +11:00
2018-02-22 10:45:46 -08:00
2018-02-01 16:35:31 -08:00
2018-02-09 14:55:30 -08:00
2017-11-02 11:10:55 +01:00
2018-02-12 10:41:11 +01:00
2018-02-06 22:54:15 +00:00
2016-10-11 15:06:31 -07:00
2016-05-13 14:01:43 +02:00
2018-03-01 08:41:25 -07:00
2018-02-06 18:32:44 -08:00
2018-01-30 20:18:28 -07:00
2018-02-15 08:27:06 -07:00
2017-11-02 11:10:55 +01:00
2018-02-04 11:16:35 -08:00
2018-02-06 18:32:46 -08:00
2018-02-20 11:17:58 +01:00
2018-02-26 09:34:21 -08:00
2018-02-21 15:35:43 -08:00
2017-10-19 16:15:16 +02:00
2018-02-08 10:21:39 +01:00
2018-02-02 09:50:51 -08:00
2018-02-15 12:01:53 +01:00
2018-02-16 10:40:24 +01:00
2018-02-06 18:32:47 -08:00
2018-02-06 18:32:47 -08:00
2017-11-02 11:10:55 +01:00
2018-02-03 12:10:09 -08:00
2012-11-19 14:32:13 +01:00
2017-11-27 16:19:56 -05:00
2018-02-12 15:59:08 +00:00
2018-01-31 13:12:31 -08:00
2018-02-08 15:13:30 -05:00
2017-11-02 11:10:55 +01:00
2018-02-07 13:10:43 -08:00
2018-01-30 21:54:32 +01:00
2017-11-02 11:10:55 +01:00
2018-02-26 12:32:42 -08:00
2018-02-12 10:41:11 +01:00
2018-02-26 09:48:42 -07:00
2018-02-06 18:32:46 -08:00
2017-11-02 11:10:55 +01:00
2018-01-31 17:18:40 -08:00
2015-05-02 09:54:30 +03:00
2012-10-13 10:46:48 +01:00
2018-02-06 16:41:29 -05:00
2018-02-20 11:17:58 +01:00
2017-11-02 11:10:55 +01:00
2017-09-27 17:02:45 +02:00
2018-02-06 18:32:47 -08:00
2017-11-17 16:10:04 -08:00
2017-11-02 11:10:55 +01:00
2017-09-28 12:26:03 -05:00
2018-02-01 08:15:25 -05:00
2018-02-21 16:54:05 +01:00
2018-02-06 18:32:45 -08:00
2018-02-06 18:32:43 -08:00
2017-11-02 11:10:55 +01:00
2018-02-22 10:45:46 -08:00
2018-02-13 09:15:58 +01:00
2018-02-21 16:54:06 +01:00
2018-02-24 01:43:47 +01:00
2017-11-02 11:10:55 +01:00
2018-02-01 15:01:15 -07:00
2018-01-30 10:44:56 -08:00
2018-02-06 18:32:47 -08:00
2015-11-25 09:22:02 -07:00
2018-02-06 18:32:47 -08:00
2018-02-21 15:35:42 -08:00
2015-09-09 17:19:14 -07:00
2018-02-13 16:25:06 +01:00
2018-01-31 17:18:38 -08:00
2018-02-06 10:41:33 -08:00
2018-01-31 17:18:38 -08:00
2018-01-31 17:18:39 -08:00
2018-02-06 18:32:47 -08:00
2017-11-04 09:26:51 +09:00
2018-02-21 08:56:40 +01:00
2017-11-02 11:10:55 +01:00
2018-01-31 14:31:10 -08:00
2018-02-01 07:43:56 -08:00
2017-11-02 11:10:55 +01:00
2018-02-17 08:40:59 +01:00
2018-02-01 10:57:45 -08:00
2018-02-01 10:57:45 -08:00
2017-11-02 11:10:55 +01:00
2018-01-31 17:18:40 -08:00
2017-11-17 16:10:00 -08:00
2018-01-31 17:18:37 -08:00
2018-02-08 15:32:25 -05:00
2018-01-28 15:48:29 -06:00
2018-02-01 11:40:07 -06:00
2018-02-06 09:59:40 -08:00
2018-02-06 18:32:47 -08:00
2017-11-02 11:10:55 +01:00
2018-02-11 14:37:22 -08:00
2012-10-13 10:46:48 +01:00
2018-02-12 10:41:11 +01:00
2018-02-06 22:54:11 +00:00
2018-02-11 22:33:22 -05:00
2018-02-06 16:41:28 -05:00
2018-02-01 10:31:17 -08:00
2018-01-31 14:31:10 -08:00
2017-11-02 11:10:55 +01:00
2015-12-15 09:41:09 +01:00
2018-02-06 22:15:42 -08:00
2018-02-11 14:34:03 -08:00
2017-11-02 11:10:55 +01:00
2018-02-13 15:00:06 +01:00
2018-02-07 12:50:21 +02:00
2018-02-01 09:46:00 -08:00
2018-02-09 09:44:25 -08:00
2015-08-05 08:48:00 +05:30
2018-01-31 17:18:39 -08:00
2018-02-16 15:52:42 -05:00
2018-01-31 09:25:20 -08:00
2018-02-07 12:18:23 +01:00
2018-02-21 15:35:42 -08:00
2018-02-06 09:59:40 -08:00
2018-02-05 21:34:50 +01:00
2018-02-06 18:32:47 -08:00
2017-11-02 11:10:55 +01:00
2017-10-11 22:36:54 -04:00
2018-02-06 18:32:44 -08:00
2017-12-20 09:53:54 -07:00
2018-01-31 17:18:37 -08:00
2017-11-13 15:38:16 +00:00
2018-02-16 22:24:25 +01:00
2018-01-31 17:18:39 -08:00