// Copyright lowRISC contributors (OpenTitan project).
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// SECDED encode code generated by
// util/design/secded_gen.py from util/design/data/secded_cfg.hjson

#ifndef OPENTITAN_HW_IP_PRIM_DV_PRIM_SECDED_SECDED_ENC_H_
#define OPENTITAN_HW_IP_PRIM_DV_PRIM_SECDED_SECDED_ENC_H_

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif  // __cplusplus

// Integrity encode functions for varying bit widths matching the functionality
// of the RTL modules of the same name. Each takes an array of bytes in
// little-endian order and returns the calculated integrity bits.

uint8_t enc_secded_22_16(const uint8_t bytes[2]);
uint8_t enc_secded_28_22(const uint8_t bytes[3]);
uint8_t enc_secded_39_32(const uint8_t bytes[4]);
uint8_t enc_secded_64_57(const uint8_t bytes[8]);
uint8_t enc_secded_72_64(const uint8_t bytes[8]);
uint8_t enc_secded_inv_22_16(const uint8_t bytes[2]);
uint8_t enc_secded_inv_28_22(const uint8_t bytes[3]);
uint8_t enc_secded_inv_39_32(const uint8_t bytes[4]);
uint8_t enc_secded_inv_64_57(const uint8_t bytes[8]);
uint8_t enc_secded_inv_72_64(const uint8_t bytes[8]);

#ifdef __cplusplus
}  // extern "C"
#endif  // __cplusplus

#endif  // OPENTITAN_HW_IP_PRIM_DV_PRIM_SECDED_SECDED_ENC_H_
