<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/lib/raid6/vpermxor.uc, branch linux-5.1.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-5.1.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-5.1.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2018-03-20T05:47:25Z</updated>
<entry>
<title>lib/raid6/altivec: Add vpermxor implementation for raid6 Q syndrome</title>
<updated>2018-03-20T05:47:25Z</updated>
<author>
<name>Matt Brown</name>
<email>matthew.brown.dev@gmail.com</email>
</author>
<published>2017-08-04T03:42:32Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=751ba79cc552c146595cd439b21c4ff8998c3b69'/>
<id>urn:sha1:751ba79cc552c146595cd439b21c4ff8998c3b69</id>
<content type='text'>
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 &lt;matthew.brown.dev@gmail.com&gt;
Reviewed-by: Daniel Axtens &lt;dja@axtens.net&gt;
[mpe: Add VPERMXOR macro so we can build with old binutils]
Signed-off-by: Michael Ellerman &lt;mpe@ellerman.id.au&gt;
</content>
</entry>
</feed>
