diff options
author | Maxim Yurchuk <maxim-yurchuk@ydb.tech> | 2024-10-18 20:31:38 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-18 20:31:38 +0300 |
commit | 2a74bac2d2d3bccb4e10120f1ead805640ec9dd0 (patch) | |
tree | 047e4818ced5aaf73f58517629e5260b5291f9f0 /contrib/libs/isa-l/erasure_code/ec_base.c | |
parent | 2d9656823e9521d8c29ea4c9a1d0eab78391abfc (diff) | |
parent | 3d834a1923bbf9403cd4a448e7f32b670aa4124f (diff) | |
download | ydb-2a74bac2d2d3bccb4e10120f1ead805640ec9dd0.tar.gz |
Merge pull request #10502 from ydb-platform/mergelibs-241016-1210
Library import 241016-1210
Diffstat (limited to 'contrib/libs/isa-l/erasure_code/ec_base.c')
-rw-r--r-- | contrib/libs/isa-l/erasure_code/ec_base.c | 46 |
1 files changed, 12 insertions, 34 deletions
diff --git a/contrib/libs/isa-l/erasure_code/ec_base.c b/contrib/libs/isa-l/erasure_code/ec_base.c index 9a8fbc759e..c076b517bf 100644 --- a/contrib/libs/isa-l/erasure_code/ec_base.c +++ b/contrib/libs/isa-l/erasure_code/ec_base.c @@ -29,10 +29,12 @@ #include <limits.h> #include <string.h> // for memset +#include <stdint.h> + #include "erasure_code.h" #include "ec_base.h" // for GF tables -void ec_init_tables(int k, int rows, unsigned char *a, unsigned char *g_tbls) +void ec_init_tables_base(int k, int rows, unsigned char *a, unsigned char *g_tbls) { int i, j; @@ -171,7 +173,7 @@ void gf_vect_mul_init(unsigned char c, unsigned char *tbl) unsigned char c4 = (c2 << 1) ^ ((c2 & 0x80) ? 0x1d : 0); //Mult by GF{2} unsigned char c8 = (c4 << 1) ^ ((c4 & 0x80) ? 0x1d : 0); //Mult by GF{2} -#if __WORDSIZE == 64 || _WIN64 || __x86_64__ +#if (__WORDSIZE == 64 || _WIN64 || __x86_64__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) unsigned long long v1, v2, v4, v8, *t; unsigned long long v10, v20, v40, v80; unsigned char c17, c18, c20, c24; @@ -331,41 +333,17 @@ void ec_encode_data_update_base(int len, int k, int rows, int vec_i, unsigned ch } } -void gf_vect_mul_base(int len, unsigned char *a, unsigned char *src, unsigned char *dest) +int gf_vect_mul_base(int len, unsigned char *a, unsigned char *src, unsigned char *dest) { //2nd element of table array is ref value used to fill it in unsigned char c = a[1]; + + // Len must be aligned to 32B + if ((len % 32) != 0) { + return -1; + } + while (len-- > 0) *dest++ = gf_mul_erasure(c, *src++); + return 0; } - -struct slver { - unsigned short snum; - unsigned char ver; - unsigned char core; -}; - -// Version info -struct slver gf_vect_mul_init_slver_00020035; -struct slver gf_vect_mul_init_slver = { 0x0035, 0x02, 0x00 }; - -struct slver ec_encode_data_base_slver_00010135; -struct slver ec_encode_data_base_slver = { 0x0135, 0x01, 0x00 }; - -struct slver gf_vect_mul_base_slver_00010136; -struct slver gf_vect_mul_base_slver = { 0x0136, 0x01, 0x00 }; - -struct slver gf_vect_dot_prod_base_slver_00010137; -struct slver gf_vect_dot_prod_base_slver = { 0x0137, 0x01, 0x00 }; - -struct slver gf_mul_slver_00000214; -struct slver gf_mul_slver = { 0x0214, 0x00, 0x00 }; - -struct slver gf_invert_matrix_slver_00000215; -struct slver gf_invert_matrix_slver = { 0x0215, 0x00, 0x00 }; - -struct slver gf_gen_rs_matrix_slver_00000216; -struct slver gf_gen_rs_matrix_slver = { 0x0216, 0x00, 0x00 }; - -struct slver gf_gen_cauchy1_matrix_slver_00000217; -struct slver gf_gen_cauchy1_matrix_slver = { 0x0217, 0x00, 0x00 }; |