File Index
Files and directories
Sign in
FILE

crc32.h

File preview with syntax highlighting.

linux-6.19.14/lib/crc/riscv/crc32.h C
 1// SPDX-License-Identifier: GPL-2.0-or-later
 2/*
 3 * RISC-V optimized CRC32 functions
 4 *
 5 * Copyright 2025 Google LLC
 6 */
 7
 8#include <asm/hwcap.h>
 9#include <asm/alternative-macros.h>
10
11#include "crc-clmul.h"
12
13static inline u32 crc32_le_arch(u32 crc, const u8 *p, size_t len)
14{
15	if (riscv_has_extension_likely(RISCV_ISA_EXT_ZBC))
16		return crc32_lsb_clmul(crc, p, len,
17				       &crc32_lsb_0xedb88320_consts);
18	return crc32_le_base(crc, p, len);
19}
20
21static inline u32 crc32_be_arch(u32 crc, const u8 *p, size_t len)
22{
23	if (riscv_has_extension_likely(RISCV_ISA_EXT_ZBC))
24		return crc32_msb_clmul(crc, p, len,
25				       &crc32_msb_0x04c11db7_consts);
26	return crc32_be_base(crc, p, len);
27}
28
29static inline u32 crc32c_arch(u32 crc, const u8 *p, size_t len)
30{
31	if (riscv_has_extension_likely(RISCV_ISA_EXT_ZBC))
32		return crc32_lsb_clmul(crc, p, len,
33				       &crc32_lsb_0x82f63b78_consts);
34	return crc32c_base(crc, p, len);
35}
36
37static inline u32 crc32_optimizations_arch(void)
38{
39	if (riscv_has_extension_likely(RISCV_ISA_EXT_ZBC))
40		return CRC32_LE_OPTIMIZATION |
41		       CRC32_BE_OPTIMIZATION |
42		       CRC32C_OPTIMIZATION;
43	return 0;
44}
~/ Read-only file preview.