mirror of
https://github.com/intel/isa-l.git
synced 2024-12-12 17:33:50 +01:00
include: reformat using new code style
Signed-off-by: Marcel Cornu <marcel.d.cornu@intel.com>
This commit is contained in:
parent
55fbfabfc6
commit
fa5b8baf84
@ -27,13 +27,11 @@
|
|||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file crc.h
|
* @file crc.h
|
||||||
* @brief CRC functions.
|
* @brief CRC functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _CRC_H_
|
#ifndef _CRC_H_
|
||||||
#define _CRC_H_
|
#define _CRC_H_
|
||||||
|
|
||||||
@ -43,7 +41,6 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Multi-binary functions */
|
/* Multi-binary functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,13 +51,12 @@ extern "C" {
|
|||||||
*
|
*
|
||||||
* @returns 16 bit CRC
|
* @returns 16 bit CRC
|
||||||
*/
|
*/
|
||||||
uint16_t crc16_t10dif(
|
uint16_t
|
||||||
uint16_t init_crc, //!< initial CRC value, 16 bits
|
crc16_t10dif(uint16_t init_crc, //!< initial CRC value, 16 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate CRC and copy T10 standard, runs appropriate version.
|
* @brief Generate CRC and copy T10 standard, runs appropriate version.
|
||||||
*
|
*
|
||||||
@ -68,14 +64,13 @@ uint16_t crc16_t10dif(
|
|||||||
*
|
*
|
||||||
* @returns 16 bit CRC
|
* @returns 16 bit CRC
|
||||||
*/
|
*/
|
||||||
uint16_t crc16_t10dif_copy(
|
uint16_t
|
||||||
uint16_t init_crc, //!< initial CRC value, 16 bits
|
crc16_t10dif_copy(uint16_t init_crc, //!< initial CRC value, 16 bits
|
||||||
uint8_t *dst, //!< buffer destination for copy
|
uint8_t *dst, //!< buffer destination for copy
|
||||||
uint8_t *src, //!< buffer source to crc + copy
|
uint8_t *src, //!< buffer source to crc + copy
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate CRC from the IEEE standard, runs appropriate version.
|
* @brief Generate CRC from the IEEE standard, runs appropriate version.
|
||||||
*
|
*
|
||||||
@ -96,8 +91,8 @@ uint16_t crc16_t10dif_copy(
|
|||||||
* @returns 32 bit CRC
|
* @returns 32 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint32_t crc32_ieee(
|
uint32_t
|
||||||
uint32_t init_crc, //!< initial CRC value, 32 bits
|
crc32_ieee(uint32_t init_crc, //!< initial CRC value, 32 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -124,13 +119,12 @@ uint32_t crc32_ieee(
|
|||||||
*
|
*
|
||||||
* @returns 32 bit CRC
|
* @returns 32 bit CRC
|
||||||
*/
|
*/
|
||||||
uint32_t crc32_gzip_refl(
|
uint32_t
|
||||||
uint32_t init_crc, //!< initial CRC value, 32 bits
|
crc32_gzip_refl(uint32_t init_crc, //!< initial CRC value, 32 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ISCSI CRC function, runs appropriate version.
|
* @brief ISCSI CRC function, runs appropriate version.
|
||||||
*
|
*
|
||||||
@ -139,55 +133,51 @@ uint32_t crc32_gzip_refl(
|
|||||||
*
|
*
|
||||||
* @returns 32 bit CRC
|
* @returns 32 bit CRC
|
||||||
*/
|
*/
|
||||||
unsigned int crc32_iscsi(
|
unsigned int
|
||||||
unsigned char *buffer, //!< buffer to calculate CRC on
|
crc32_iscsi(unsigned char *buffer, //!< buffer to calculate CRC on
|
||||||
int len, //!< buffer length in bytes
|
int len, //!< buffer length in bytes
|
||||||
unsigned int init_crc //!< initial CRC value
|
unsigned int init_crc //!< initial CRC value
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/* Base functions */
|
/* Base functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ISCSI CRC function, baseline version
|
* @brief ISCSI CRC function, baseline version
|
||||||
* @returns 32 bit CRC
|
* @returns 32 bit CRC
|
||||||
*/
|
*/
|
||||||
unsigned int crc32_iscsi_base(
|
unsigned int
|
||||||
unsigned char *buffer, //!< buffer to calculate CRC on
|
crc32_iscsi_base(unsigned char *buffer, //!< buffer to calculate CRC on
|
||||||
int len, //!< buffer length in bytes
|
int len, //!< buffer length in bytes
|
||||||
unsigned int crc_init //!< initial CRC value
|
unsigned int crc_init //!< initial CRC value
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate CRC from the T10 standard, runs baseline version
|
* @brief Generate CRC from the T10 standard, runs baseline version
|
||||||
* @returns 16 bit CRC
|
* @returns 16 bit CRC
|
||||||
*/
|
*/
|
||||||
uint16_t crc16_t10dif_base(
|
uint16_t
|
||||||
uint16_t seed, //!< initial CRC value, 16 bits
|
crc16_t10dif_base(uint16_t seed, //!< initial CRC value, 16 bits
|
||||||
uint8_t *buf, //!< buffer to calculate CRC on
|
uint8_t *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate CRC and copy T10 standard, runs baseline version.
|
* @brief Generate CRC and copy T10 standard, runs baseline version.
|
||||||
* @returns 16 bit CRC
|
* @returns 16 bit CRC
|
||||||
*/
|
*/
|
||||||
uint16_t crc16_t10dif_copy_base(
|
uint16_t
|
||||||
uint16_t init_crc, //!< initial CRC value, 16 bits
|
crc16_t10dif_copy_base(uint16_t init_crc, //!< initial CRC value, 16 bits
|
||||||
uint8_t *dst, //!< buffer destination for copy
|
uint8_t *dst, //!< buffer destination for copy
|
||||||
uint8_t *src, //!< buffer source to crc + copy
|
uint8_t *src, //!< buffer source to crc + copy
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate CRC from the IEEE standard, runs baseline version
|
* @brief Generate CRC from the IEEE standard, runs baseline version
|
||||||
* @returns 32 bit CRC
|
* @returns 32 bit CRC
|
||||||
*/
|
*/
|
||||||
uint32_t crc32_ieee_base(
|
uint32_t
|
||||||
uint32_t seed, //!< initial CRC value, 32 bits
|
crc32_ieee_base(uint32_t seed, //!< initial CRC value, 32 bits
|
||||||
uint8_t *buf, //!< buffer to calculate CRC on
|
uint8_t *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -198,13 +188,12 @@ uint32_t crc32_ieee_base(
|
|||||||
* runs baseline version
|
* runs baseline version
|
||||||
* @returns 32 bit CRC
|
* @returns 32 bit CRC
|
||||||
*/
|
*/
|
||||||
uint32_t crc32_gzip_refl_base(
|
uint32_t
|
||||||
uint32_t seed, //!< initial CRC value, 32 bits
|
crc32_gzip_refl_base(uint32_t seed, //!< initial CRC value, 32 bits
|
||||||
uint8_t *buf, //!< buffer to calculate CRC on
|
uint8_t *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,13 +27,11 @@
|
|||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file crc64.h
|
* @file crc64.h
|
||||||
* @brief CRC64 functions.
|
* @brief CRC64 functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _CRC64_H_
|
#ifndef _CRC64_H_
|
||||||
#define _CRC64_H_
|
#define _CRC64_H_
|
||||||
|
|
||||||
@ -43,7 +41,6 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Multi-binary functions */
|
/* Multi-binary functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,8 +51,8 @@ extern "C" {
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_ecma_refl(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_ecma_refl(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -68,8 +65,8 @@ uint64_t crc64_ecma_refl(
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_ecma_norm(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_ecma_norm(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -82,8 +79,8 @@ uint64_t crc64_ecma_norm(
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_iso_refl(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_iso_refl(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -96,8 +93,8 @@ uint64_t crc64_iso_refl(
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_iso_norm(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_iso_norm(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -110,8 +107,8 @@ uint64_t crc64_iso_norm(
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_jones_refl(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_jones_refl(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -124,8 +121,8 @@ uint64_t crc64_jones_refl(
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_jones_norm(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_jones_norm(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -138,8 +135,8 @@ uint64_t crc64_jones_norm(
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_rocksoft_refl(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_rocksoft_refl(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -152,8 +149,8 @@ uint64_t crc64_rocksoft_refl(
|
|||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_rocksoft_norm(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_rocksoft_norm(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -167,8 +164,8 @@ uint64_t crc64_rocksoft_norm(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_ecma_refl_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_ecma_refl_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -180,8 +177,8 @@ uint64_t crc64_ecma_refl_by8(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_ecma_norm_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_ecma_norm_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -190,8 +187,8 @@ uint64_t crc64_ecma_norm_by8(
|
|||||||
* @brief Generate CRC from ECMA-182 standard in reflected format, runs baseline version
|
* @brief Generate CRC from ECMA-182 standard in reflected format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_ecma_refl_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_ecma_refl_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -200,8 +197,8 @@ uint64_t crc64_ecma_refl_base(
|
|||||||
* @brief Generate CRC from ECMA-182 standard in normal format, runs baseline version
|
* @brief Generate CRC from ECMA-182 standard in normal format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_ecma_norm_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_ecma_norm_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -213,8 +210,8 @@ uint64_t crc64_ecma_norm_base(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_iso_refl_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_iso_refl_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -226,8 +223,8 @@ uint64_t crc64_iso_refl_by8(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_iso_norm_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_iso_norm_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -236,8 +233,8 @@ uint64_t crc64_iso_norm_by8(
|
|||||||
* @brief Generate CRC from ISO standard in reflected format, runs baseline version
|
* @brief Generate CRC from ISO standard in reflected format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_iso_refl_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_iso_refl_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -246,8 +243,8 @@ uint64_t crc64_iso_refl_base(
|
|||||||
* @brief Generate CRC from ISO standard in normal format, runs baseline version
|
* @brief Generate CRC from ISO standard in normal format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_iso_norm_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_iso_norm_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -259,8 +256,8 @@ uint64_t crc64_iso_norm_base(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_jones_refl_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_jones_refl_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -272,8 +269,8 @@ uint64_t crc64_jones_refl_by8(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_jones_norm_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_jones_norm_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -282,8 +279,8 @@ uint64_t crc64_jones_norm_by8(
|
|||||||
* @brief Generate CRC from "Jones" coefficients in reflected format, runs baseline version
|
* @brief Generate CRC from "Jones" coefficients in reflected format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_jones_refl_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_jones_refl_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -292,8 +289,8 @@ uint64_t crc64_jones_refl_base(
|
|||||||
* @brief Generate CRC from "Jones" coefficients in normal format, runs baseline version
|
* @brief Generate CRC from "Jones" coefficients in normal format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_jones_norm_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_jones_norm_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -305,8 +302,8 @@ uint64_t crc64_jones_norm_base(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_rocksoft_refl_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_rocksoft_refl_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -315,8 +312,8 @@ uint64_t crc64_rocksoft_refl_by8(
|
|||||||
* @brief Generate CRC from "Rocksoft" coefficients in reflected format, runs baseline version
|
* @brief Generate CRC from "Rocksoft" coefficients in reflected format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_rocksoft_refl_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_rocksoft_refl_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -328,8 +325,8 @@ uint64_t crc64_rocksoft_refl_base(
|
|||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint64_t crc64_rocksoft_norm_by8(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_rocksoft_norm_by8(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
@ -338,8 +335,8 @@ uint64_t crc64_rocksoft_norm_by8(
|
|||||||
* @brief Generate CRC from "Rocksoft" coefficients in normal format, runs baseline version
|
* @brief Generate CRC from "Rocksoft" coefficients in normal format, runs baseline version
|
||||||
* @returns 64 bit CRC
|
* @returns 64 bit CRC
|
||||||
*/
|
*/
|
||||||
uint64_t crc64_rocksoft_norm_base(
|
uint64_t
|
||||||
uint64_t init_crc, //!< initial CRC value, 64 bits
|
crc64_rocksoft_norm_base(uint64_t init_crc, //!< initial CRC value, 64 bits
|
||||||
const unsigned char *buf, //!< buffer to calculate CRC on
|
const unsigned char *buf, //!< buffer to calculate CRC on
|
||||||
uint64_t len //!< buffer length in bytes (64-bit data)
|
uint64_t len //!< buffer length in bytes (64-bit data)
|
||||||
);
|
);
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _ERASURE_CODE_H_
|
#ifndef _ERASURE_CODE_H_
|
||||||
#define _ERASURE_CODE_H_
|
#define _ERASURE_CODE_H_
|
||||||
|
|
||||||
@ -71,7 +70,8 @@ extern "C" {
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ec_init_tables(int k, int rows, unsigned char* a, unsigned char* gftbls);
|
void
|
||||||
|
ec_init_tables(int k, int rows, unsigned char *a, unsigned char *gftbls);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialize tables for fast Erasure Code encode and decode, runs baseline version.
|
* @brief Initialize tables for fast Erasure Code encode and decode, runs baseline version.
|
||||||
@ -79,7 +79,8 @@ void ec_init_tables(int k, int rows, unsigned char* a, unsigned char* gftbls);
|
|||||||
* Baseline version of ec_encode_data() with same parameters.
|
* Baseline version of ec_encode_data() with same parameters.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ec_init_tables_base(int k, int rows, unsigned char* a, unsigned char* gftbls);
|
void
|
||||||
|
ec_init_tables_base(int k, int rows, unsigned char *a, unsigned char *gftbls);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate or decode erasure codes on blocks of data, runs appropriate version.
|
* @brief Generate or decode erasure codes on blocks of data, runs appropriate version.
|
||||||
@ -103,7 +104,8 @@ void ec_init_tables_base(int k, int rows, unsigned char* a, unsigned char* gftbl
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ec_encode_data(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
void
|
||||||
|
ec_encode_data(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
||||||
unsigned char **coding);
|
unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -111,11 +113,13 @@ void ec_encode_data(int len, int k, int rows, unsigned char *gftbls, unsigned ch
|
|||||||
*
|
*
|
||||||
* Baseline version of ec_encode_data() with same parameters.
|
* Baseline version of ec_encode_data() with same parameters.
|
||||||
*/
|
*/
|
||||||
void ec_encode_data_base(int len, int srcs, int dests, unsigned char *v, unsigned char **src,
|
void
|
||||||
|
ec_encode_data_base(int len, int srcs, int dests, unsigned char *v, unsigned char **src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate update for encode or decode of erasure codes from single source, runs appropriate version.
|
* @brief Generate update for encode or decode of erasure codes from single source, runs appropriate
|
||||||
|
* version.
|
||||||
*
|
*
|
||||||
* Given one source data block, update one or multiple blocks of encoded data as
|
* Given one source data block, update one or multiple blocks of encoded data as
|
||||||
* specified by a matrix of GF(2^8) coefficients. When given a suitable set of
|
* specified by a matrix of GF(2^8) coefficients. When given a suitable set of
|
||||||
@ -136,7 +140,8 @@ void ec_encode_data_base(int len, int srcs, int dests, unsigned char *v, unsigne
|
|||||||
* @param coding Array of pointers to coded output buffers.
|
* @param coding Array of pointers to coded output buffers.
|
||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
void ec_encode_data_update(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
void
|
||||||
|
ec_encode_data_update(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
||||||
unsigned char *data, unsigned char **coding);
|
unsigned char *data, unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -145,7 +150,8 @@ void ec_encode_data_update(int len, int k, int rows, int vec_i, unsigned char *g
|
|||||||
* Baseline version of ec_encode_data_update().
|
* Baseline version of ec_encode_data_update().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ec_encode_data_update_base(int len, int k, int rows, int vec_i, unsigned char *v,
|
void
|
||||||
|
ec_encode_data_update_base(int len, int k, int rows, int vec_i, unsigned char *v,
|
||||||
unsigned char *data, unsigned char **dest);
|
unsigned char *data, unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,9 +174,9 @@ void ec_encode_data_update_base(int len, int k, int rows, int vec_i, unsigned ch
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
void gf_vect_dot_prod_base(int len, int vlen, unsigned char *gftbls,
|
gf_vect_dot_prod_base(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
unsigned char **src, unsigned char *dest);
|
unsigned char *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product, runs appropriate version.
|
* @brief GF(2^8) vector dot product, runs appropriate version.
|
||||||
@ -192,8 +198,9 @@ void gf_vect_dot_prod_base(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_dot_prod(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char *dest);
|
gf_vect_dot_prod(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply accumulate, runs appropriate version.
|
* @brief GF(2^8) vector multiply accumulate, runs appropriate version.
|
||||||
@ -218,7 +225,8 @@ void gf_vect_dot_prod(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_mad(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_vect_mad(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char *dest);
|
unsigned char *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -227,7 +235,8 @@ void gf_vect_mad(int len, int vec, int vec_i, unsigned char *gftbls, unsigned ch
|
|||||||
* Baseline version of gf_vect_mad() with same parameters.
|
* Baseline version of gf_vect_mad() with same parameters.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_mad_base(int len, int vec, int vec_i, unsigned char *v, unsigned char *src,
|
void
|
||||||
|
gf_vect_mad_base(int len, int vec, int vec_i, unsigned char *v, unsigned char *src,
|
||||||
unsigned char *dest);
|
unsigned char *dest);
|
||||||
|
|
||||||
// x86 only
|
// x86 only
|
||||||
@ -239,7 +248,8 @@ void gf_vect_mad_base(int len, int vec, int vec_i, unsigned char *v, unsigned ch
|
|||||||
* Arch specific version of ec_encode_data() with same parameters.
|
* Arch specific version of ec_encode_data() with same parameters.
|
||||||
* @requires SSE4.1
|
* @requires SSE4.1
|
||||||
*/
|
*/
|
||||||
void ec_encode_data_sse(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
void
|
||||||
|
ec_encode_data_sse(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
||||||
unsigned char **coding);
|
unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -248,7 +258,8 @@ void ec_encode_data_sse(int len, int k, int rows, unsigned char *gftbls, unsigne
|
|||||||
* Arch specific version of ec_encode_data() with same parameters.
|
* Arch specific version of ec_encode_data() with same parameters.
|
||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
void ec_encode_data_avx(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
void
|
||||||
|
ec_encode_data_avx(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
||||||
unsigned char **coding);
|
unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -257,7 +268,8 @@ void ec_encode_data_avx(int len, int k, int rows, unsigned char *gftbls, unsigne
|
|||||||
* Arch specific version of ec_encode_data() with same parameters.
|
* Arch specific version of ec_encode_data() with same parameters.
|
||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
void ec_encode_data_avx2(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
void
|
||||||
|
ec_encode_data_avx2(int len, int k, int rows, unsigned char *gftbls, unsigned char **data,
|
||||||
unsigned char **coding);
|
unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -267,7 +279,8 @@ void ec_encode_data_avx2(int len, int k, int rows, unsigned char *gftbls, unsign
|
|||||||
* @requires SSE4.1
|
* @requires SSE4.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ec_encode_data_update_sse(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
void
|
||||||
|
ec_encode_data_update_sse(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
||||||
unsigned char *data, unsigned char **coding);
|
unsigned char *data, unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -277,7 +290,8 @@ void ec_encode_data_update_sse(int len, int k, int rows, int vec_i, unsigned cha
|
|||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ec_encode_data_update_avx(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
void
|
||||||
|
ec_encode_data_update_avx(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
||||||
unsigned char *data, unsigned char **coding);
|
unsigned char *data, unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -287,7 +301,8 @@ void ec_encode_data_update_avx(int len, int k, int rows, int vec_i, unsigned cha
|
|||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ec_encode_data_update_avx2(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
void
|
||||||
|
ec_encode_data_update_avx2(int len, int k, int rows, int vec_i, unsigned char *g_tbls,
|
||||||
unsigned char *data, unsigned char **coding);
|
unsigned char *data, unsigned char **coding);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -308,8 +323,9 @@ void ec_encode_data_update_avx2(int len, int k, int rows, int vec_i, unsigned ch
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char *dest);
|
gf_vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product.
|
* @brief GF(2^8) vector dot product.
|
||||||
@ -329,8 +345,9 @@ void gf_vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char *dest);
|
gf_vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product.
|
* @brief GF(2^8) vector dot product.
|
||||||
@ -350,8 +367,9 @@ void gf_vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char *dest);
|
gf_vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with two outputs.
|
* @brief GF(2^8) vector dot product with two outputs.
|
||||||
@ -372,8 +390,9 @@ void gf_vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_2vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_2vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with two outputs.
|
* @brief GF(2^8) vector dot product with two outputs.
|
||||||
@ -394,8 +413,9 @@ void gf_2vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_2vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_2vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with two outputs.
|
* @brief GF(2^8) vector dot product with two outputs.
|
||||||
@ -416,8 +436,9 @@ void gf_2vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_2vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_2vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with three outputs.
|
* @brief GF(2^8) vector dot product with three outputs.
|
||||||
@ -438,8 +459,9 @@ void gf_2vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_3vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_3vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with three outputs.
|
* @brief GF(2^8) vector dot product with three outputs.
|
||||||
@ -460,8 +482,9 @@ void gf_3vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_3vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_3vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with three outputs.
|
* @brief GF(2^8) vector dot product with three outputs.
|
||||||
@ -482,8 +505,9 @@ void gf_3vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_3vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_3vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with four outputs.
|
* @brief GF(2^8) vector dot product with four outputs.
|
||||||
@ -504,8 +528,9 @@ void gf_3vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_4vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_4vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with four outputs.
|
* @brief GF(2^8) vector dot product with four outputs.
|
||||||
@ -526,8 +551,9 @@ void gf_4vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_4vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_4vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with four outputs.
|
* @brief GF(2^8) vector dot product with four outputs.
|
||||||
@ -548,8 +574,9 @@ void gf_4vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_4vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_4vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with five outputs.
|
* @brief GF(2^8) vector dot product with five outputs.
|
||||||
@ -570,8 +597,9 @@ void gf_4vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_5vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_5vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with five outputs.
|
* @brief GF(2^8) vector dot product with five outputs.
|
||||||
@ -592,8 +620,9 @@ void gf_5vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_5vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_5vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with five outputs.
|
* @brief GF(2^8) vector dot product with five outputs.
|
||||||
@ -614,8 +643,9 @@ void gf_5vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_5vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_5vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with six outputs.
|
* @brief GF(2^8) vector dot product with six outputs.
|
||||||
@ -636,8 +666,9 @@ void gf_5vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_6vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_6vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with six outputs.
|
* @brief GF(2^8) vector dot product with six outputs.
|
||||||
@ -658,8 +689,9 @@ void gf_6vect_dot_prod_sse(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_6vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_6vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector dot product with six outputs.
|
* @brief GF(2^8) vector dot product with six outputs.
|
||||||
@ -680,8 +712,9 @@ void gf_6vect_dot_prod_avx(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_6vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
void
|
||||||
unsigned char **src, unsigned char **dest);
|
gf_6vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls, unsigned char **src,
|
||||||
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply accumulate, arch specific version.
|
* @brief GF(2^8) vector multiply accumulate, arch specific version.
|
||||||
@ -690,7 +723,8 @@ void gf_6vect_dot_prod_avx2(int len, int vlen, unsigned char *gftbls,
|
|||||||
* @requires SSE4.1
|
* @requires SSE4.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char *dest);
|
unsigned char *dest);
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply accumulate, arch specific version.
|
* @brief GF(2^8) vector multiply accumulate, arch specific version.
|
||||||
@ -699,7 +733,8 @@ void gf_vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigne
|
|||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char *dest);
|
unsigned char *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -709,10 +744,10 @@ void gf_vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigne
|
|||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char *dest);
|
unsigned char *dest);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 2 accumulate. SSE version.
|
* @brief GF(2^8) vector multiply with 2 accumulate. SSE version.
|
||||||
*
|
*
|
||||||
@ -734,20 +769,23 @@ void gf_vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsign
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_2vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_2vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 2 accumulate. AVX version of gf_2vect_mad_sse().
|
* @brief GF(2^8) vector multiply with 2 accumulate. AVX version of gf_2vect_mad_sse().
|
||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
void gf_2vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_2vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 2 accumulate. AVX2 version of gf_2vect_mad_sse().
|
* @brief GF(2^8) vector multiply with 2 accumulate. AVX2 version of gf_2vect_mad_sse().
|
||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
void gf_2vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_2vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -771,21 +809,24 @@ void gf_2vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsig
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_3vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_3vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 3 accumulate. AVX version of gf_3vect_mad_sse().
|
* @brief GF(2^8) vector multiply with 3 accumulate. AVX version of gf_3vect_mad_sse().
|
||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
void gf_3vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_3vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 3 accumulate. AVX2 version of gf_3vect_mad_sse().
|
* @brief GF(2^8) vector multiply with 3 accumulate. AVX2 version of gf_3vect_mad_sse().
|
||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
void gf_3vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_3vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -809,60 +850,69 @@ void gf_3vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsig
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_4vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_4vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 4 accumulate. AVX version of gf_4vect_mad_sse().
|
* @brief GF(2^8) vector multiply with 4 accumulate. AVX version of gf_4vect_mad_sse().
|
||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
void gf_4vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_4vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 4 accumulate. AVX2 version of gf_4vect_mad_sse().
|
* @brief GF(2^8) vector multiply with 4 accumulate. AVX2 version of gf_4vect_mad_sse().
|
||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
void gf_4vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_4vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 5 accumulate. SSE version.
|
* @brief GF(2^8) vector multiply with 5 accumulate. SSE version.
|
||||||
* @requires SSE4.1
|
* @requires SSE4.1
|
||||||
*/
|
*/
|
||||||
void gf_5vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_5vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 5 accumulate. AVX version.
|
* @brief GF(2^8) vector multiply with 5 accumulate. AVX version.
|
||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
void gf_5vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_5vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 5 accumulate. AVX2 version.
|
* @brief GF(2^8) vector multiply with 5 accumulate. AVX2 version.
|
||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
void gf_5vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_5vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 6 accumulate. SSE version.
|
* @brief GF(2^8) vector multiply with 6 accumulate. SSE version.
|
||||||
* @requires SSE4.1
|
* @requires SSE4.1
|
||||||
*/
|
*/
|
||||||
void gf_6vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_6vect_mad_sse(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 6 accumulate. AVX version.
|
* @brief GF(2^8) vector multiply with 6 accumulate. AVX version.
|
||||||
* @requires AVX
|
* @requires AVX
|
||||||
*/
|
*/
|
||||||
void gf_6vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_6vect_mad_avx(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply with 6 accumulate. AVX2 version.
|
* @brief GF(2^8) vector multiply with 6 accumulate. AVX2 version.
|
||||||
* @requires AVX2
|
* @requires AVX2
|
||||||
*/
|
*/
|
||||||
void gf_6vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
void
|
||||||
|
gf_6vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsigned char *src,
|
||||||
unsigned char **dest);
|
unsigned char **dest);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -879,7 +929,8 @@ void gf_6vect_mad_avx2(int len, int vec, int vec_i, unsigned char *gftbls, unsig
|
|||||||
* @returns Product of a and b in GF(2^8)
|
* @returns Product of a and b in GF(2^8)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned char gf_mul(unsigned char a, unsigned char b);
|
unsigned char
|
||||||
|
gf_mul(unsigned char a, unsigned char b);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Single element GF(2^8) inverse.
|
* @brief Single element GF(2^8) inverse.
|
||||||
@ -888,7 +939,8 @@ unsigned char gf_mul(unsigned char a, unsigned char b);
|
|||||||
* @returns Field element b such that a x b = {1}
|
* @returns Field element b such that a x b = {1}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned char gf_inv(unsigned char a);
|
unsigned char
|
||||||
|
gf_inv(unsigned char a);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate a matrix of coefficients to be used for encoding.
|
* @brief Generate a matrix of coefficients to be used for encoding.
|
||||||
@ -914,7 +966,8 @@ unsigned char gf_inv(unsigned char a);
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_gen_rs_matrix(unsigned char *a, int m, int k);
|
void
|
||||||
|
gf_gen_rs_matrix(unsigned char *a, int m, int k);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate a Cauchy matrix of coefficients to be used for encoding.
|
* @brief Generate a Cauchy matrix of coefficients to be used for encoding.
|
||||||
@ -929,7 +982,8 @@ void gf_gen_rs_matrix(unsigned char *a, int m, int k);
|
|||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_gen_cauchy1_matrix(unsigned char *a, int m, int k);
|
void
|
||||||
|
gf_gen_cauchy1_matrix(unsigned char *a, int m, int k);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Invert a matrix in GF(2^8)
|
* @brief Invert a matrix in GF(2^8)
|
||||||
@ -943,8 +997,8 @@ void gf_gen_cauchy1_matrix(unsigned char *a, int m, int k);
|
|||||||
* @returns 0 successful, other fail on singular input matrix
|
* @returns 0 successful, other fail on singular input matrix
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int gf_invert_matrix(unsigned char *in, unsigned char *out, const int n);
|
int
|
||||||
|
gf_invert_matrix(unsigned char *in, unsigned char *out, const int n);
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
|
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _GF_VECT_MUL_H
|
#ifndef _GF_VECT_MUL_H
|
||||||
#define _GF_VECT_MUL_H
|
#define _GF_VECT_MUL_H
|
||||||
|
|
||||||
@ -64,8 +63,8 @@ extern "C" {
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int gf_vect_mul_sse(int len, unsigned char *gftbl, void *src, void *dest);
|
int
|
||||||
|
gf_vect_mul_sse(int len, unsigned char *gftbl, void *src, void *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply by constant.
|
* @brief GF(2^8) vector multiply by constant.
|
||||||
@ -85,7 +84,8 @@ int gf_vect_mul_sse(int len, unsigned char *gftbl, void *src, void *dest);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int gf_vect_mul_avx(int len, unsigned char *gftbl, void *src, void *dest);
|
int
|
||||||
|
gf_vect_mul_avx(int len, unsigned char *gftbl, void *src, void *dest);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -109,8 +109,8 @@ int gf_vect_mul_avx(int len, unsigned char *gftbl, void *src, void *dest);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int gf_vect_mul(int len, unsigned char *gftbl, void *src, void *dest);
|
int
|
||||||
|
gf_vect_mul(int len, unsigned char *gftbl, void *src, void *dest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialize 32-byte constant array for GF(2^8) vector multiply
|
* @brief Initialize 32-byte constant array for GF(2^8) vector multiply
|
||||||
@ -122,8 +122,8 @@ int gf_vect_mul(int len, unsigned char *gftbl, void *src, void *dest);
|
|||||||
* @param gftbl Table output.
|
* @param gftbl Table output.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gf_vect_mul_init(unsigned char c, unsigned char* gftbl);
|
void
|
||||||
|
gf_vect_mul_init(unsigned char c, unsigned char *gftbl);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GF(2^8) vector multiply by constant, runs baseline version.
|
* @brief GF(2^8) vector multiply by constant, runs baseline version.
|
||||||
@ -143,8 +143,8 @@ void gf_vect_mul_init(unsigned char c, unsigned char* gftbl);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int gf_vect_mul_base(int len, unsigned char *a, unsigned char *src,
|
int
|
||||||
unsigned char *dest);
|
gf_vect_mul_base(int len, unsigned char *a, unsigned char *src, unsigned char *dest);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -172,7 +172,6 @@ enum {IGZIP_LIT_TABLE_SIZE = ISAL_DEF_LIT_SYMBOLS};
|
|||||||
* @brief Compression State please note ZSTATE_TRL only applies for GZIP compression
|
* @brief Compression State please note ZSTATE_TRL only applies for GZIP compression
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* When the state is set to ZSTATE_NEW_HDR or TMP_ZSTATE_NEW_HEADER, the
|
/* When the state is set to ZSTATE_NEW_HDR or TMP_ZSTATE_NEW_HEADER, the
|
||||||
* hufftable being used for compression may be swapped
|
* hufftable being used for compression may be swapped
|
||||||
*/
|
*/
|
||||||
@ -219,7 +218,8 @@ enum isal_block_state {
|
|||||||
ISAL_BLOCK_TYPE0, /* Decoding a type 0 block */
|
ISAL_BLOCK_TYPE0, /* Decoding a type 0 block */
|
||||||
ISAL_BLOCK_CODED, /* Decoding a huffman coded block */
|
ISAL_BLOCK_CODED, /* Decoding a huffman coded block */
|
||||||
ISAL_BLOCK_INPUT_DONE, /* Decompression of input is completed */
|
ISAL_BLOCK_INPUT_DONE, /* Decompression of input is completed */
|
||||||
ISAL_BLOCK_FINISH, /* Decompression of input is completed and all data has been flushed to output */
|
ISAL_BLOCK_FINISH, /* Decompression of input is completed and all data has been flushed to
|
||||||
|
output */
|
||||||
ISAL_GZIP_EXTRA_LEN,
|
ISAL_GZIP_EXTRA_LEN,
|
||||||
ISAL_GZIP_EXTRA,
|
ISAL_GZIP_EXTRA,
|
||||||
ISAL_GZIP_NAME,
|
ISAL_GZIP_NAME,
|
||||||
@ -229,7 +229,6 @@ enum isal_block_state {
|
|||||||
ISAL_CHECKSUM_CHECK,
|
ISAL_CHECKSUM_CHECK,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Inflate Flags */
|
/* Inflate Flags */
|
||||||
#define ISAL_DEFLATE 0 /* Default */
|
#define ISAL_DEFLATE 0 /* Default */
|
||||||
#define ISAL_GZIP 1
|
#define ISAL_GZIP 1
|
||||||
@ -259,7 +258,8 @@ enum isal_block_state {
|
|||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/** @brief Holds histogram of deflate symbols*/
|
/** @brief Holds histogram of deflate symbols*/
|
||||||
struct isal_huff_histogram {
|
struct isal_huff_histogram {
|
||||||
uint64_t lit_len_histogram[ISAL_DEF_LIT_LEN_SYMBOLS]; //!< Histogram of Literal/Len symbols seen
|
uint64_t lit_len_histogram[ISAL_DEF_LIT_LEN_SYMBOLS]; //!< Histogram of Literal/Len symbols
|
||||||
|
//!< seen
|
||||||
uint64_t dist_histogram[ISAL_DEF_DIST_SYMBOLS]; //!< Histogram of Distance Symbols seen
|
uint64_t dist_histogram[ISAL_DEF_DIST_SYMBOLS]; //!< Histogram of Distance Symbols seen
|
||||||
uint16_t hash_table[IGZIP_LVL0_HASH_SIZE]; //!< Tmp space used as a hash table
|
uint16_t hash_table[IGZIP_LVL0_HASH_SIZE]; //!< Tmp space used as a hash table
|
||||||
};
|
};
|
||||||
@ -370,7 +370,8 @@ struct isal_zstate {
|
|||||||
uint8_t has_eob_hdr; //!< keeps track of eob hdr (with BFINAL set)
|
uint8_t has_eob_hdr; //!< keeps track of eob hdr (with BFINAL set)
|
||||||
uint8_t has_eob; //!< keeps track of eob on the last deflate block
|
uint8_t has_eob; //!< keeps track of eob on the last deflate block
|
||||||
uint8_t has_hist; //!< flag to track if there is match history
|
uint8_t has_hist; //!< flag to track if there is match history
|
||||||
uint16_t has_level_buf_init; //!< flag to track if user supplied memory has been initialized.
|
uint16_t
|
||||||
|
has_level_buf_init; //!< flag to track if user supplied memory has been initialized.
|
||||||
uint32_t count; //!< used for partial header/trailer writes
|
uint32_t count; //!< used for partial header/trailer writes
|
||||||
uint8_t tmp_out_buff[16]; //!< temporary array
|
uint8_t tmp_out_buff[16]; //!< temporary array
|
||||||
uint32_t tmp_out_start; //!< temporary variable
|
uint32_t tmp_out_start; //!< temporary variable
|
||||||
@ -389,13 +390,14 @@ struct isal_hufftables {
|
|||||||
uint8_t deflate_hdr[ISAL_DEF_MAX_HDR_SIZE]; //!< deflate huffman tree header
|
uint8_t deflate_hdr[ISAL_DEF_MAX_HDR_SIZE]; //!< deflate huffman tree header
|
||||||
uint32_t deflate_hdr_count; //!< Number of whole bytes in deflate_huff_hdr
|
uint32_t deflate_hdr_count; //!< Number of whole bytes in deflate_huff_hdr
|
||||||
uint32_t deflate_hdr_extra_bits; //!< Number of bits in the partial byte in header
|
uint32_t deflate_hdr_extra_bits; //!< Number of bits in the partial byte in header
|
||||||
uint32_t dist_table[IGZIP_DIST_TABLE_SIZE]; //!< bits 4:0 are the code length, bits 31:5 are the code
|
uint32_t dist_table[IGZIP_DIST_TABLE_SIZE]; //!< bits 4:0 are the code length, bits 31:5 are
|
||||||
uint32_t len_table[IGZIP_LEN_TABLE_SIZE]; //!< bits 4:0 are the code length, bits 31:5 are the code
|
//!< the code
|
||||||
|
uint32_t len_table[IGZIP_LEN_TABLE_SIZE]; //!< bits 4:0 are the code length, bits 31:5 are
|
||||||
|
//!< the code
|
||||||
uint16_t lit_table[IGZIP_LIT_TABLE_SIZE]; //!< literal code
|
uint16_t lit_table[IGZIP_LIT_TABLE_SIZE]; //!< literal code
|
||||||
uint8_t lit_table_sizes[IGZIP_LIT_TABLE_SIZE]; //!< literal code length
|
uint8_t lit_table_sizes[IGZIP_LIT_TABLE_SIZE]; //!< literal code length
|
||||||
uint16_t dcodes[30 - IGZIP_DECODE_OFFSET]; //!< distance code
|
uint16_t dcodes[30 - IGZIP_DECODE_OFFSET]; //!< distance code
|
||||||
uint8_t dcodes_sizes[30 - IGZIP_DECODE_OFFSET]; //!< distance code length
|
uint8_t dcodes_sizes[30 - IGZIP_DECODE_OFFSET]; //!< distance code length
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @brief Holds stream information*/
|
/** @brief Holds stream information*/
|
||||||
@ -482,8 +484,10 @@ struct isal_zstream {
|
|||||||
#define ISAL_L_DUP ((1 << ISAL_L_REM) - (ISAL_L_REM + 1))
|
#define ISAL_L_DUP ((1 << ISAL_L_REM) - (ISAL_L_REM + 1))
|
||||||
#define ISAL_S_DUP ((1 << ISAL_S_REM) - (ISAL_S_REM + 1))
|
#define ISAL_S_DUP ((1 << ISAL_S_REM) - (ISAL_S_REM + 1))
|
||||||
|
|
||||||
#define ISAL_L_UNUSED ((1 << ISAL_L_REM) - (1 << ((ISAL_L_REM)/2)) - (1 << ((ISAL_L_REM + 1)/2)) + 1)
|
#define ISAL_L_UNUSED \
|
||||||
#define ISAL_S_UNUSED ((1 << ISAL_S_REM) - (1 << ((ISAL_S_REM)/2)) - (1 << ((ISAL_S_REM + 1)/2)) + 1)
|
((1 << ISAL_L_REM) - (1 << ((ISAL_L_REM) / 2)) - (1 << ((ISAL_L_REM + 1) / 2)) + 1)
|
||||||
|
#define ISAL_S_UNUSED \
|
||||||
|
((1 << ISAL_S_REM) - (1 << ((ISAL_S_REM) / 2)) - (1 << ((ISAL_S_REM + 1) / 2)) + 1)
|
||||||
|
|
||||||
#define ISAL_L_SIZE (ISAL_DEF_LIT_LEN_SYMBOLS + ISAL_L_DUP + ISAL_L_UNUSED)
|
#define ISAL_L_SIZE (ISAL_DEF_LIT_LEN_SYMBOLS + ISAL_L_DUP + ISAL_L_UNUSED)
|
||||||
#define ISAL_S_SIZE (ISAL_DEF_DIST_SYMBOLS + ISAL_S_DUP + ISAL_S_UNUSED)
|
#define ISAL_S_SIZE (ISAL_DEF_DIST_SYMBOLS + ISAL_S_DUP + ISAL_S_UNUSED)
|
||||||
@ -521,7 +525,8 @@ struct inflate_state {
|
|||||||
uint32_t crc; //!< Contains crc or adler32 of output if crc_flag is set
|
uint32_t crc; //!< Contains crc or adler32 of output if crc_flag is set
|
||||||
uint32_t hist_bits; //!< Log base 2 of maximum lookback distance
|
uint32_t hist_bits; //!< Log base 2 of maximum lookback distance
|
||||||
union {
|
union {
|
||||||
int32_t type0_block_len; //!< Length left to read of type 0 block when outbuffer overflow occurred
|
int32_t type0_block_len; //!< Length left to read of type 0 block when outbuffer
|
||||||
|
//!< overflow occurred
|
||||||
int32_t count; //!< Count of bytes remaining to be parsed
|
int32_t count; //!< Count of bytes remaining to be parsed
|
||||||
uint32_t dict_id;
|
uint32_t dict_id;
|
||||||
};
|
};
|
||||||
@ -533,8 +538,11 @@ struct inflate_state {
|
|||||||
int16_t tmp_in_size; //!< Number of bytes in tmp_in_buffer
|
int16_t tmp_in_size; //!< Number of bytes in tmp_in_buffer
|
||||||
int32_t tmp_out_valid; //!< Number of bytes in tmp_out_buffer
|
int32_t tmp_out_valid; //!< Number of bytes in tmp_out_buffer
|
||||||
int32_t tmp_out_processed; //!< Number of bytes processed in tmp_out_buffer
|
int32_t tmp_out_processed; //!< Number of bytes processed in tmp_out_buffer
|
||||||
uint8_t tmp_in_buffer[ISAL_DEF_MAX_HDR_SIZE]; //!< Temporary buffer containing data from the input stream
|
uint8_t tmp_in_buffer[ISAL_DEF_MAX_HDR_SIZE]; //!< Temporary buffer containing data from the
|
||||||
uint8_t tmp_out_buffer[2 * ISAL_DEF_HIST_SIZE + ISAL_LOOK_AHEAD]; //!< Temporary buffer containing data from the output stream
|
//!< input stream
|
||||||
|
uint8_t tmp_out_buffer[2 * ISAL_DEF_HIST_SIZE +
|
||||||
|
ISAL_LOOK_AHEAD]; //!< Temporary buffer containing data from the
|
||||||
|
//!< output stream
|
||||||
};
|
};
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
@ -551,8 +559,8 @@ struct inflate_state {
|
|||||||
* @param length: The length of start_stream.
|
* @param length: The length of start_stream.
|
||||||
* @param histogram: The returned histogram of lit/len/dist symbols.
|
* @param histogram: The returned histogram of lit/len/dist symbols.
|
||||||
*/
|
*/
|
||||||
void isal_update_histogram(uint8_t * in_stream, int length, struct isal_huff_histogram * histogram);
|
void
|
||||||
|
isal_update_histogram(uint8_t *in_stream, int length, struct isal_huff_histogram *histogram);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creates a custom huffman code for the given histograms in which
|
* @brief Creates a custom huffman code for the given histograms in which
|
||||||
@ -564,8 +572,8 @@ void isal_update_histogram(uint8_t * in_stream, int length, struct isal_huff_his
|
|||||||
* repeat lengths and lookback distances
|
* repeat lengths and lookback distances
|
||||||
* @returns Returns a non zero value if an invalid huffman code was created.
|
* @returns Returns a non zero value if an invalid huffman code was created.
|
||||||
*/
|
*/
|
||||||
int isal_create_hufftables(struct isal_hufftables * hufftables,
|
int
|
||||||
struct isal_huff_histogram * histogram);
|
isal_create_hufftables(struct isal_hufftables *hufftables, struct isal_huff_histogram *histogram);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creates a custom huffman code for the given histograms like
|
* @brief Creates a custom huffman code for the given histograms like
|
||||||
@ -577,7 +585,8 @@ int isal_create_hufftables(struct isal_hufftables * hufftables,
|
|||||||
* repeat lengths and lookback distances
|
* repeat lengths and lookback distances
|
||||||
* @returns Returns a non zero value if an invalid huffman code was created.
|
* @returns Returns a non zero value if an invalid huffman code was created.
|
||||||
*/
|
*/
|
||||||
int isal_create_hufftables_subset(struct isal_hufftables * hufftables,
|
int
|
||||||
|
isal_create_hufftables_subset(struct isal_hufftables *hufftables,
|
||||||
struct isal_huff_histogram *histogram);
|
struct isal_huff_histogram *histogram);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -586,7 +595,8 @@ int isal_create_hufftables_subset(struct isal_hufftables * hufftables,
|
|||||||
* @param stream Structure holding state information on the compression streams.
|
* @param stream Structure holding state information on the compression streams.
|
||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
void isal_deflate_init(struct isal_zstream *stream);
|
void
|
||||||
|
isal_deflate_init(struct isal_zstream *stream);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reinitialize compression stream data structure. Performs the same
|
* @brief Reinitialize compression stream data structure. Performs the same
|
||||||
@ -597,22 +607,24 @@ void isal_deflate_init(struct isal_zstream *stream);
|
|||||||
* @param stream Structure holding state information on the compression streams.
|
* @param stream Structure holding state information on the compression streams.
|
||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
void isal_deflate_reset(struct isal_zstream *stream);
|
void
|
||||||
|
isal_deflate_reset(struct isal_zstream *stream);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set gzip header default values
|
* @brief Set gzip header default values
|
||||||
*
|
*
|
||||||
* @param gz_hdr: Gzip header to initialize.
|
* @param gz_hdr: Gzip header to initialize.
|
||||||
*/
|
*/
|
||||||
void isal_gzip_header_init(struct isal_gzip_header *gz_hdr);
|
void
|
||||||
|
isal_gzip_header_init(struct isal_gzip_header *gz_hdr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set zlib header default values
|
* @brief Set zlib header default values
|
||||||
*
|
*
|
||||||
* @param z_hdr: zlib header to initialize.
|
* @param z_hdr: zlib header to initialize.
|
||||||
*/
|
*/
|
||||||
void isal_zlib_header_init(struct isal_zlib_header *z_hdr);
|
void
|
||||||
|
isal_zlib_header_init(struct isal_zlib_header *z_hdr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Write gzip header to output stream
|
* @brief Write gzip header to output stream
|
||||||
@ -629,7 +641,8 @@ void isal_zlib_header_init(struct isal_zlib_header *z_hdr);
|
|||||||
* the minimum size required to successfully write the gzip header to the output
|
* the minimum size required to successfully write the gzip header to the output
|
||||||
* buffer.
|
* buffer.
|
||||||
*/
|
*/
|
||||||
uint32_t isal_write_gzip_header(struct isal_zstream * stream, struct isal_gzip_header *gz_hdr);
|
uint32_t
|
||||||
|
isal_write_gzip_header(struct isal_zstream *stream, struct isal_gzip_header *gz_hdr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Write zlib header to output stream
|
* @brief Write zlib header to output stream
|
||||||
@ -646,7 +659,8 @@ uint32_t isal_write_gzip_header(struct isal_zstream * stream, struct isal_gzip_h
|
|||||||
* the minimum size required to successfully write the zlib header to the output
|
* the minimum size required to successfully write the zlib header to the output
|
||||||
* buffer.
|
* buffer.
|
||||||
*/
|
*/
|
||||||
uint32_t isal_write_zlib_header(struct isal_zstream * stream, struct isal_zlib_header *z_hdr);
|
uint32_t
|
||||||
|
isal_write_zlib_header(struct isal_zstream *stream, struct isal_zlib_header *z_hdr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set stream to use a new Huffman code
|
* @brief Set stream to use a new Huffman code
|
||||||
@ -668,8 +682,9 @@ uint32_t isal_write_zlib_header(struct isal_zstream * stream, struct isal_zlib_h
|
|||||||
* due to the stream being in a state where changing the huffman code is not
|
* due to the stream being in a state where changing the huffman code is not
|
||||||
* allowed or an invalid input is provided.
|
* allowed or an invalid input is provided.
|
||||||
*/
|
*/
|
||||||
int isal_deflate_set_hufftables(struct isal_zstream *stream,
|
int
|
||||||
struct isal_hufftables *hufftables, int type);
|
isal_deflate_set_hufftables(struct isal_zstream *stream, struct isal_hufftables *hufftables,
|
||||||
|
int type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Initialize compression stream data structure
|
* @brief Initialize compression stream data structure
|
||||||
@ -677,8 +692,8 @@ int isal_deflate_set_hufftables(struct isal_zstream *stream,
|
|||||||
* @param stream Structure holding state information on the compression streams.
|
* @param stream Structure holding state information on the compression streams.
|
||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
void isal_deflate_stateless_init(struct isal_zstream *stream);
|
void
|
||||||
|
isal_deflate_stateless_init(struct isal_zstream *stream);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set compression dictionary to use
|
* @brief Set compression dictionary to use
|
||||||
@ -694,7 +709,8 @@ void isal_deflate_stateless_init(struct isal_zstream *stream);
|
|||||||
* @returns COMP_OK,
|
* @returns COMP_OK,
|
||||||
* ISAL_INVALID_STATE (dictionary could not be set)
|
* ISAL_INVALID_STATE (dictionary could not be set)
|
||||||
*/
|
*/
|
||||||
int isal_deflate_set_dict(struct isal_zstream *stream, uint8_t *dict, uint32_t dict_len);
|
int
|
||||||
|
isal_deflate_set_dict(struct isal_zstream *stream, uint8_t *dict, uint32_t dict_len);
|
||||||
|
|
||||||
/** @brief Structure for holding processed dictionary information */
|
/** @brief Structure for holding processed dictionary information */
|
||||||
|
|
||||||
@ -725,8 +741,9 @@ struct isal_dict {
|
|||||||
* @returns COMP_OK,
|
* @returns COMP_OK,
|
||||||
* ISAL_INVALID_STATE (dictionary could not be processed)
|
* ISAL_INVALID_STATE (dictionary could not be processed)
|
||||||
*/
|
*/
|
||||||
int isal_deflate_process_dict(struct isal_zstream *stream, struct isal_dict *dict_str,
|
int
|
||||||
uint8_t *dict, uint32_t dict_len);
|
isal_deflate_process_dict(struct isal_zstream *stream, struct isal_dict *dict_str, uint8_t *dict,
|
||||||
|
uint32_t dict_len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reset compression dictionary to use
|
* @brief Reset compression dictionary to use
|
||||||
@ -745,8 +762,8 @@ int isal_deflate_process_dict(struct isal_zstream *stream, struct isal_dict *dic
|
|||||||
* @returns COMP_OK,
|
* @returns COMP_OK,
|
||||||
* ISAL_INVALID_STATE or other (dictionary could not be reset)
|
* ISAL_INVALID_STATE or other (dictionary could not be reset)
|
||||||
*/
|
*/
|
||||||
int isal_deflate_reset_dict(struct isal_zstream *stream, struct isal_dict *dict_str);
|
int
|
||||||
|
isal_deflate_reset_dict(struct isal_zstream *stream, struct isal_dict *dict_str);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fast data (deflate) compression for storage applications.
|
* @brief Fast data (deflate) compression for storage applications.
|
||||||
@ -802,8 +819,8 @@ int isal_deflate_reset_dict(struct isal_zstream *stream, struct isal_dict *dict_
|
|||||||
* ISAL_INVALID_LEVEL (if an invalid compression level is selected),
|
* ISAL_INVALID_LEVEL (if an invalid compression level is selected),
|
||||||
* ISAL_INVALID_LEVEL_BUF (if the level buffer is not large enough).
|
* ISAL_INVALID_LEVEL_BUF (if the level buffer is not large enough).
|
||||||
*/
|
*/
|
||||||
int isal_deflate(struct isal_zstream *stream);
|
int
|
||||||
|
isal_deflate(struct isal_zstream *stream);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fast data (deflate) stateless compression for storage applications.
|
* @brief Fast data (deflate) stateless compression for storage applications.
|
||||||
@ -832,8 +849,8 @@ int isal_deflate(struct isal_zstream *stream);
|
|||||||
* ISAL_INVALID_LEVEL_BUF (if the level buffer is not large enough),
|
* ISAL_INVALID_LEVEL_BUF (if the level buffer is not large enough),
|
||||||
* STATELESS_OVERFLOW (if output buffer will not fit output).
|
* STATELESS_OVERFLOW (if output buffer will not fit output).
|
||||||
*/
|
*/
|
||||||
int isal_deflate_stateless(struct isal_zstream *stream);
|
int
|
||||||
|
isal_deflate_stateless(struct isal_zstream *stream);
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* Inflate functions */
|
/* Inflate functions */
|
||||||
@ -844,7 +861,8 @@ int isal_deflate_stateless(struct isal_zstream *stream);
|
|||||||
* @param state Structure holding state information on the compression streams.
|
* @param state Structure holding state information on the compression streams.
|
||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
void isal_inflate_init(struct inflate_state *state);
|
void
|
||||||
|
isal_inflate_init(struct inflate_state *state);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reinitialize decompression state data structure
|
* @brief Reinitialize decompression state data structure
|
||||||
@ -852,7 +870,8 @@ void isal_inflate_init(struct inflate_state *state);
|
|||||||
* @param state Structure holding state information on the compression streams.
|
* @param state Structure holding state information on the compression streams.
|
||||||
* @returns none
|
* @returns none
|
||||||
*/
|
*/
|
||||||
void isal_inflate_reset(struct inflate_state *state);
|
void
|
||||||
|
isal_inflate_reset(struct inflate_state *state);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set decompression dictionary to use
|
* @brief Set decompression dictionary to use
|
||||||
@ -867,7 +886,8 @@ void isal_inflate_reset(struct inflate_state *state);
|
|||||||
* @returns COMP_OK,
|
* @returns COMP_OK,
|
||||||
* ISAL_INVALID_STATE (dictionary could not be set)
|
* ISAL_INVALID_STATE (dictionary could not be set)
|
||||||
*/
|
*/
|
||||||
int isal_inflate_set_dict(struct inflate_state *state, uint8_t *dict, uint32_t dict_len);
|
int
|
||||||
|
isal_inflate_set_dict(struct inflate_state *state, uint8_t *dict, uint32_t dict_len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read and return gzip header information
|
* @brief Read and return gzip header information
|
||||||
@ -890,7 +910,8 @@ int isal_inflate_set_dict(struct inflate_state *state, uint8_t *dict, uint32_t d
|
|||||||
* ISAL_UNSUPPORTED_METHOD (deflate is not the compression method),
|
* ISAL_UNSUPPORTED_METHOD (deflate is not the compression method),
|
||||||
* ISAL_INCORRECT_CHECKSUM (gzip header checksum was incorrect)
|
* ISAL_INCORRECT_CHECKSUM (gzip header checksum was incorrect)
|
||||||
*/
|
*/
|
||||||
int isal_read_gzip_header (struct inflate_state *state, struct isal_gzip_header *gz_hdr);
|
int
|
||||||
|
isal_read_gzip_header(struct inflate_state *state, struct isal_gzip_header *gz_hdr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Read and return zlib header information
|
* @brief Read and return zlib header information
|
||||||
@ -905,7 +926,8 @@ int isal_read_gzip_header (struct inflate_state *state, struct isal_gzip_header
|
|||||||
* ISAL_UNSUPPORTED_METHOD (deflate is not the compression method),
|
* ISAL_UNSUPPORTED_METHOD (deflate is not the compression method),
|
||||||
* ISAL_INCORRECT_CHECKSUM (zlib header checksum was incorrect)
|
* ISAL_INCORRECT_CHECKSUM (zlib header checksum was incorrect)
|
||||||
*/
|
*/
|
||||||
int isal_read_zlib_header (struct inflate_state *state, struct isal_zlib_header *zlib_hdr);
|
int
|
||||||
|
isal_read_zlib_header(struct inflate_state *state, struct isal_zlib_header *zlib_hdr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fast data (deflate) decompression for storage applications.
|
* @brief Fast data (deflate) decompression for storage applications.
|
||||||
@ -953,7 +975,8 @@ int isal_read_zlib_header (struct inflate_state *state, struct isal_zlib_header
|
|||||||
* ISAL_INCORRECT_CHECKSUM.
|
* ISAL_INCORRECT_CHECKSUM.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int isal_inflate(struct inflate_state *state);
|
int
|
||||||
|
isal_inflate(struct inflate_state *state);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Fast data (deflate) stateless decompression for storage applications.
|
* @brief Fast data (deflate) stateless decompression for storage applications.
|
||||||
@ -975,7 +998,8 @@ int isal_inflate(struct inflate_state *state);
|
|||||||
* ISAL_UNSUPPORTED_METHOD,
|
* ISAL_UNSUPPORTED_METHOD,
|
||||||
* ISAL_INCORRECT_CHECKSUM.
|
* ISAL_INCORRECT_CHECKSUM.
|
||||||
*/
|
*/
|
||||||
int isal_inflate_stateless(struct inflate_state *state);
|
int
|
||||||
|
isal_inflate_stateless(struct inflate_state *state);
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* Other functions */
|
/* Other functions */
|
||||||
@ -992,7 +1016,8 @@ int isal_inflate_stateless(struct inflate_state *state);
|
|||||||
*
|
*
|
||||||
* @returns 32-bit Adler-32 checksum
|
* @returns 32-bit Adler-32 checksum
|
||||||
*/
|
*/
|
||||||
uint32_t isal_adler32(uint32_t init, const unsigned char *buf, uint64_t len);
|
uint32_t
|
||||||
|
isal_adler32(uint32_t init, const unsigned char *buf, uint64_t len);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,6 @@
|
|||||||
* Defines the interface for vector versions of common memory functions.
|
* Defines the interface for vector versions of common memory functions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _MEM_ROUTINES_H_
|
#ifndef _MEM_ROUTINES_H_
|
||||||
#define _MEM_ROUTINES_H_
|
#define _MEM_ROUTINES_H_
|
||||||
|
|
||||||
@ -54,11 +53,11 @@ extern "C" {
|
|||||||
* @returns 0 - region is all zeros
|
* @returns 0 - region is all zeros
|
||||||
* other - region has non zero bytes
|
* other - region has non zero bytes
|
||||||
*/
|
*/
|
||||||
int isal_zero_detect(void *mem, size_t len);
|
int
|
||||||
|
isal_zero_detect(void *mem, size_t len);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // _MEM_ROUTINES_H_
|
#endif // _MEM_ROUTINES_H_
|
||||||
|
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef _RAID_H_
|
#ifndef _RAID_H_
|
||||||
#define _RAID_H_
|
#define _RAID_H_
|
||||||
|
|
||||||
@ -61,8 +60,8 @@ extern "C" {
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int xor_gen(int vects, int len, void **array);
|
int
|
||||||
|
xor_gen(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks that array has XOR parity sum of 0 across all vectors, runs appropriate version.
|
* @brief Checks that array has XOR parity sum of 0 across all vectors, runs appropriate version.
|
||||||
@ -78,8 +77,8 @@ int xor_gen(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int xor_check(int vects, int len, void **array);
|
int
|
||||||
|
xor_check(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate P+Q parity vectors from N sources, runs appropriate version.
|
* @brief Generate P+Q parity vectors from N sources, runs appropriate version.
|
||||||
@ -98,11 +97,12 @@ int xor_check(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_gen(int vects, int len, void **array);
|
int
|
||||||
|
pq_gen(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks that array of N sources, P and Q are consistent across all vectors, runs appropriate version.
|
* @brief Checks that array of N sources, P and Q are consistent across all vectors, runs
|
||||||
|
* appropriate version.
|
||||||
*
|
*
|
||||||
* This function determines what instruction sets are enabled and
|
* This function determines what instruction sets are enabled and
|
||||||
* selects the appropriate version at runtime.
|
* selects the appropriate version at runtime.
|
||||||
@ -116,8 +116,8 @@ int pq_gen(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_check(int vects, int len, void **array);
|
int
|
||||||
|
pq_check(int vects, int len, void **array);
|
||||||
|
|
||||||
/* Arch specific versions */
|
/* Arch specific versions */
|
||||||
// x86 only
|
// x86 only
|
||||||
@ -136,8 +136,8 @@ int pq_check(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int xor_gen_sse(int vects, int len, void **array);
|
int
|
||||||
|
xor_gen_sse(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate XOR parity vector from N sources.
|
* @brief Generate XOR parity vector from N sources.
|
||||||
@ -152,8 +152,8 @@ int xor_gen_sse(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int xor_gen_avx(int vects, int len, void **array);
|
int
|
||||||
|
xor_gen_avx(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks that array has XOR parity sum of 0 across all vectors.
|
* @brief Checks that array has XOR parity sum of 0 across all vectors.
|
||||||
@ -167,8 +167,8 @@ int xor_gen_avx(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int xor_check_sse(int vects, int len, void **array);
|
int
|
||||||
|
xor_check_sse(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate P+Q parity vectors from N sources.
|
* @brief Generate P+Q parity vectors from N sources.
|
||||||
@ -185,8 +185,8 @@ int xor_check_sse(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_gen_sse(int vects, int len, void **array);
|
int
|
||||||
|
pq_gen_sse(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate P+Q parity vectors from N sources.
|
* @brief Generate P+Q parity vectors from N sources.
|
||||||
@ -203,8 +203,8 @@ int pq_gen_sse(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_gen_avx(int vects, int len, void **array);
|
int
|
||||||
|
pq_gen_avx(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate P+Q parity vectors from N sources.
|
* @brief Generate P+Q parity vectors from N sources.
|
||||||
@ -221,8 +221,8 @@ int pq_gen_avx(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_gen_avx2(int vects, int len, void **array);
|
int
|
||||||
|
pq_gen_avx2(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks that array of N sources, P and Q are consistent across all vectors.
|
* @brief Checks that array of N sources, P and Q are consistent across all vectors.
|
||||||
@ -236,7 +236,8 @@ int pq_gen_avx2(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_check_sse(int vects, int len, void **array);
|
int
|
||||||
|
pq_check_sse(int vects, int len, void **array);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -253,8 +254,8 @@ int pq_check_sse(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_gen_base(int vects, int len, void **array);
|
int
|
||||||
|
pq_gen_base(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate XOR parity vector from N sources, runs baseline version.
|
* @brief Generate XOR parity vector from N sources, runs baseline version.
|
||||||
@ -267,8 +268,8 @@ int pq_gen_base(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int xor_gen_base(int vects, int len, void **array);
|
int
|
||||||
|
xor_gen_base(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks that array has XOR parity sum of 0 across all vectors, runs baseline version.
|
* @brief Checks that array has XOR parity sum of 0 across all vectors, runs baseline version.
|
||||||
@ -281,11 +282,12 @@ int xor_gen_base(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int xor_check_base(int vects, int len, void **array);
|
int
|
||||||
|
xor_check_base(int vects, int len, void **array);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks that array of N sources, P and Q are consistent across all vectors, runs baseline version.
|
* @brief Checks that array of N sources, P and Q are consistent across all vectors, runs baseline
|
||||||
|
* version.
|
||||||
*
|
*
|
||||||
* @param vects Number of vectors in array including P&Q. Must be > 3.
|
* @param vects Number of vectors in array including P&Q. Must be > 3.
|
||||||
* @param len Length of each vector in bytes. Must be 16B aligned.
|
* @param len Length of each vector in bytes. Must be 16B aligned.
|
||||||
@ -296,7 +298,8 @@ int xor_check_base(int vects, int len, void **array);
|
|||||||
* @returns 0 pass, other fail
|
* @returns 0 pass, other fail
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int pq_check_base(int vects, int len, void **array);
|
int
|
||||||
|
pq_check_base(int vects, int len, void **array);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
104
include/test.h
104
include/test.h
@ -58,11 +58,13 @@ extern "C" {
|
|||||||
#else
|
#else
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
#define DECLARE_ALIGNED(decl, alignval) decl __attribute__((aligned(alignval)))
|
#define DECLARE_ALIGNED(decl, alignval) decl __attribute__((aligned(alignval)))
|
||||||
# define posix_memalign(p, algn, len) (NULL == (*((char**)(p)) = (void*) _aligned_malloc(len, algn)))
|
#define posix_memalign(p, algn, len) \
|
||||||
|
(NULL == (*((char **) (p)) = (void *) _aligned_malloc(len, algn)))
|
||||||
#define aligned_free(x) _aligned_free(x)
|
#define aligned_free(x) _aligned_free(x)
|
||||||
#else
|
#else
|
||||||
#define DECLARE_ALIGNED(decl, alignval) __declspec(align(alignval)) decl
|
#define DECLARE_ALIGNED(decl, alignval) __declspec(align(alignval)) decl
|
||||||
# define posix_memalign(p, algn, len) (NULL == (*((char**)(p)) = (void*) _aligned_malloc(len, algn)))
|
#define posix_memalign(p, algn, len) \
|
||||||
|
(NULL == (*((char **) (p)) = (void *) _aligned_malloc(len, algn)))
|
||||||
#define aligned_free(x) _aligned_free(x)
|
#define aligned_free(x) _aligned_free(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -70,7 +72,9 @@ extern "C" {
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define DEBUG_PRINT(x) printf x
|
#define DEBUG_PRINT(x) printf x
|
||||||
#else
|
#else
|
||||||
# define DEBUG_PRINT(x) do {} while (0)
|
#define DEBUG_PRINT(x) \
|
||||||
|
do { \
|
||||||
|
} while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Decide whether to use benchmark time as an approximation or a minimum. Fewer
|
/* Decide whether to use benchmark time as an approximation or a minimum. Fewer
|
||||||
@ -101,12 +105,16 @@ extern "C" {
|
|||||||
#define GHZ 1000000000
|
#define GHZ 1000000000
|
||||||
#define UNIT_SCALE (GHZ)
|
#define UNIT_SCALE (GHZ)
|
||||||
#define CALIBRATE_TIME (UNIT_SCALE / 2)
|
#define CALIBRATE_TIME (UNIT_SCALE / 2)
|
||||||
static inline long long get_time(void) {
|
static inline long long
|
||||||
|
get_time(void)
|
||||||
|
{
|
||||||
unsigned int dummy;
|
unsigned int dummy;
|
||||||
return __rdtscp(&dummy);
|
return __rdtscp(&dummy);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline long long get_res(void) {
|
static inline long long
|
||||||
|
get_res(void)
|
||||||
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -116,13 +124,17 @@ static inline long long get_res(void) {
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#define UNIT_SCALE get_res()
|
#define UNIT_SCALE get_res()
|
||||||
#define CALIBRATE_TIME (UNIT_SCALE / 4)
|
#define CALIBRATE_TIME (UNIT_SCALE / 4)
|
||||||
static inline long long get_time(void) {
|
static inline long long
|
||||||
|
get_time(void)
|
||||||
|
{
|
||||||
long long ret = 0;
|
long long ret = 0;
|
||||||
QueryPerformanceCounter(&ret);
|
QueryPerformanceCounter(&ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline long long get_res(void) {
|
static inline long long
|
||||||
|
get_res(void)
|
||||||
|
{
|
||||||
long long ret = 0;
|
long long ret = 0;
|
||||||
QueryPerformanceFrequency(&ret);
|
QueryPerformanceFrequency(&ret);
|
||||||
return ret;
|
return ret;
|
||||||
@ -137,7 +149,9 @@ static inline long long get_res(void) {
|
|||||||
#define CLOCK_ID CLOCK_MONOTONIC
|
#define CLOCK_ID CLOCK_MONOTONIC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline long long get_time(void) {
|
static inline long long
|
||||||
|
get_time(void)
|
||||||
|
{
|
||||||
struct timespec time;
|
struct timespec time;
|
||||||
long long nano_total;
|
long long nano_total;
|
||||||
clock_gettime(CLOCK_ID, &time);
|
clock_gettime(CLOCK_ID, &time);
|
||||||
@ -147,7 +161,9 @@ static inline long long get_time(void) {
|
|||||||
return nano_total;
|
return nano_total;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline long long get_res(void) {
|
static inline long long
|
||||||
|
get_res(void)
|
||||||
|
{
|
||||||
struct timespec time;
|
struct timespec time;
|
||||||
long long nano_total;
|
long long nano_total;
|
||||||
clock_getres(CLOCK_ID, &time);
|
clock_getres(CLOCK_ID, &time);
|
||||||
@ -165,42 +181,56 @@ struct perf {
|
|||||||
long long iterations;
|
long long iterations;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void perf_init(struct perf *p) {
|
static inline void
|
||||||
|
perf_init(struct perf *p)
|
||||||
|
{
|
||||||
p->start = 0;
|
p->start = 0;
|
||||||
p->stop = 0;
|
p->stop = 0;
|
||||||
p->run_total = 0;
|
p->run_total = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void perf_continue(struct perf *p) {
|
static inline void
|
||||||
|
perf_continue(struct perf *p)
|
||||||
|
{
|
||||||
p->start = get_time();
|
p->start = get_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void perf_pause(struct perf *p) {
|
static inline void
|
||||||
|
perf_pause(struct perf *p)
|
||||||
|
{
|
||||||
p->stop = get_time();
|
p->stop = get_time();
|
||||||
p->run_total = p->run_total + p->stop - p->start;
|
p->run_total = p->run_total + p->stop - p->start;
|
||||||
p->start = p->stop;
|
p->start = p->stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void perf_start(struct perf *p) {
|
static inline void
|
||||||
|
perf_start(struct perf *p)
|
||||||
|
{
|
||||||
perf_init(p);
|
perf_init(p);
|
||||||
perf_continue(p);
|
perf_continue(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void perf_stop(struct perf *p) {
|
static inline void
|
||||||
|
perf_stop(struct perf *p)
|
||||||
|
{
|
||||||
perf_pause(p);
|
perf_pause(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline double get_time_elapsed(struct perf *p) {
|
static inline double
|
||||||
|
get_time_elapsed(struct perf *p)
|
||||||
|
{
|
||||||
return 1.0 * p->run_total / UNIT_SCALE;
|
return 1.0 * p->run_total / UNIT_SCALE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline long long get_base_elapsed(struct perf *p) {
|
static inline long long
|
||||||
|
get_base_elapsed(struct perf *p)
|
||||||
|
{
|
||||||
return p->run_total;
|
return p->run_total;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long long estimate_perf_iterations(struct perf *p,
|
static inline unsigned long long
|
||||||
unsigned long long runs,
|
estimate_perf_iterations(struct perf *p, unsigned long long runs, unsigned long long total)
|
||||||
unsigned long long total) {
|
{
|
||||||
total = total * runs;
|
total = total * runs;
|
||||||
if (get_base_elapsed(p) > 0)
|
if (get_base_elapsed(p) > 0)
|
||||||
return (total + get_base_elapsed(p) - 1) / get_base_elapsed(p);
|
return (total + get_base_elapsed(p) - 1) / get_base_elapsed(p);
|
||||||
@ -208,15 +238,15 @@ static inline unsigned long long estimate_perf_iterations(struct perf *p,
|
|||||||
return (total + get_res() - 1) / get_res();
|
return (total + get_res() - 1) / get_res();
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CALIBRATE(PERF, FUNC_CALL) { \
|
#define CALIBRATE(PERF, FUNC_CALL) \
|
||||||
|
{ \
|
||||||
unsigned long long _i, _iter = 1; \
|
unsigned long long _i, _iter = 1; \
|
||||||
perf_start(PERF); \
|
perf_start(PERF); \
|
||||||
FUNC_CALL; \
|
FUNC_CALL; \
|
||||||
perf_pause(PERF); \
|
perf_pause(PERF); \
|
||||||
\
|
\
|
||||||
while (get_base_elapsed(PERF) < CALIBRATE_TIME) { \
|
while (get_base_elapsed(PERF) < CALIBRATE_TIME) { \
|
||||||
_iter = estimate_perf_iterations(PERF, _iter, \
|
_iter = estimate_perf_iterations(PERF, _iter, 2 * CALIBRATE_TIME); \
|
||||||
2 * CALIBRATE_TIME); \
|
|
||||||
perf_start(PERF); \
|
perf_start(PERF); \
|
||||||
for (_i = 0; _i < _iter; _i++) { \
|
for (_i = 0; _i < _iter; _i++) { \
|
||||||
FUNC_CALL; \
|
FUNC_CALL; \
|
||||||
@ -226,7 +256,8 @@ static inline unsigned long long estimate_perf_iterations(struct perf *p,
|
|||||||
(PERF)->iterations = _iter; \
|
(PERF)->iterations = _iter; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PERFORMANCE_TEST(PERF, RUN_TIME, FUNC_CALL) { \
|
#define PERFORMANCE_TEST(PERF, RUN_TIME, FUNC_CALL) \
|
||||||
|
{ \
|
||||||
unsigned long long _i, _iter = (PERF)->iterations; \
|
unsigned long long _i, _iter = (PERF)->iterations; \
|
||||||
unsigned long long _run_total = RUN_TIME; \
|
unsigned long long _run_total = RUN_TIME; \
|
||||||
_run_total *= UNIT_SCALE; \
|
_run_total *= UNIT_SCALE; \
|
||||||
@ -239,8 +270,7 @@ static inline unsigned long long estimate_perf_iterations(struct perf *p,
|
|||||||
perf_pause(PERF); \
|
perf_pause(PERF); \
|
||||||
(PERF)->iterations += _iter; \
|
(PERF)->iterations += _iter; \
|
||||||
\
|
\
|
||||||
if(get_base_elapsed(PERF) < _run_total && \
|
if (get_base_elapsed(PERF) < _run_total && BENCHMARK_TYPE == BENCHMARK_MIN_TIME) { \
|
||||||
BENCHMARK_TYPE == BENCHMARK_MIN_TIME) { \
|
|
||||||
_iter = estimate_perf_iterations(PERF, _iter, \
|
_iter = estimate_perf_iterations(PERF, _iter, \
|
||||||
_run_total - get_base_elapsed(PERF) + \
|
_run_total - get_base_elapsed(PERF) + \
|
||||||
(UNIT_SCALE / 16)); \
|
(UNIT_SCALE / 16)); \
|
||||||
@ -253,7 +283,8 @@ static inline unsigned long long estimate_perf_iterations(struct perf *p,
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BENCHMARK(PERF, RUN_TIME, FUNC_CALL) { \
|
#define BENCHMARK(PERF, RUN_TIME, FUNC_CALL) \
|
||||||
|
{ \
|
||||||
if ((RUN_TIME) > 0) { \
|
if ((RUN_TIME) > 0) { \
|
||||||
CALIBRATE(PERF, FUNC_CALL); \
|
CALIBRATE(PERF, FUNC_CALL); \
|
||||||
PERFORMANCE_TEST(PERF, RUN_TIME, FUNC_CALL); \
|
PERFORMANCE_TEST(PERF, RUN_TIME, FUNC_CALL); \
|
||||||
@ -267,33 +298,38 @@ static inline unsigned long long estimate_perf_iterations(struct perf *p,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_CYCLES
|
#ifdef USE_CYCLES
|
||||||
static inline void perf_print(struct perf p, long long unit_count) {
|
static inline void
|
||||||
|
perf_print(struct perf p, long long unit_count)
|
||||||
|
{
|
||||||
long long total_units = p.iterations * unit_count;
|
long long total_units = p.iterations * unit_count;
|
||||||
|
|
||||||
printf("runtime = %10lld ticks", get_base_elapsed(&p));
|
printf("runtime = %10lld ticks", get_base_elapsed(&p));
|
||||||
if (total_units != 0) {
|
if (total_units != 0) {
|
||||||
printf(", bandwidth %lld MB in %.4f GC = %.2f ticks/byte",
|
printf(", bandwidth %lld MB in %.4f GC = %.2f ticks/byte", total_units / (1000000),
|
||||||
total_units / (1000000), get_time_elapsed(&p),
|
get_time_elapsed(&p), get_base_elapsed(&p) / (double) total_units);
|
||||||
get_base_elapsed(&p) / (double)total_units);
|
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static inline void perf_print(struct perf p, double unit_count) {
|
static inline void
|
||||||
|
perf_print(struct perf p, double unit_count)
|
||||||
|
{
|
||||||
long long total_units = p.iterations * unit_count;
|
long long total_units = p.iterations * unit_count;
|
||||||
long long usecs = (long long) (get_time_elapsed(&p) * 1000000);
|
long long usecs = (long long) (get_time_elapsed(&p) * 1000000);
|
||||||
|
|
||||||
printf("runtime = %10lld usecs", usecs);
|
printf("runtime = %10lld usecs", usecs);
|
||||||
if (total_units != 0) {
|
if (total_units != 0) {
|
||||||
printf(", bandwidth %lld MB in %.4f sec = %.2f MB/s",
|
printf(", bandwidth %lld MB in %.4f sec = %.2f MB/s", total_units / (1000000),
|
||||||
total_units / (1000000), get_time_elapsed(&p),
|
get_time_elapsed(&p),
|
||||||
((double) total_units) / (1000000 * get_time_elapsed(&p)));
|
((double) total_units) / (1000000 * get_time_elapsed(&p)));
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline uint64_t get_filesize(FILE * fp) {
|
static inline uint64_t
|
||||||
|
get_filesize(FILE *fp)
|
||||||
|
{
|
||||||
uint64_t file_size;
|
uint64_t file_size;
|
||||||
fpos_t pos, pos_curr;
|
fpos_t pos, pos_curr;
|
||||||
|
|
||||||
|
@ -84,58 +84,68 @@
|
|||||||
#define from_le64(x) isal_bswap64(x)
|
#define from_le64(x) isal_bswap64(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline uint16_t load_native_u16(uint8_t * buf)
|
static inline uint16_t
|
||||||
|
load_native_u16(uint8_t *buf)
|
||||||
{
|
{
|
||||||
uint16_t ret;
|
uint16_t ret;
|
||||||
memcpy(&ret, buf, sizeof(ret));
|
memcpy(&ret, buf, sizeof(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint16_t load_le_u16(uint8_t * buf)
|
static inline uint16_t
|
||||||
|
load_le_u16(uint8_t *buf)
|
||||||
{
|
{
|
||||||
return from_le16(load_native_u16(buf));
|
return from_le16(load_native_u16(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint16_t load_be_u16(uint8_t * buf)
|
static inline uint16_t
|
||||||
|
load_be_u16(uint8_t *buf)
|
||||||
{
|
{
|
||||||
return from_be16(load_native_u16(buf));
|
return from_be16(load_native_u16(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t load_native_u32(uint8_t * buf)
|
static inline uint32_t
|
||||||
|
load_native_u32(uint8_t *buf)
|
||||||
{
|
{
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
memcpy(&ret, buf, sizeof(ret));
|
memcpy(&ret, buf, sizeof(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t load_le_u32(uint8_t * buf)
|
static inline uint32_t
|
||||||
|
load_le_u32(uint8_t *buf)
|
||||||
{
|
{
|
||||||
return from_le32(load_native_u32(buf));
|
return from_le32(load_native_u32(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t load_be_u32(uint8_t * buf)
|
static inline uint32_t
|
||||||
|
load_be_u32(uint8_t *buf)
|
||||||
{
|
{
|
||||||
return from_be32(load_native_u32(buf));
|
return from_be32(load_native_u32(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t load_native_u64(uint8_t * buf)
|
static inline uint64_t
|
||||||
|
load_native_u64(uint8_t *buf)
|
||||||
{
|
{
|
||||||
uint64_t ret;
|
uint64_t ret;
|
||||||
memcpy(&ret, buf, sizeof(ret));
|
memcpy(&ret, buf, sizeof(ret));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t load_le_u64(uint8_t * buf)
|
static inline uint64_t
|
||||||
|
load_le_u64(uint8_t *buf)
|
||||||
{
|
{
|
||||||
return from_le64(load_native_u64(buf));
|
return from_le64(load_native_u64(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint64_t load_be_u64(uint8_t * buf)
|
static inline uint64_t
|
||||||
|
load_be_u64(uint8_t *buf)
|
||||||
{
|
{
|
||||||
return from_be64(load_native_u64(buf));
|
return from_be64(load_native_u64(buf));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uintmax_t load_le_umax(uint8_t * buf)
|
static inline uintmax_t
|
||||||
|
load_le_umax(uint8_t *buf)
|
||||||
{
|
{
|
||||||
switch (sizeof(uintmax_t)) {
|
switch (sizeof(uintmax_t)) {
|
||||||
case sizeof(uint32_t):
|
case sizeof(uint32_t):
|
||||||
@ -147,22 +157,26 @@ static inline uintmax_t load_le_umax(uint8_t * buf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_native_u16(uint8_t * buf, uint16_t val)
|
static inline void
|
||||||
|
store_native_u16(uint8_t *buf, uint16_t val)
|
||||||
{
|
{
|
||||||
memcpy(buf, &val, sizeof(val));
|
memcpy(buf, &val, sizeof(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_le_u16(uint8_t * buf, uint16_t val)
|
static inline void
|
||||||
|
store_le_u16(uint8_t *buf, uint16_t val)
|
||||||
{
|
{
|
||||||
store_native_u16(buf, to_le16(val));
|
store_native_u16(buf, to_le16(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_be_u16(uint8_t * buf, uint16_t val)
|
static inline void
|
||||||
|
store_be_u16(uint8_t *buf, uint16_t val)
|
||||||
{
|
{
|
||||||
store_native_u16(buf, to_be16(val));
|
store_native_u16(buf, to_be16(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_native_u16_to_u64(uint64_t * buf, uint16_t val)
|
static inline void
|
||||||
|
store_native_u16_to_u64(uint64_t *buf, uint16_t val)
|
||||||
{
|
{
|
||||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||||
store_native_u16((uint8_t *) buf, val);
|
store_native_u16((uint8_t *) buf, val);
|
||||||
@ -171,32 +185,38 @@ static inline void store_native_u16_to_u64(uint64_t * buf, uint16_t val)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_native_u32(uint8_t * buf, uint32_t val)
|
static inline void
|
||||||
|
store_native_u32(uint8_t *buf, uint32_t val)
|
||||||
{
|
{
|
||||||
memcpy(buf, &val, sizeof(val));
|
memcpy(buf, &val, sizeof(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_le_u32(uint8_t * buf, uint32_t val)
|
static inline void
|
||||||
|
store_le_u32(uint8_t *buf, uint32_t val)
|
||||||
{
|
{
|
||||||
store_native_u32(buf, to_le32(val));
|
store_native_u32(buf, to_le32(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_be_u32(uint8_t * buf, uint32_t val)
|
static inline void
|
||||||
|
store_be_u32(uint8_t *buf, uint32_t val)
|
||||||
{
|
{
|
||||||
store_native_u32(buf, to_be32(val));
|
store_native_u32(buf, to_be32(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_native_u64(uint8_t * buf, uint64_t val)
|
static inline void
|
||||||
|
store_native_u64(uint8_t *buf, uint64_t val)
|
||||||
{
|
{
|
||||||
memcpy(buf, &val, sizeof(val));
|
memcpy(buf, &val, sizeof(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_le_u64(uint8_t * buf, uint64_t val)
|
static inline void
|
||||||
|
store_le_u64(uint8_t *buf, uint64_t val)
|
||||||
{
|
{
|
||||||
store_native_u64(buf, to_le64(val));
|
store_native_u64(buf, to_le64(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void store_be_u64(uint8_t * buf, uint64_t val)
|
static inline void
|
||||||
|
store_be_u64(uint8_t *buf, uint64_t val)
|
||||||
{
|
{
|
||||||
store_native_u64(buf, to_be64(val));
|
store_native_u64(buf, to_be64(val));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user