summaryrefslogtreecommitdiffstats
path: root/module/zcommon/zfs_fletcher.c
diff options
context:
space:
mode:
authorRomain Dolbeau <[email protected]>2019-10-30 20:26:14 +0100
committerBrian Behlendorf <[email protected]>2019-10-30 12:26:14 -0700
commit0b2a642351f375cb9be3d2569a0ac0417340c741 (patch)
tree5c5e58e318f33f44220293d35690314eaec85e7a /module/zcommon/zfs_fletcher.c
parentbae11ba8dc1dd992643dd0ab0b5cc3b3cc197fe9 (diff)
Add AVX512BW variant of fletcher
It is much faster than AVX512F when byteswapping on Skylake-SP and newer, as we can do the byteswap in a single vshufb instead of many instructions. Reviewed by: Gvozden Neskovic <[email protected]> Reviewed-by: Chunwei Chen <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Romain Dolbeau <[email protected]> Closes #9517
Diffstat (limited to 'module/zcommon/zfs_fletcher.c')
-rw-r--r--module/zcommon/zfs_fletcher.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/module/zcommon/zfs_fletcher.c b/module/zcommon/zfs_fletcher.c
index 1280ace31..f955dc8d9 100644
--- a/module/zcommon/zfs_fletcher.c
+++ b/module/zcommon/zfs_fletcher.c
@@ -184,6 +184,9 @@ static const fletcher_4_ops_t *fletcher_4_impls[] = {
#if defined(__x86_64) && defined(HAVE_AVX512F)
&fletcher_4_avx512f_ops,
#endif
+#if defined(__x86_64) && defined(HAVE_AVX512BW)
+ &fletcher_4_avx512bw_ops,
+#endif
#if defined(__aarch64__)
&fletcher_4_aarch64_neon_ops,
#endif