remove race condition on norm128 global

This commit is contained in:
Laurent THOMAS
2023-09-13 17:20:04 +02:00
committed by Robert Schmidt
parent a7bc282302
commit a62641f9f3
8 changed files with 1050 additions and 1010 deletions
@@ -24,8 +24,8 @@
#include <stdint.h>
#include "../../nrLDPCdecoder_defs.h"
#define AVOID_MM256_SIGN 1
#define DROP_MAXLLR 1
//#define AVOID_MM256_SIGN 1
//#define DROP_MAXLLR 1
void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
{
const char *ratestr[3]={"13","23","89"};
@@ -214,7 +214,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -289,7 +289,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -364,7 +364,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -442,7 +442,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -521,7 +521,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -600,7 +600,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -680,7 +680,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -714,7 +714,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
{0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,816,864}, {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,864},
{0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816}};
if (lut_numCnInCnGroups[8] > 0)
{
// Number of groups of 32 CNs for parallel processing
@@ -763,7 +763,7 @@ void nrLDPC_cnProc_BG1_generator_AVX2(const char* dir, int R)
// sgn = simde_mm256_sign_epi8(sgn, ymm0);
#ifndef AVOID_MM256_SIGN
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
fprintf(fd," sgn = simde_mm256_sign_epi8(sgn, ymm0);\n");
#else
fprintf(fd," sgn = simde_mm256_xor_si256(sgn, ymm0);\n");
#endif
@@ -43,7 +43,7 @@ void nrLDPC_cnProc_BG2_generator_AVX512(const char *dir, int R)
abort();
}
fprintf(fd, "#define conditional_negate(a,b,z) simde_mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a)\n");
//fprintf(fd, "#define conditional_negate(a,b,z) simde_mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a)\n");
fprintf(fd, "static inline void nrLDPC_cnProc_BG2_R%s_AVX512(int8_t* cnProcBuf, int8_t* cnProcBufRes, uint16_t Z) {\n", ratestr[R]);
const uint8_t *lut_numCnInCnGroups;