[Accel-config] [PATCH RESEND v1 01/14] accel-config/test: Add algorithm to do Zcompress32
Li Zhang <li4.zhang at intel.com> Tue, 07 Jun 2022 10:58:21 +0800
| Newsgroups | dev.linux.lists.accel-config |
|---|---|
| Message-ID | <[email protected]> |
Add an algorithm to implement Zcompress32, it is used to generate
a reference data for comparing with the result from IAA hardware.
Signed-off-by: Li Zhang <li4.zhang(a)intel.com>
---
test/algorithms/iaa_zcompress.c | 45 +++++++++++++++++++++++++++++++++
test/algorithms/iaa_zcompress.h | 1 +
2 files changed, 46 insertions(+)
diff --git a/test/algorithms/iaa_zcompress.c b/test/algorithms/iaa_zcompress.c
index b58a6e6..1126466 100644
--- a/test/algorithms/iaa_zcompress.c
+++ b/test/algorithms/iaa_zcompress.c
@@ -86,6 +86,51 @@ int iaa_do_zcompress16(void *dst, void *src, int src_len)
return dst_len;
}
+int iaa_do_zcompress32(void *dst, void *src, int src_len)
+{
+ int i, j, dst_len = 0;
+ uint32_t *tags;
+ int num_blocks = src_len / IAA_ZCOMPRESS_BLOCK_SIZE;
+ int remainder_bytes = src_len % IAA_ZCOMPRESS_BLOCK_SIZE;
+ uint32_t *src_ptr = (uint32_t *)src;
+ uint32_t *dst_ptr = (uint32_t *)dst;
+
+ for (i = 0; i < num_blocks; i++) {
+ tags = dst_ptr;
+ dst_ptr += 1;
+ dst_len += 4;
+ for (j = 0; j < (IAA_ZCOMPRESS_BLOCK_SIZE / 4); j++) {
+ if (*src_ptr != 0) {
+ *tags |= ((uint32_t)1 << j);
+ *dst_ptr++ = *src_ptr;
+ dst_len += 4;
+ }
+
+ src_ptr++;
+ }
+ }
+
+ if (remainder_bytes) {
+ tags = dst_ptr;
+ *tags = 0xFFFFFFFF;
+ dst_ptr += 1;
+ dst_len += 4;
+
+ for (i = 0; i < (remainder_bytes / 4); i++) {
+ if (*src_ptr == 0) {
+ *tags &= ~((uint32_t)1 << i);
+ } else {
+ *dst_ptr++ = *src_ptr;
+ dst_len += 4;
+ }
+
+ src_ptr++;
+ }
+ }
+
+ return dst_len;
+}
+
int iaa_do_zdecompress16(void *dst, void *src, int src_len)
{
int i, j, dst_len = 0;
diff --git a/test/algorithms/iaa_zcompress.h b/test/algorithms/iaa_zcompress.h
index eb47278..a2b37e9 100644
--- a/test/algorithms/iaa_zcompress.h
+++ b/test/algorithms/iaa_zcompress.h
@@ -8,5 +8,6 @@
void iaa_zcompress16_randomize_input(void *dst, uint64_t pattern, int len);
int iaa_do_zcompress16(void *dst, void *src, int src_len);
int iaa_do_zdecompress16(void *dst, void *src, int src_len);
+int iaa_do_zcompress32(void *dst, void *src, int src_len);
#endif
--
2.25.1