mirror of
https://github.com/intel/isa-l.git
synced 2025-10-29 12:18:00 +01:00
erasure_code: add AVX2 3vect mad with GFNI implementation
Signed-off-by: Marcel Cornu <marcel.d.cornu@intel.com>
This commit is contained in:
committed by
Pablo de Lara
parent
a139dd7302
commit
22b7f33d68
@@ -277,6 +277,8 @@ extern void gf_vect_mad_avx2_gfni(int len, int vec, int vec_i, unsigned char *gf
|
||||
unsigned char *src, unsigned char *dest);
|
||||
extern void gf_2vect_mad_avx2_gfni(int len, int vec, int vec_i, unsigned char *gftbls,
|
||||
unsigned char *src, unsigned char **dest);
|
||||
extern void gf_3vect_mad_avx2_gfni(int len, int vec, int vec_i, unsigned char *gftbls,
|
||||
unsigned char *src, unsigned char **dest);
|
||||
|
||||
void ec_init_tables_gfni(int k, int rows, unsigned char *a, unsigned char *g_tbls)
|
||||
{
|
||||
@@ -380,17 +382,22 @@ void ec_encode_data_update_avx2_gfni(int len, int k, int rows, int vec_i,
|
||||
unsigned char *g_tbls, unsigned char *data,
|
||||
unsigned char **coding)
|
||||
{
|
||||
while (rows >= 2) {
|
||||
gf_2vect_mad_avx2_gfni(len, k, vec_i, g_tbls, data, coding);
|
||||
g_tbls += 2 * k * 8;
|
||||
coding += 2;
|
||||
rows -= 2;
|
||||
while (rows >= 3) {
|
||||
gf_3vect_mad_avx2_gfni(len, k, vec_i, g_tbls, data, coding);
|
||||
g_tbls += 3 * k * 8;
|
||||
coding += 3;
|
||||
rows -= 3;
|
||||
}
|
||||
while (rows) {
|
||||
switch (rows) {
|
||||
case 2:
|
||||
gf_2vect_mad_avx2_gfni(len, k, vec_i, g_tbls, data, coding);
|
||||
break;
|
||||
case 1:
|
||||
gf_vect_mad_avx2_gfni(len, k, vec_i, g_tbls, data, *coding);
|
||||
g_tbls += k * 8;
|
||||
coding++;
|
||||
rows--;
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user