Lines Matching full:crc
3 * crc32.c - CRC32 and CRC32C using LoongArch crc* instructions
18 #define _CRC32(crc, value, size, type) \ argument
22 : "+r" (crc) \
27 #define CRC32(crc, value, size) _CRC32(crc, value, size, crc) argument
28 #define CRC32C(crc, value, size) _CRC32(crc, value, size, crcc) argument
32 u32 crc = crc_; in crc32_loongarch_hw() local
37 CRC32(crc, value, d); in crc32_loongarch_hw()
45 CRC32(crc, value, w); in crc32_loongarch_hw()
53 CRC32(crc, value, h); in crc32_loongarch_hw()
60 CRC32(crc, value, b); in crc32_loongarch_hw()
63 return crc; in crc32_loongarch_hw()
68 u32 crc = crc_; in crc32c_loongarch_hw() local
73 CRC32C(crc, value, d); in crc32c_loongarch_hw()
81 CRC32C(crc, value, w); in crc32c_loongarch_hw()
89 CRC32C(crc, value, h); in crc32c_loongarch_hw()
96 CRC32C(crc, value, b); in crc32c_loongarch_hw()
99 return crc; in crc32c_loongarch_hw()
110 u32 crc; member
118 ctx->crc = mctx->key; in chksum_init()
143 ctx->crc = crc32_loongarch_hw(ctx->crc, data, length); in chksum_update()
151 ctx->crc = crc32c_loongarch_hw(ctx->crc, data, length); in chksumc_update()
159 put_unaligned_le32(ctx->crc, out); in chksum_final()
167 put_unaligned_le32(~ctx->crc, out); in chksumc_final()
171 static int __chksum_finup(u32 crc, const u8 *data, unsigned int len, u8 *out) in __chksum_finup() argument
173 put_unaligned_le32(crc32_loongarch_hw(crc, data, len), out); in __chksum_finup()
177 static int __chksumc_finup(u32 crc, const u8 *data, unsigned int len, u8 *out) in __chksumc_finup() argument
179 put_unaligned_le32(~crc32c_loongarch_hw(crc, data, len), out); in __chksumc_finup()
187 return __chksum_finup(ctx->crc, data, len, out); in chksum_finup()
194 return __chksumc_finup(ctx->crc, data, len, out); in chksumc_finup()
303 MODULE_DESCRIPTION("CRC32 and CRC32C using LoongArch crc* instructions");