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-10-13 14:27:13 -07:00
2017-11-04 09:26:51 +09:00
2017-11-02 11:10:55 +01:00
2017-11-16 14:05:12 -08:00
2018-01-04 13:35:07 -05:00
2018-01-31 12:25:27 -08:00
2018-02-01 09:51:57 -08:00
2018-01-14 23:06:30 -05:00
2018-02-02 14:19:19 -08:00
2018-02-06 11:09:45 -08:00
2018-01-09 16:51:44 +01: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-01-02 13:59:16 -05: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
2013-09-24 10:35:17 +01:00
2013-12-02 11:24:18 +00:00
2013-03-12 13:59:14 -07:00
2017-11-02 11:10:55 +01:00
2017-11-07 10:32:44 +01:00
2012-03-16 10:38:24 -04:00
2017-11-15 13:28:48 -08:00
2016-10-11 15:06:31 -07:00
2016-10-11 15:06:31 -07:00
2017-11-02 11:10:55 +01:00
2017-11-14 15:32:19 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01: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
2017-11-14 17:23: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
2017-11-02 11:10:55 +01:00
2018-01-18 22:54:25 +01:00
2018-02-04 11:16:35 -08:00
2018-02-06 18:32:46 -08:00
2018-01-06 09:18:00 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-01-04 15:13:29 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01: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
2018-01-08 17:30:45 +01:00
2017-11-02 11:10:55 +01:00
2017-10-19 16:15:16 +02:00
2017-11-02 11:10:55 +01:00
2013-12-29 15:25:48 +01:00
2017-11-02 11:10:55 +01:00
2011-09-23 12:05:29 +05:30
2013-09-13 15:09:52 +02:00
2018-01-14 09:51:25 -08: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-01-07 16:38:43 -05:00
2015-11-16 09:27:32 +05:30
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-01-16 03:29:36 +01:00
2016-04-15 11:20:32 -07:00
2018-02-03 12:10:09 -08:00
2012-02-20 19:46:36 +11:00
2012-11-19 14:32:13 +01:00
2017-11-27 16:19:56 -05:00
2016-09-26 22:16:41 +05:30
2018-02-12 15:59:08 +00:00
2017-11-02 11:10:55 +01:00
2017-11-15 11:56:19 -08:00
2018-01-31 13:12:31 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-01-01 12:40:27 -07:00
2018-02-08 15:13:30 -05:00
2017-11-04 09:26:51 +09:00
2017-02-03 08:28:25 -08:00
2017-11-02 11:10:55 +01: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
2018-01-26 16:42:05 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-08-28 16:24:22 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +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
2017-11-17 16:10:02 -08: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-16 09:51:22 +01: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
2017-11-10 10:03:12 +01:00
2012-10-13 10:46:48 +01:00
2017-11-13 17:56:58 -08:00
2018-02-06 16:41:29 -05:00
2017-04-04 09:48:23 -06:00
2018-01-24 19:13:45 -05:00
2018-01-17 11:30:16 +00:00
2018-02-20 11:17:58 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2014-05-14 16:40:04 -07:00
2017-10-19 16:54:49 -07:00
2017-11-15 18:21:05 -08: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
2014-09-23 23:13:13 -07: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
2017-12-21 13:07:20 -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
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-02-21 16:54:06 +01:00
2017-11-15 16:38:45 +00:00
2017-09-08 18:26:51 -07:00
2012-07-21 10:34:00 -07:00
2017-11-02 11:10:55 +01:00
2017-12-07 18:36:43 +01:00
2017-11-21 16:35:54 -08: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
2017-11-02 11:10:55 +01:00
2018-01-11 10:58:03 +01: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
2015-08-10 14:29:27 +05:30
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-01-04 13:22:38 -07:00
2018-02-06 18:32:47 -08:00
2018-02-21 15:35:42 -08:00
2018-01-08 11:46:23 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2015-09-09 17:19:14 -07:00
2017-11-29 18:40:43 -08:00
2017-11-17 20:21:44 -08: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
2017-11-02 11:10:55 +01:00
2018-01-31 17:18:38 -08:00
2018-01-31 17:18:39 -08:00
2017-12-19 11:14:56 +01:00
2018-02-06 18:32:47 -08:00
2017-11-02 11:10:55 +01:00
2017-11-15 13:46:33 -08:00
2017-11-02 11:10:55 +01: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
2017-12-19 10:38:36 -05:00
2018-02-01 07:43:56 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-02-17 08:40:59 +01:00
2017-11-02 11:10:55 +01:00
2018-02-01 10:57:45 -08:00
2018-01-08 08:22:45 -06:00
2018-02-01 10:57:45 -08:00
2017-11-02 11:10:55 +01:00
2013-03-29 17:54:33 -07:00
2017-10-07 12:10:32 +08: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
2017-11-02 11:10:55 +01:00
2017-11-09 10:23:28 +01: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
2017-11-02 11:10:55 +01:00
2018-01-03 10:38:54 -05:00
2018-01-16 12:25:10 -05:00
2017-11-17 16:10:04 -08:00
2018-02-06 18:32:47 -08:00
2016-06-28 00:42:10 +02:00
2017-10-25 11:01:08 +02: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
2017-09-08 18:26:51 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-02-12 10:41:11 +01:00
2018-02-06 22:54:11 +00:00
2017-08-01 15:22:55 -07:00
2018-02-11 22:33:22 -05:00
2017-11-02 11:10:55 +01:00
2018-02-06 16:41:28 -05:00
2017-11-02 11:10:55 +01:00
2018-02-01 10:31:17 -08:00
2017-11-02 11:10:55 +01:00
2017-11-27 09:16:40 +01:00
2016-02-24 09:12:45 +01:00
2017-11-28 11:07:12 -05:00
2017-05-03 15:52:09 -07:00
2017-11-02 11:10:55 +01:00
2017-11-29 22:16:31 +01:00
2018-01-31 14:31:10 -08:00
2017-11-01 08:20:02 -06: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
2017-11-02 11:10:55 +01:00
2018-02-13 15:00:06 +01:00
2017-11-02 11:10:55 +01:00
2018-02-07 12:50:21 +02:00
2017-12-04 10:52:54 -08:00
2018-02-01 09:46:00 -08:00
2018-02-09 09:44:25 -08:00
2017-07-06 16:24:30 -07:00
2017-11-02 11:10:55 +01:00
2015-08-05 08:48:00 +05:30
2018-01-31 17:18:39 -08:00
2017-12-19 09:26:00 +01:00
2018-01-29 12:02:54 -05:00
2018-02-16 15:52:42 -05:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-12-16 22:11:55 -05:00
2017-07-24 16:04:08 -07:00
2017-11-28 15:52:33 -08:00
2016-03-25 16:37:42 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2012-02-24 10:05:59 +01:00
2018-01-31 09:25:20 -08:00
2017-11-02 11:10:55 +01:00
2013-04-30 15:50:12 +05:30
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
2017-09-17 19:45:32 +02:00
2018-02-06 18:32:47 -08:00
2018-01-09 16:27:43 +01:00
2017-08-17 16:29:19 -07:00
2017-11-02 11:10:55 +01:00
2017-11-15 18:21:04 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-12-04 07:14:30 -05:00
2015-11-05 19:34:48 -08:00
2017-11-02 11:10:55 +01:00
2017-11-27 16:19:52 -05:00
2018-01-23 08:57:37 +01:00
2017-11-02 11:10:55 +01:00
2017-11-15 18:21:01 -08:00
2017-10-11 22:36:54 -04:00
2017-11-02 11:10:55 +01:00
2018-02-06 18:32:44 -08:00
2016-04-06 16:14:24 +01:00
2017-12-20 09:53:54 -07:00
2017-11-02 11:10:55 +01:00
2018-01-31 17:18:37 -08:00
2017-11-02 11:10:55 +01:00
2017-11-13 15:38:16 +00:00
2017-11-27 16:19:54 -05:00
2018-02-16 22:24:25 +01:00
2017-11-21 15:46:44 -08:00
2018-01-31 17:18:39 -08:00