diff options
author | Romain Dolbeau <[email protected]> | 2016-11-02 20:40:23 +0100 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-11-02 12:40:23 -0700 |
commit | 7f547f85fe783a6ac69ce250b361436b9c4888a6 (patch) | |
tree | a197e8503cbf9f9edebfac791f6afed2c2d66382 /include | |
parent | 6d4210052be6c63032d693aa487f84955b0dae44 (diff) |
Add parity generation/rebuild using AVX-512 for x86-64
avx512f should work on all AVX512 hardware, since it only uses
Foundation instructions.
avx512bw should be faster on hardware supporting the AVW512BW
extension. We can use full-width pshufb (instead of relying on the 256
bits AVX2 pshufb). As a side-effect, the code is also unrolled more.
Reviewed-by: Richard Laager <[email protected]>
Reviewed-by: Gvozden Neskovic <[email protected]>
Reviewed-by: Jinshan Xiong <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Romain Dolbeau <[email protected]>
Closes #5219
Diffstat (limited to 'include')
-rw-r--r-- | include/sys/vdev_raidz_impl.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/sys/vdev_raidz_impl.h b/include/sys/vdev_raidz_impl.h index ca902f15d..735b67764 100644 --- a/include/sys/vdev_raidz_impl.h +++ b/include/sys/vdev_raidz_impl.h @@ -141,6 +141,12 @@ extern const raidz_impl_ops_t vdev_raidz_ssse3_impl; #if defined(__x86_64) && defined(HAVE_AVX2) /* only x86_64 for now */ extern const raidz_impl_ops_t vdev_raidz_avx2_impl; #endif +#if defined(__x86_64) && defined(HAVE_AVX512F) /* only x86_64 for now */ +extern const raidz_impl_ops_t vdev_raidz_avx512f_impl; +#endif +#if defined(__x86_64) && defined(HAVE_AVX512BW) /* only x86_64 for now */ +extern const raidz_impl_ops_t vdev_raidz_avx512bw_impl; +#endif #if defined(__aarch64__) extern const raidz_impl_ops_t vdev_raidz_aarch64_neon_impl; extern const raidz_impl_ops_t vdev_raidz_aarch64_neonx2_impl; |