diff options
Diffstat (limited to 'module/zcommon/zfs_fletcher_superscalar.c')
-rw-r--r-- | module/zcommon/zfs_fletcher_superscalar.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/module/zcommon/zfs_fletcher_superscalar.c b/module/zcommon/zfs_fletcher_superscalar.c index ba3fb54cbcff..2a80816ff3ec 100644 --- a/module/zcommon/zfs_fletcher_superscalar.c +++ b/module/zcommon/zfs_fletcher_superscalar.c @@ -47,14 +47,12 @@ #include <sys/string.h> #include <zfs_fletcher.h> -ZFS_NO_SANITIZE_UNDEFINED static void fletcher_4_superscalar_init(fletcher_4_ctx_t *ctx) { memset(ctx->superscalar, 0, 4 * sizeof (zfs_fletcher_superscalar_t)); } -ZFS_NO_SANITIZE_UNDEFINED static void fletcher_4_superscalar_fini(fletcher_4_ctx_t *ctx, zio_cksum_t *zcp) { @@ -70,7 +68,6 @@ fletcher_4_superscalar_fini(fletcher_4_ctx_t *ctx, zio_cksum_t *zcp) ZIO_SET_CHECKSUM(zcp, A, B, C, D); } -ZFS_NO_SANITIZE_UNDEFINED static void fletcher_4_superscalar_native(fletcher_4_ctx_t *ctx, const void *buf, uint64_t size) @@ -89,7 +86,7 @@ fletcher_4_superscalar_native(fletcher_4_ctx_t *ctx, c2 = ctx->superscalar[2].v[1]; d2 = ctx->superscalar[3].v[1]; - for (; ip < ipend; ip += 2) { + do { a += ip[0]; a2 += ip[1]; b += a; @@ -98,7 +95,7 @@ fletcher_4_superscalar_native(fletcher_4_ctx_t *ctx, c2 += b2; d += c; d2 += c2; - } + } while ((ip += 2) < ipend); ctx->superscalar[0].v[0] = a; ctx->superscalar[1].v[0] = b; @@ -110,7 +107,6 @@ fletcher_4_superscalar_native(fletcher_4_ctx_t *ctx, ctx->superscalar[3].v[1] = d2; } -ZFS_NO_SANITIZE_UNDEFINED static void fletcher_4_superscalar_byteswap(fletcher_4_ctx_t *ctx, const void *buf, uint64_t size) @@ -129,7 +125,7 @@ fletcher_4_superscalar_byteswap(fletcher_4_ctx_t *ctx, c2 = ctx->superscalar[2].v[1]; d2 = ctx->superscalar[3].v[1]; - for (; ip < ipend; ip += 2) { + do { a += BSWAP_32(ip[0]); a2 += BSWAP_32(ip[1]); b += a; @@ -138,7 +134,7 @@ fletcher_4_superscalar_byteswap(fletcher_4_ctx_t *ctx, c2 += b2; d += c; d2 += c2; - } + } while ((ip += 2) < ipend); ctx->superscalar[0].v[0] = a; ctx->superscalar[1].v[0] = b; @@ -163,5 +159,6 @@ const fletcher_4_ops_t fletcher_4_superscalar_ops = { .compute_byteswap = fletcher_4_superscalar_byteswap, .fini_byteswap = fletcher_4_superscalar_fini, .valid = fletcher_4_superscalar_valid, + .uses_fpu = B_FALSE, .name = "superscalar" }; |