Fix AVX512BW Fletcher code on AVX512-but-not-BW machines

Introduce a specific valid function for avx512f+avx512bw (instead 
of checking only for avx512f).

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Adam Moss <c@yotes.com>
Signed-off-by: Romain Dolbeau <romain@dolbeau.org>
Closes #11937
Closes #11938
This commit is contained in:
Romain Dolbeau 2021-04-26 21:42:42 +02:00 committed by Brian Behlendorf
parent 64b83a0bf1
commit e5c01296ff
1 changed files with 7 additions and 1 deletions

View File

@ -210,6 +210,12 @@ fletcher_4_avx512bw_byteswap(fletcher_4_ctx_t *ctx, const void *buf,
} }
STACK_FRAME_NON_STANDARD(fletcher_4_avx512bw_byteswap); STACK_FRAME_NON_STANDARD(fletcher_4_avx512bw_byteswap);
static boolean_t
fletcher_4_avx512bw_valid(void)
{
return (fletcher_4_avx512f_valid() && zfs_avx512bw_available());
}
const fletcher_4_ops_t fletcher_4_avx512bw_ops = { const fletcher_4_ops_t fletcher_4_avx512bw_ops = {
.init_native = fletcher_4_avx512f_init, .init_native = fletcher_4_avx512f_init,
.fini_native = fletcher_4_avx512f_fini, .fini_native = fletcher_4_avx512f_fini,
@ -217,7 +223,7 @@ const fletcher_4_ops_t fletcher_4_avx512bw_ops = {
.init_byteswap = fletcher_4_avx512f_init, .init_byteswap = fletcher_4_avx512f_init,
.fini_byteswap = fletcher_4_avx512f_fini, .fini_byteswap = fletcher_4_avx512f_fini,
.compute_byteswap = fletcher_4_avx512bw_byteswap, .compute_byteswap = fletcher_4_avx512bw_byteswap,
.valid = fletcher_4_avx512f_valid, .valid = fletcher_4_avx512bw_valid,
.name = "avx512bw" .name = "avx512bw"
}; };
#endif #endif