summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorRomain Dolbeau <[email protected]>2016-11-02 20:40:23 +0100
committerBrian Behlendorf <[email protected]>2016-11-02 12:40:23 -0700
commit7f547f85fe783a6ac69ce250b361436b9c4888a6 (patch)
treea197e8503cbf9f9edebfac791f6afed2c2d66382 /include
parent6d4210052be6c63032d693aa487f84955b0dae44 (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.h6
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;