diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c index ffcad00af4..3379742b5b 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c @@ -1,4 +1,5 @@ + /* * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more * contributor license agreements. See the NOTICE file distributed with @@ -328,17 +329,17 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { case 13: { - nrLDPC_bnProcPc_BG1_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 23: { - nrLDPC_bnProcPc_BG1_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 89: { - nrLDPC_bnProcPc_BG1_R89_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R89_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } } @@ -349,20 +350,20 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { case 15: { - nrLDPC_bnProcPc_BG2_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 13: { - nrLDPC_bnProcPc_BG2_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 23: { - nrLDPC_bnProcPc_BG2_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } @@ -614,17 +615,17 @@ if (BG==1) { case 13: { - nrLDPC_bnProcPc_BG1_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 23: { - nrLDPC_bnProcPc_BG1_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 89: { - nrLDPC_bnProcPc_BG1_R89_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R89_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } } @@ -635,20 +636,20 @@ if (BG==1) { case 15: { - nrLDPC_bnProcPc_BG2_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 13: { - nrLDPC_bnProcPc_BG2_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 23: { - nrLDPC_bnProcPc_BG2_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } @@ -723,7 +724,7 @@ if (BG==1) #ifdef __AVX512BW__ nrLDPC_bnProc_BG2_R13_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z); #else - nrLDPC_bnProc_BG2_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z); + nrLDPC_bnProc_BG2_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,+p_procBuf->llrRes, Z); #endif break; } @@ -906,7 +907,7 @@ if (BG==1) #ifdef NR_LDPC_PROFILER_DETAIL start_meas(&p_profiler->bnProcPc); #endif - //nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + // nrLDPC_bnProcPc(p_lut, p_procBuf, Z); if (BG==1) { @@ -914,17 +915,17 @@ if (BG==1) { case 13: { - nrLDPC_bnProcPc_BG1_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 23: { - nrLDPC_bnProcPc_BG1_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 89: { - nrLDPC_bnProcPc_BG1_R89_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG1_R89_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } } @@ -935,20 +936,20 @@ if (BG==1) { case 15: { - nrLDPC_bnProcPc_BG2_R15_AVX2(p_procBuf->bnProcBuf, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 13: { - nrLDPC_bnProcPc_BG2_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } case 23: { - nrLDPC_bnProcPc_BG2_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); + nrLDPC_bnProcPc_BG2_R23_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes,p_procBuf->llrRes, p_procBuf->llrProcBuf, Z); break; } @@ -1136,3 +1137,4 @@ if (BG==1) + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c index fd01558049..3207a7a308 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c @@ -1,6 +1,7 @@ + #include #include #include "../../nrLDPCdecoder_defs.h" @@ -24,7 +25,7 @@ void nrLDPC_bnProcPc_BG1_generator_AVX2(int R) // fprintf(fd,"#include \n"); // fprintf(fd,"#include \n"); - fprintf(fd,"static inline void nrLDPC_bnProcPc_BG1_R%s_AVX2(int8_t* bnProcBuf,int8_t* llrRes , int8_t* llrProcBuf, uint16_t Z ) {\n",ratestr[R]); + fprintf(fd,"static inline void nrLDPC_bnProcPc_BG1_R%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes,int8_t* llrRes , int8_t* llrProcBuf, uint16_t Z ) {\n",ratestr[R]); const uint8_t* lut_numBnInBnGroups; const uint32_t* lut_startAddrBnGroups; const uint16_t* lut_startAddrBnGroupsLlr; @@ -64,16 +65,18 @@ void nrLDPC_bnProcPc_BG1_generator_AVX2(int R) fprintf(fd," __m128i* p_bnProcBuf; \n"); fprintf(fd," __m128i* p_llrProcBuf;\n"); fprintf(fd," __m256i* p_llrRes; \n"); + // fprintf(fd," __m256i* p_bnProcBufRes; \n"); +// fprintf(fd," __m256i* p_llrProcBuf256; \n"); fprintf(fd," uint32_t M ;\n"); -fprintf(fd, "// Process group with 1 CNs \n"); + fprintf(fd, "// Process group with 1 CNs \n"); - - // Process group with 2 CNs /* - if (lut_numBnInBnGroups[0] > 0) - { + // Process group with 1 CNs + + // if (lut_numBnInBnGroups[0] > 0) + // { // If elements in group move to next address // idxBnGroup++; @@ -81,49 +84,44 @@ fprintf(fd, "// Process group with 1 CNs \n"); fprintf(fd," M = (%d*Z + 31)>>5;\n",lut_numBnInBnGroups[0] ); // Set the offset to each CN within a group in terms of 16 Byte - cnOffsetInGroup = (lut_numBnInBnGroups[0]*NR_LDPC_ZMAX)>>4; + // cnOffsetInGroup = (lut_numBnInBnGroups[0]*NR_LDPC_ZMAX)>>4; // Set pointers to start of group 2 fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + // fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // fprintf(fd," p_llrProcBuf256 = (__m256i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); // Loop over BNs fprintf(fd," for (int i=0,j=0;i>5 ); fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -516,7 +514,7 @@ fprintf(fd, "// Process group with 8 CNs \n"); //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -572,7 +570,7 @@ fprintf(fd, "// Process group with 9 CNs \n"); // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -628,7 +626,7 @@ fprintf(fd, "// Process group with 10 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -686,7 +684,7 @@ fprintf(fd, "// Process group with 11 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } // ===================================================================== @@ -741,7 +739,7 @@ fprintf(fd, "// Process group with 12 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -797,7 +795,7 @@ fprintf(fd, "// Process group with 13 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -854,7 +852,7 @@ fprintf(fd, "// Process group with 14 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -910,7 +908,7 @@ fprintf(fd, "// Process group with 15 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -967,7 +965,7 @@ fprintf(fd, "// Process group with 16 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1023,7 +1021,7 @@ fprintf(fd, "// Process group with 17 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1079,7 +1077,7 @@ fprintf(fd, "// Process group with 18 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1134,7 +1132,7 @@ fprintf(fd, "// Process group with 19 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1190,7 +1188,7 @@ fprintf(fd, "// Process group with 20 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1250,7 +1248,7 @@ fprintf(fd, "// Process group with 21 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } // ===================================================================== @@ -1305,7 +1303,7 @@ fprintf(fd, "// Process group with 22 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1347,7 +1345,7 @@ fprintf(fd, "// Process group with <23 CNs \n"); fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); - } + } // Add LLR from receiver input fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); @@ -1361,7 +1359,7 @@ fprintf(fd, "// Process group with <23 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1418,7 +1416,7 @@ fprintf(fd, "// Process group with 24 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1474,7 +1472,7 @@ fprintf(fd, "// Process group with 25 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1531,7 +1529,7 @@ fprintf(fd, "// Process group with 26 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1587,7 +1585,7 @@ fprintf(fd, "// Process group with 27 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1643,7 +1641,7 @@ fprintf(fd, "// Process group with 28 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1698,7 +1696,7 @@ fprintf(fd, "// Process group with 29 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1754,7 +1752,7 @@ fprintf(fd, "// Process group with 30 CNs \n"); // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] fprintf(fd," p_llrRes[i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); - + fprintf(fd,"}\n"); } @@ -1767,3 +1765,4 @@ fprintf(fd, "// Process group with 30 CNs \n"); + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.o b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.o deleted file mode 100644 index 8caf4b85a3..0000000000 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.o and /dev/null differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c index a6662ee331..87260e18fa 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c @@ -1,7 +1,3 @@ - - - - #include #include #include "../../nrLDPCdecoder_defs.h" @@ -25,7 +21,7 @@ void nrLDPC_bnProcPc_BG2_generator_AVX2(int R) // fprintf(fd,"#include \n"); //fprintf(fd,"#include \n"); - fprintf(fd,"static inline void nrLDPC_bnProcPc_BG2_R%s_AVX2(int8_t* bnProcBuf,int8_t* llrRes , int8_t* llrProcBuf, uint16_t Z ) {\n",ratestr[R]); + fprintf(fd,"static inline void nrLDPC_bnProcPc_BG2_R%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes,int8_t* llrRes , int8_t* llrProcBuf, uint16_t Z ) {\n",ratestr[R]); const uint8_t* lut_numBnInBnGroups; const uint32_t* lut_startAddrBnGroups; const uint16_t* lut_startAddrBnGroupsLlr; @@ -51,10 +47,9 @@ void nrLDPC_bnProcPc_BG2_generator_AVX2(int R) } else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} - // Number of BNs in Groups -// uint32_t M; - //uint32_t M32rem; - //uint32_t i,j; + + + uint32_t k; // Offset to each bit within a group in terms of 32 Byte uint32_t cnOffsetInGroup; @@ -66,16 +61,18 @@ void nrLDPC_bnProcPc_BG2_generator_AVX2(int R) fprintf(fd," __m128i* p_bnProcBuf; \n"); fprintf(fd," __m128i* p_llrProcBuf;\n"); fprintf(fd," __m256i* p_llrRes; \n"); + // fprintf(fd," __m256i* p_bnProcBufRes; \n"); + // fprintf(fd," __m256i* p_llrProcBuf256; \n"); fprintf(fd," uint32_t M ;\n"); -fprintf(fd, "// Process group with 1 CNs \n"); + fprintf(fd, "// Process group with 1 CNs \n"); +/* + // Process group with 1 CNs - // Process group with 2 CNs - - if (lut_numBnInBnGroups[0] > 0) - { + // if (lut_numBnInBnGroups[0] > 0) + // { // If elements in group move to next address // idxBnGroup++; @@ -83,36 +80,30 @@ fprintf(fd, "// Process group with 1 CNs \n"); fprintf(fd," M = (%d*Z + 31)>>5;\n",lut_numBnInBnGroups[0] ); // Set the offset to each CN within a group in terms of 16 Byte - cnOffsetInGroup = (lut_numBnInBnGroups[0]*NR_LDPC_ZMAX)>>4; + // cnOffsetInGroup = (lut_numBnInBnGroups[0]*NR_LDPC_ZMAX)>>4; // Set pointers to start of group 2 fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrProcBuf256 = (__m256i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); // Loop over BNs fprintf(fd," for (int i=0,j=0;i #include #include "../../nrLDPCdecoder_defs.h" #include "../../nrLDPC_types.h" -//#include "../../nrLDPC_bnProc.h" -//#include "../../nrLDPC_cnProc.h" -//#include "../../nrLDPC_init.h" void nrLDPC_bnProc_BG1_generator_AVX2(int R) @@ -62,14 +58,7 @@ void nrLDPC_bnProc_BG1_generator_AVX2(int R) // Offset to each bit within a group in terms of 32 Byte uint32_t cnOffsetInGroup; uint8_t idxBnGroup = 0; - - - - fprintf(fd," __m256i* p_bnProcBuf; \n"); - fprintf(fd," __m256i* p_bnProcBufRes; \n"); - fprintf(fd," __m256i* p_llrRes; \n"); - fprintf(fd," __m256i* p_res; \n"); - fprintf(fd," uint32_t M, i; \n"); + fprintf(fd," uint32_t M, i; \n"); @@ -79,9 +68,6 @@ void nrLDPC_bnProc_BG1_generator_AVX2(int R) // ===================================================================== - - // ===================================================================== - fprintf(fd, "// Process group with 2 CNs \n"); if (lut_numBnInBnGroups[1] > 0) @@ -97,18 +83,14 @@ fprintf(fd, "// Process group with 2 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<2; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -137,17 +119,16 @@ fprintf(fd, "// Process group with 3 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + //fprintf(fd," ((__m256i*) bnProcBuf) = ((__m256i*) &bnProcBuf) [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + for (k=0; k<3; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); } @@ -174,17 +155,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<4; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup),(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), ((lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup)); fprintf(fd,"}\n"); } @@ -210,18 +189,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<5; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -249,18 +225,15 @@ fprintf(fd, "// Process group with 6 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<6; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -287,18 +260,15 @@ fprintf(fd, "// Process group with 7 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<7; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -325,18 +295,15 @@ fprintf(fd, "// Process group with 8 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<8; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -362,18 +329,15 @@ fprintf(fd, "// Process group with 9 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<9; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -399,18 +363,15 @@ fprintf(fd, "// Process group with 10 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<10; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -435,18 +396,15 @@ fprintf(fd, "// Process group with 11 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<11; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -471,18 +429,15 @@ fprintf(fd, "// Process group with 12 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<12; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -509,18 +464,15 @@ fprintf(fd, "// Process group with 13 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<13; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -548,18 +500,15 @@ fprintf(fd, "// Process group with 14 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<14; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -586,18 +535,15 @@ fprintf(fd, "// Process group with 15 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<15; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -625,18 +571,15 @@ fprintf(fd, "// Process group with 16 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<16; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -663,18 +606,15 @@ fprintf(fd, "// Process group with 17 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<17; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -701,18 +641,15 @@ fprintf(fd, "// Process group with 18 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<18; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -738,18 +675,15 @@ fprintf(fd, "// Process group with 19 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<19; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -776,18 +710,15 @@ fprintf(fd, "// Process group with 20 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<20; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -818,18 +749,15 @@ fprintf(fd, "// Process group with 21 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<21; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -854,18 +782,15 @@ fprintf(fd, "// Process group with 22 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<22; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -892,18 +817,15 @@ fprintf(fd, "// Process group with <23 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<23; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -931,18 +853,15 @@ fprintf(fd, "// Process group with 24 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<24; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -969,18 +888,15 @@ fprintf(fd, "// Process group with 25 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<25; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1009,18 +925,15 @@ fprintf(fd, "// Process group with 26 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<26; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1047,18 +960,15 @@ fprintf(fd, "// Process group with 27 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<27; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1085,18 +995,15 @@ fprintf(fd, "// Process group with 28 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<28; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1121,18 +1028,15 @@ fprintf(fd, "// Process group with 29 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<29; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1158,18 +1062,15 @@ fprintf(fd, "// Process group with 30 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<30; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.o b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.o deleted file mode 100644 index d40fd0a3af..0000000000 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.o and /dev/null differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c index 617dc54520..aef582ad6f 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c @@ -4,9 +4,7 @@ #include #include "../../nrLDPCdecoder_defs.h" #include "../../nrLDPC_types.h" -//#include "../../nrLDPC_bnProc.h" -//#include "../../nrLDPC_cnProc.h" -//#include "../../nrLDPC_init.h" + void nrLDPC_bnProc_BG2_generator_AVX2(int R) @@ -23,8 +21,7 @@ void nrLDPC_bnProc_BG2_generator_AVX2(int R) FILE *fd=fopen(fname,"w"); if (fd == NULL) {printf("Cannot create \n");abort();} - fprintf(fd,"#include \n"); - fprintf(fd,"#include \n"); + fprintf(fd,"void nrLDPC_bnProc_BG2_R%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {\n",ratestr[R]); const uint8_t* lut_numBnInBnGroups; @@ -77,9 +74,6 @@ void nrLDPC_bnProc_BG2_generator_AVX2(int R) // ===================================================================== - - // ===================================================================== - fprintf(fd, "// Process group with 2 CNs \n"); if (lut_numBnInBnGroups[1] > 0) @@ -95,18 +89,14 @@ fprintf(fd, "// Process group with 2 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<2; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -135,17 +125,16 @@ fprintf(fd, "// Process group with 3 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + //fprintf(fd," ((__m256i*) bnProcBuf) = ((__m256i*) &bnProcBuf) [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + for (k=0; k<3; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); } @@ -172,17 +161,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<4; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup),(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), ((lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup)); fprintf(fd,"}\n"); } @@ -208,18 +195,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<5; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -247,18 +231,15 @@ fprintf(fd, "// Process group with 6 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<6; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -285,18 +266,15 @@ fprintf(fd, "// Process group with 7 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<7; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -323,18 +301,15 @@ fprintf(fd, "// Process group with 8 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<8; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -360,18 +335,15 @@ fprintf(fd, "// Process group with 9 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<9; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -397,18 +369,15 @@ fprintf(fd, "// Process group with 10 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<10; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -433,18 +402,15 @@ fprintf(fd, "// Process group with 11 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<11; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -469,18 +435,15 @@ fprintf(fd, "// Process group with 12 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<12; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -507,18 +470,15 @@ fprintf(fd, "// Process group with 13 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<13; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -546,18 +506,15 @@ fprintf(fd, "// Process group with 14 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<14; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -584,18 +541,15 @@ fprintf(fd, "// Process group with 15 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<15; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -623,18 +577,15 @@ fprintf(fd, "// Process group with 16 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<16; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -661,18 +612,15 @@ fprintf(fd, "// Process group with 17 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<17; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -699,18 +647,15 @@ fprintf(fd, "// Process group with 18 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<18; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -736,25 +681,21 @@ fprintf(fd, "// Process group with 19 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<19; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); } } - // ===================================================================== @@ -774,18 +715,15 @@ fprintf(fd, "// Process group with 20 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<20; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -816,18 +754,15 @@ fprintf(fd, "// Process group with 21 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<21; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -852,18 +787,15 @@ fprintf(fd, "// Process group with 22 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<22; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -890,18 +822,15 @@ fprintf(fd, "// Process group with <23 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<23; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -929,18 +858,15 @@ fprintf(fd, "// Process group with 24 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<24; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -967,18 +893,15 @@ fprintf(fd, "// Process group with 25 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<25; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1007,18 +930,15 @@ fprintf(fd, "// Process group with 26 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<26; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1045,18 +965,15 @@ fprintf(fd, "// Process group with 27 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<27; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1083,18 +1000,15 @@ fprintf(fd, "// Process group with 28 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<28; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1119,18 +1033,15 @@ fprintf(fd, "// Process group with 29 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<29; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1156,18 +1067,15 @@ fprintf(fd, "// Process group with 30 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<30; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>5)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>5), (lut_startAddrBnGroups[idxBnGroup]>>5)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1176,11 +1084,6 @@ fprintf(fd, "// Process group with 30 CNs \n"); fprintf(fd,"}\n"); fclose(fd); -}//end of the function nrLDPC_bnProc_BG1 - - - - - +}//end of the function nrLDPC_bnProc_BG2 diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.o b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.o deleted file mode 100644 index 248c7244cf..0000000000 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.o and /dev/null differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 index 8e7d6324bd..7133f3f4c3 100755 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 and b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/main.o b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/main.o deleted file mode 100644 index c9ea8704ae..0000000000 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/main.o and /dev/null differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/sauvegarde.tar.gz b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/sauvegarde.tar.gz deleted file mode 100644 index 438d0b4b21..0000000000 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/sauvegarde.tar.gz and /dev/null differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProcPc_gen_BG1_avx512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProcPc_gen_BG1_avx512.c index 09bd995216..fabeda7551 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProcPc_gen_BG1_avx512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProcPc_gen_BG1_avx512.c @@ -1,7 +1,3 @@ - - - - #include #include #include "../../nrLDPCdecoder_defs.h" @@ -148,8 +144,8 @@ fprintf(fd, "// Process group with 2 CNs \n"); // Loop over BNs fprintf(fd," for (int i=0,j=0;i #include #include "../../nrLDPCdecoder_defs.h" #include "../../nrLDPC_types.h" - void nrLDPC_bnProc_BG1_generator_AVX512(int R) { const char *ratestr[3]={"13","23","89"}; @@ -61,14 +58,7 @@ void nrLDPC_bnProc_BG1_generator_AVX512(int R) // Offset to each bit within a group in terms of 32 Byte uint32_t cnOffsetInGroup; uint8_t idxBnGroup = 0; - - - - fprintf(fd," __m512i* p_bnProcBuf; \n"); - fprintf(fd," __m512i* p_bnProcBufRes; \n"); - fprintf(fd," __m512i* p_llrRes; \n"); - fprintf(fd," __m512i* p_res; \n"); - fprintf(fd," uint32_t M, i; \n"); + fprintf(fd," uint32_t M, i; \n"); @@ -78,9 +68,6 @@ void nrLDPC_bnProc_BG1_generator_AVX512(int R) // ===================================================================== - - // ===================================================================== - fprintf(fd, "// Process group with 2 CNs \n"); if (lut_numBnInBnGroups[1] > 0) @@ -96,18 +83,14 @@ fprintf(fd, "// Process group with 2 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<2; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -136,17 +119,16 @@ fprintf(fd, "// Process group with 3 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + //fprintf(fd," ((__m512i*) bnProcBuf) = ((__m512i*) &bnProcBuf) [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + for (k=0; k<3; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); } @@ -173,17 +155,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<4; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup),(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), ((lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup)); fprintf(fd,"}\n"); } @@ -209,18 +189,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<5; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -248,18 +225,15 @@ fprintf(fd, "// Process group with 6 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<6; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -286,18 +260,15 @@ fprintf(fd, "// Process group with 7 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<7; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -324,18 +295,15 @@ fprintf(fd, "// Process group with 8 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<8; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -361,18 +329,15 @@ fprintf(fd, "// Process group with 9 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<9; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -398,18 +363,15 @@ fprintf(fd, "// Process group with 10 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<10; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -434,18 +396,15 @@ fprintf(fd, "// Process group with 11 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<11; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -470,18 +429,15 @@ fprintf(fd, "// Process group with 12 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<12; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -508,18 +464,15 @@ fprintf(fd, "// Process group with 13 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<13; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -547,18 +500,15 @@ fprintf(fd, "// Process group with 14 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<14; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -585,18 +535,15 @@ fprintf(fd, "// Process group with 15 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<15; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -624,18 +571,15 @@ fprintf(fd, "// Process group with 16 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<16; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -662,18 +606,15 @@ fprintf(fd, "// Process group with 17 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<17; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -700,18 +641,15 @@ fprintf(fd, "// Process group with 18 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<18; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -737,18 +675,15 @@ fprintf(fd, "// Process group with 19 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<19; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -775,18 +710,15 @@ fprintf(fd, "// Process group with 20 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<20; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -817,18 +749,15 @@ fprintf(fd, "// Process group with 21 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<21; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -853,18 +782,15 @@ fprintf(fd, "// Process group with 22 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<22; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -891,18 +817,15 @@ fprintf(fd, "// Process group with <23 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<23; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -930,18 +853,15 @@ fprintf(fd, "// Process group with 24 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<24; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -968,18 +888,15 @@ fprintf(fd, "// Process group with 25 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<25; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1008,18 +925,15 @@ fprintf(fd, "// Process group with 26 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<26; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1046,18 +960,15 @@ fprintf(fd, "// Process group with 27 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<27; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1084,18 +995,15 @@ fprintf(fd, "// Process group with 28 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<28; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1120,18 +1028,15 @@ fprintf(fd, "// Process group with 29 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<29; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1157,18 +1062,15 @@ fprintf(fd, "// Process group with 30 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<30; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_BG2_avx512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_BG2_avx512.c index ccd01d29a3..82f410bcda 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_BG2_avx512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_BG2_avx512.c @@ -1,5 +1,3 @@ - - #include #include #include "../../nrLDPCdecoder_defs.h" @@ -50,21 +48,12 @@ void nrLDPC_bnProc_BG2_generator_AVX512(int R) else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} - //uint32_t M; - //uint32_t M32rem; - // uint32_t i; + uint32_t k; // Offset to each bit within a group in terms of 32 Byte uint32_t cnOffsetInGroup; uint8_t idxBnGroup = 0; - - - - fprintf(fd," __m512i* p_bnProcBuf; \n"); - fprintf(fd," __m512i* p_bnProcBufRes; \n"); - fprintf(fd," __m512i* p_llrRes; \n"); - fprintf(fd," __m512i* p_res; \n"); - fprintf(fd," uint32_t M, i; \n"); + fprintf(fd," uint32_t M, i; \n"); @@ -74,9 +63,6 @@ void nrLDPC_bnProc_BG2_generator_AVX512(int R) // ===================================================================== - - // ===================================================================== - fprintf(fd, "// Process group with 2 CNs \n"); if (lut_numBnInBnGroups[1] > 0) @@ -92,18 +78,14 @@ fprintf(fd, "// Process group with 2 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<2; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -132,17 +114,16 @@ fprintf(fd, "// Process group with 3 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + //fprintf(fd," ((__m512i*) bnProcBuf) = ((__m512i*) &bnProcBuf) [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + for (k=0; k<3; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); } @@ -169,17 +150,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<4; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); - + // Loop over BNs - fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup),(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), ((lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup)); fprintf(fd,"}\n"); } @@ -205,18 +184,15 @@ fprintf(fd, "// Process group with 4 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<5; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -244,18 +220,15 @@ fprintf(fd, "// Process group with 6 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<6; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -282,18 +255,15 @@ fprintf(fd, "// Process group with 7 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<7; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -320,18 +290,15 @@ fprintf(fd, "// Process group with 8 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<8; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -357,18 +324,15 @@ fprintf(fd, "// Process group with 9 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<9; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -394,18 +358,15 @@ fprintf(fd, "// Process group with 10 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<10; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -430,18 +391,15 @@ fprintf(fd, "// Process group with 11 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<11; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -466,18 +424,15 @@ fprintf(fd, "// Process group with 12 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<12; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -504,18 +459,15 @@ fprintf(fd, "// Process group with 13 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<13; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -543,18 +495,15 @@ fprintf(fd, "// Process group with 14 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<14; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -581,18 +530,15 @@ fprintf(fd, "// Process group with 15 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<15; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -620,18 +566,15 @@ fprintf(fd, "// Process group with 16 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<16; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -658,18 +601,15 @@ fprintf(fd, "// Process group with 17 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<17; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -696,18 +636,15 @@ fprintf(fd, "// Process group with 18 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<18; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -733,18 +670,15 @@ fprintf(fd, "// Process group with 19 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<19; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -771,18 +705,15 @@ fprintf(fd, "// Process group with 20 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<20; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -813,18 +744,15 @@ fprintf(fd, "// Process group with 21 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<21; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -849,18 +777,15 @@ fprintf(fd, "// Process group with 22 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<22; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -887,18 +812,15 @@ fprintf(fd, "// Process group with <23 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<23; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -926,18 +848,15 @@ fprintf(fd, "// Process group with 24 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<24; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -964,18 +883,15 @@ fprintf(fd, "// Process group with 25 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<25; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1004,18 +920,15 @@ fprintf(fd, "// Process group with 26 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<26; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1042,18 +955,15 @@ fprintf(fd, "// Process group with 27 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<27; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1080,18 +990,15 @@ fprintf(fd, "// Process group with 28 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<28; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1116,18 +1023,15 @@ fprintf(fd, "// Process group with 29 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<29; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1153,18 +1057,15 @@ fprintf(fd, "// Process group with 30 CNs \n"); cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>6; // Set pointers to start of group 2 - fprintf(fd," p_bnProcBuf = (__m512i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - fprintf(fd," p_bnProcBufRes = (__m512i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); - + // Loop over CNs for (k=0; k<30; k++) { - fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); - fprintf(fd," p_llrRes = (__m512i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs fprintf(fd," for (i=0;i>6)+ k*cnOffsetInGroup,(lut_startAddrBnGroupsLlr[idxBnGroup]>>6), (lut_startAddrBnGroups[idxBnGroup]>>6)+ k*cnOffsetInGroup); fprintf(fd,"}\n"); @@ -1179,6 +1080,3 @@ fprintf(fd, "// Process group with 30 CNs \n"); - - - diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_avx512 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_avx512 index dabfabe18f..86fe416a4a 100755 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_avx512 and b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc_avx512/bnProc_gen_avx512 differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_R13_AVX2.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_R13_AVX2.h index ada3706a6f..bd46948100 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_R13_AVX2.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_R13_AVX2.h @@ -1,475 +1,281 @@ static inline void nrLDPC_bnProc_BG1_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) { - __m256i* p_bnProcBuf; - __m256i* p_bnProcBufRes; - __m256i* p_llrRes; - __m256i* p_res; uint32_t M, i; // Process group with 2 CNs // Process group with 3 CNs // Process group with 4 CNs M = (1*Z + 31)>>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [16128]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [16512]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [16896]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [17664]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [19200]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [20352]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [20736]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [22272]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [23424]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [24960]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [25344]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [25728]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [3456]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [3456]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [3456]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [4224]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [4224]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [3840]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [9984]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [9984]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [5760]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [6912]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [28032]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [28032]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [9600]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [46464]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [46464]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [12672]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [50688]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [50688]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [13056]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [384]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [384]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [384]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [2688]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [2688]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [1536]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [26880]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [26880]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [9600]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [28416]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [28416]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [9984]; for (i=0;i -#include void nrLDPC_bnProc_BG2_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) { __m256i* p_bnProcBuf; __m256i* p_bnProcBufRes; @@ -8,188 +6,112 @@ void nrLDPC_bnProc_BG2_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* uint32_t M, i; // Process group with 2 CNs M = (1*Z + 31)>>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [6912]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [6912]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [6912]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [7680]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [7680]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [7296]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [10752]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [10752]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [8064]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [12672]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [12672]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [8448]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [10368]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [26880]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [26880]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [10752]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [29952]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [29952]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [11136]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [11520]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [40320]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [40320]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [11904]; for (i=0;i -#include void nrLDPC_bnProc_BG2_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) { __m256i* p_bnProcBuf; __m256i* p_bnProcBufRes; @@ -11,545 +9,325 @@ void nrLDPC_bnProc_BG2_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* // Process group with 4 CNs // Process group with 5 CNs M = (2*Z + 31)>>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [14592]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [15360]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [15744]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [16128]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [16512]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [17280]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [17664]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [18048]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [18432]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [18816]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [19200]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [19584]; for (i=0;i -#include void nrLDPC_bnProc_BG2_R23_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) { __m256i* p_bnProcBuf; __m256i* p_bnProcBufRes; @@ -8,123 +6,73 @@ void nrLDPC_bnProc_BG2_R23_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* uint32_t M, i; // Process group with 2 CNs M = (3*Z + 31)>>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [1152]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [1152]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [1152]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [3456]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [3456]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [2304]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [9216]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [9216]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [4224]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [13824]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [13824]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [5376]; for (i=0;i>5; - p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; - p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m256i*) &llrRes [6144]; for (i=0;i>5; - p_bnProcBuf = (__m128i*) &bnProcBuf [0]; - p_llrProcBuf = (__m128i*) &llrProcBuf [0]; - p_llrRes = (__m256i*) &llrRes [0]; - for (int i=0,j=0;i>5; p_bnProcBuf = (__m128i*) &bnProcBuf [6912]; p_llrProcBuf = (__m128i*) &llrProcBuf [6912]; p_llrRes = (__m256i*) &llrRes [6912]; for (int i=0,j=0;i>5; - p_bnProcBuf = (__m128i*) &bnProcBuf [0]; - p_llrProcBuf = (__m128i*) &llrProcBuf [0]; - p_llrRes = (__m256i*) &llrRes [0]; - for (int i=0,j=0;i>5; - p_bnProcBuf = (__m128i*) &bnProcBuf [0]; - p_llrProcBuf = (__m128i*) &llrProcBuf [0]; - p_llrRes = (__m256i*) &llrRes [0]; - for (int i=0,j=0;i>5; p_bnProcBuf = (__m128i*) &bnProcBuf [1152]; p_llrProcBuf = (__m128i*) &llrProcBuf [1152]; p_llrRes = (__m256i*) &llrRes [1152]; for (int i=0,j=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [16128]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [16128]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [16128]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [17664]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [17664]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [16512]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [19584]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [19584]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [16896]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [24192]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [24192]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [17664]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [34944]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [34944]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [19200]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [44160]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [44160]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [20352]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [47616]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [47616]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [20736]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [62976]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [62976]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [22272]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [75648]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [75648]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [23424]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [94080]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [94080]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [24960]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [99072]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [99072]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [25344]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [109824]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [109824]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [25728]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [3456]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [3456]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [3456]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [4224]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [4224]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [3840]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [9984]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [9984]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [5760]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [14592]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [14592]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [6912]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [28032]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [28032]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [9600]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [46464]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [46464]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [12672]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [50688]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [50688]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [13056]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [384]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [384]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [384]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [2688]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [2688]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [1536]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [26880]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [26880]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [9600]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [28416]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [28416]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [9984]; for (i=0;i #include void nrLDPC_bnProc_BG2_R13_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) { - __m512i* p_bnProcBuf; - __m512i* p_bnProcBufRes; - __m512i* p_llrRes; - __m512i* p_res; uint32_t M, i; // Process group with 2 CNs M = (1*Z + 63)>>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [6912]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [6912]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [6912]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [7680]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [7680]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [7296]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [10752]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [10752]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [8064]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [12672]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [12672]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [8448]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [24192]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [24192]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [10368]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [26880]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [26880]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [10752]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [29952]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [29952]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [11136]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [34944]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [34944]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [11520]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [40320]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [40320]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [11904]; for (i=0;i #include void nrLDPC_bnProc_BG2_R15_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) { - __m512i* p_bnProcBuf; - __m512i* p_bnProcBufRes; - __m512i* p_llrRes; - __m512i* p_res; uint32_t M, i; // Process group with 2 CNs // Process group with 3 CNs // Process group with 4 CNs // Process group with 5 CNs M = (2*Z + 63)>>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [14592]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [14592]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [14592]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [18432]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [18432]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [15360]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [20736]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [20736]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [15744]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [23424]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [23424]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [16128]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [26496]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [26496]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [16512]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [33408]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [33408]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [17280]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [37248]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [37248]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [17664]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [41856]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [41856]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [18048]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [46848]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [46848]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [18432]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [52224]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [52224]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [18816]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [58368]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [58368]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [19200]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [66816]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [66816]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [19584]; for (i=0;i #include void nrLDPC_bnProc_BG2_R23_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) { - __m512i* p_bnProcBuf; - __m512i* p_bnProcBufRes; - __m512i* p_llrRes; - __m512i* p_res; uint32_t M, i; // Process group with 2 CNs M = (3*Z + 63)>>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [1152]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [1152]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [1152]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [3456]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [3456]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [2304]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [9216]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [9216]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [4224]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [13824]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [13824]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [5376]; for (i=0;i>6; - p_bnProcBuf = (__m512i*) &bnProcBuf [17664]; - p_bnProcBufRes = (__m512i*) &bnProcBufRes [17664]; - p_res = &p_bnProcBufRes[0]; - p_llrRes = (__m512i*) &llrRes [6144]; for (i=0;i