From 265b5c4d1beb31f750841995b19b8d046c5b403d Mon Sep 17 00:00:00 2001 From: Sy Date: Fri, 29 May 2020 15:19:52 +0200 Subject: [PATCH] Test for AVX512 --- .../generator_avx512/cnProc_gen_BG1_avx512.c | 356 ++++-------------- .../generator_avx512/cnProc_gen_avx512 | Bin 199584 -> 205888 bytes 2 files changed, 68 insertions(+), 288 deletions(-) diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG1_avx512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG1_avx512.c index fa538eb128..a6ffe84223 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG1_avx512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG1_avx512.c @@ -20,7 +20,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd,"#include \n"); fprintf(fd,"#include \n"); - fprintf(fd, "#include \"../include/avx512fintrin.h\"\n"); + fprintf(fd, "__m512i _mm512_sign_epi16(__m512i a, __m512i b){ \n"); /* Emulate _mm512_sign_epi16() with instructions that exist in the AVX-512 instruction set */ fprintf(fd, "b = _mm512_min_epi16(b, _mm512_set1_epi16(1)); \n" ); @@ -69,8 +69,8 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Offsets are in units of bitOffsetInGroup (1*384/64)=6 // Offsets are in units of bitOffsetInGroup (1*384/64)=6 - // const uint8_t lut_idxCnProcG3[3][2] = {{6,12}, {0,12}, {0,6}}; - const uint8_t lut_idxCnProcG3[3][2] = {{12,24}, {0,24}, {0,12}}; + const uint8_t lut_idxCnProcG3[3][2] = {{6,12}, {0,12}, {0,6}}; + fprintf(fd," __m512i zmm0, min, sgn,ones,maxLLR;\n"); fprintf(fd," ones = _mm512_set1_epi8((char)1);\n"); @@ -80,17 +80,10 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[0]*Z + 63)>>31; + M = (lut_numCnInCnGroups[0]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[0]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 3 @@ -111,11 +104,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i+=2) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>31)+lut_idxCnProcG3[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>7)+lut_idxCnProcG3[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>5)+lut_idxCnProcG3[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -123,11 +112,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // 32 CNs of second BN // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][1] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>31)+lut_idxCnProcG3[j][1]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>7)+lut_idxCnProcG3[j][1]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>5)+lut_idxCnProcG3[j][1]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -140,19 +125,11 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[0]>>31)+(j*bitOffsetInGroup)); + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[0]>>5)+(j*bitOffsetInGroup)); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>31)+lut_idxCnProcG3[j][0]+1); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[0]>>7)+(j*bitOffsetInGroup)); - - // Abs and sign of 64 CNs (first BN) - // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>7)+lut_idxCnProcG3[j][0]+1); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>5)+lut_idxCnProcG3[j][0]+1); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -160,11 +137,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // 32 CNs of second BN // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][1] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>31)+lut_idxCnProcG3[j][1]+1); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>7)+lut_idxCnProcG3[j][1]+1); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>5)+lut_idxCnProcG3[j][1]+1); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -177,11 +150,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[0]>>31)+(j*bitOffsetInGroup)+1); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[0]>>7)+(j*bitOffsetInGroup)+1); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[0]>>5)+(j*bitOffsetInGroup)+1); fprintf(fd," }\n"); } @@ -191,24 +160,16 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 4 BNs fprintf(fd,"//Process group with 4 BNs\n"); // Offset is 5*384/64 = 30 - // const uint8_t lut_idxCnProcG4[4][3] = {{30,60,90}, {0,60,90}, {0,30,90}, {0,30,60}}; - const uint8_t lut_idxCnProcG4[4][3] = {{60,120,180}, {0,120,180}, {0,60,180}, {0,60,120}}; + const uint8_t lut_idxCnProcG4[4][3] = {{30,60,90}, {0,60,90}, {0,30,90}, {0,30,60}}; if (lut_numCnInCnGroups[1] > 0) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[1]*Z + 63)>>31; + M = (lut_numCnInCnGroups[1]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[1]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 4 @@ -227,11 +188,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>31)+lut_idxCnProcG4[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>7)+lut_idxCnProcG4[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>5)+lut_idxCnProcG4[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -241,11 +198,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Loop over BNs for (k=1; k<3; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>31)+lut_idxCnProcG4[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>7)+lut_idxCnProcG4[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>5)+lut_idxCnProcG4[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -259,11 +212,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[1]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[1]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[1]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } @@ -273,28 +222,18 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 5 BNs fprintf(fd,"//Process group with 5 BNs\n"); // Offset is 18*384/64 = 216 - //const uint16_t lut_idxCnProcG5[5][4] = {{108,216,324,432}, {0,216,324,432}, - // {0,108,324,432}, {0,108,216,432}, {0,108,216,324}}; + const uint16_t lut_idxCnProcG5[5][4] = {{108,216,324,432}, {0,216,324,432}, + {0,108,324,432}, {0,108,216,432}, {0,108,216,324}}; - const uint16_t lut_idxCnProcG5[5][4] = {{216,432,648,864}, {0,432,648,864}, - {0,216,648,864}, {0,216,432,864}, {0,216,432,648}}; - if (lut_numCnInCnGroups[2] > 0) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[2]*Z + 63)>>31; + M = (lut_numCnInCnGroups[2]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[2]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 4 @@ -314,11 +253,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>31)+lut_idxCnProcG5[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>7)+lut_idxCnProcG5[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>5)+lut_idxCnProcG5[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -328,11 +263,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Loop over BNs for (k=1; k<4; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>31)+lut_idxCnProcG5[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>7)+lut_idxCnProcG5[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>5)+lut_idxCnProcG5[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -346,11 +277,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[2]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[2]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[2]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } @@ -359,28 +286,19 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 6 BNs fprintf(fd,"//Process group with 6 BNs\n"); // Offset is 8*384/64 = 48 - /* const uint16_t lut_idxCnProcG6[6][5] = {{48,96,144,192,240}, {0,96,144,192,240}, + const uint16_t lut_idxCnProcG6[6][5] = {{48,96,144,192,240}, {0,96,144,192,240}, {0,48,144,192,240}, {0,48,96,192,240}, - {0,48,96,144,240}, {0,48,96,144,192}};*/ + {0,48,96,144,240}, {0,48,96,144,192}}; + - const uint16_t lut_idxCnProcG6[6][5] = {{96,192,288,384,480}, {0,192,288,384,480}, - {0,96,288,384,480}, {0,96,192,384,480}, - {0,96,192,288,480}, {0,96,192,288,384}}; if (lut_numCnInCnGroups[3] > 0) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[3]*Z + 63)>>31; + M = (lut_numCnInCnGroups[3]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[3]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[3]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[3]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[3]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 4 @@ -400,11 +318,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>31)+lut_idxCnProcG6[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>7)+lut_idxCnProcG6[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>5)+lut_idxCnProcG6[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -414,11 +328,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Loop over BNs for (k=1; k<5; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>31)+lut_idxCnProcG6[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>7)+lut_idxCnProcG6[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>5)+lut_idxCnProcG6[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -432,11 +342,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[3]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[3]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[3]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } @@ -446,32 +352,20 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 7 BNs fprintf(fd,"//Process group with 7 BNs\n"); // Offset is 5*384/64 = 30 - /* const uint16_t lut_idxCnProcG7[7][6] = {{30,60,90,120,150,180}, {0,60,90,120,150,180}, + const uint16_t lut_idxCnProcG7[7][6] = {{30,60,90,120,150,180}, {0,60,90,120,150,180}, {0,30,90,120,150,180}, {0,30,60,120,150,180}, {0,30,60,90,150,180}, {0,30,60,90,120,180}, - {0,30,60,90,120,150}};*/ + {0,30,60,90,120,150}}; - const uint16_t lut_idxCnProcG7[7][6] = {{60,120,180,240,300,360}, {0,120,180,240,300,360}, - {0,60,180,240,300,360}, {0,60,120,240,300,360}, - {0,60,120,180,300,360}, {0,60,120,180,240,360}, - {0,60,120,180,240,300}}; - if (lut_numCnInCnGroups[4] > 0) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[4]*Z + 63)>>31; + M = (lut_numCnInCnGroups[4]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[4]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[4]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[4]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[4]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 4 @@ -491,11 +385,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>31)+lut_idxCnProcG7[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>7)+lut_idxCnProcG7[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>5)+lut_idxCnProcG7[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -505,11 +395,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Loop over BNs for (k=1; k<6; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>31)+lut_idxCnProcG7[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>7)+lut_idxCnProcG7[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>5)+lut_idxCnProcG7[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -523,11 +409,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[4]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[4]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[4]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } @@ -537,15 +419,10 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 8 BNs fprintf(fd,"//Process group with 8 BNs\n"); // Offset is 2*384/64 = 12 - /* const uint8_t lut_idxCnProcG8[8][7] = {{12,24,36,48,56,72,84}, {0,24,36,48,56,72,84}, + const uint8_t lut_idxCnProcG8[8][7] = {{12,24,36,48,56,72,84}, {0,24,36,48,56,72,84}, {0,12,36,48,56,72,84}, {0,12,24,48,56,72,84}, {0,12,24,36,56,72,84}, {0,12,24,36,48,72,84}, - {0,12,24,36,48,56,84}, {0,12,24,36,48,120,72}};*/ - - const uint8_t lut_idxCnProcG8[8][7] = {{24,48,72,96,120,144,168}, {0,48,72,96,120,144,168}, - {0,24,72,96,120,144,168}, {0,24,48,96,120,144,168}, - {0,24,48,72,120,144,168}, {0,24,48,72,96,144,168}, - {0,24,48,72,96,120,168}, {0,24,48,72,96,120,144}}; + {0,12,24,36,48,56,84}, {0,12,24,36,48,120,72}}; @@ -553,17 +430,10 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[5]*Z + 63)>>31; + M = (lut_numCnInCnGroups[5]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[5]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[5]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[5]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[5]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 4 @@ -583,11 +453,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>31)+lut_idxCnProcG8[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>7)+lut_idxCnProcG8[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>5)+lut_idxCnProcG8[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -597,11 +463,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Loop over BNs for (k=1; k<7; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>31)+lut_idxCnProcG8[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>7)+lut_idxCnProcG8[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>5)+lut_idxCnProcG8[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -615,11 +477,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[5]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[5]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[5]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } @@ -628,34 +486,23 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 9 BNs fprintf(fd,"//Process group with 9 BNs\n"); // Offset is 2*384/64 = 12 - /*const uint8_t lut_idxCnProcG9[9][8] = {{12,24,36,48,60,72,84,96}, {0,24,36,48,60,72,84,96}, + const uint8_t lut_idxCnProcG9[9][8] = {{12,24,36,48,60,72,84,96}, {0,24,36,48,60,72,84,96}, {0,12,36,48,60,72,84,96}, {0,12,24,48,60,72,84,96}, {0,12,24,36,60,72,84,96}, {0,12,24,36,48,72,84,96}, {0,12,24,36,48,60,84,96}, {0,12,24,36,48,60,72,96}, - {0,12,24,36,48,60,72,84}};*/ + {0,12,24,36,48,60,72,84}}; + - const uint8_t lut_idxCnProcG9[9][8] = {{24,48,72,96,120,144,168,192}, {0,48,72,96,120,144,168,192}, - {0,24,72,96,120,144,168,192}, {0,24,48,96,120,144,168,192}, - {0,24,48,72,120,144,168,192}, {0,24,48,72,96,144,168,192}, - {0,24,48,72,96,120,168,192}, {0,24,48,72,96,120,144,192}, - {0,24,48,72,96,120,144,168}}; if (lut_numCnInCnGroups[6] > 0) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[6]*Z + 63)>>31; + M = (lut_numCnInCnGroups[6]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[6]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[6]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[6]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[6]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 9 @@ -675,11 +522,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>31)+lut_idxCnProcG9[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>7)+lut_idxCnProcG9[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>5)+lut_idxCnProcG9[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -689,11 +532,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Loop over BNs for (k=1; k<8; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>31)+lut_idxCnProcG9[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>7)+lut_idxCnProcG9[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>5)+lut_idxCnProcG9[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -707,11 +546,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[6]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[6]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[6]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } @@ -720,17 +555,11 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 10 BNs fprintf(fd,"//Process group with 10 BNs\n"); // Offset is 1*384/64 = 6 - /* const uint8_t lut_idxCnProcG10[10][9] = {{6,12,18,24,30,36,42,48,54}, {0,12,18,24,30,36,42,48,54}, + const uint8_t lut_idxCnProcG10[10][9] = {{6,12,18,24,30,36,42,48,54}, {0,12,18,24,30,36,42,48,54}, {0,6,18,24,30,36,42,48,54}, {0,6,12,24,30,36,42,48,54}, {0,6,12,18,30,36,42,48,54}, {0,6,12,18,24,36,42,48,54}, {0,6,12,18,24,30,42,48,54}, {0,6,12,18,24,30,36,48,54}, - {0,6,12,18,24,30,36,42,54}, {0,6,12,36,24,30,36,42,48}};*/ - - const uint8_t lut_idxCnProcG10[10][9] = {{12,24,36,48,60,72,84,96,108}, {0,24,36,48,60,72,84,96,108}, - {0,12,36,48,60,72,84,96,108}, {0,12,24,48,60,72,84,96,108}, - {0,12,24,36,60,72,84,96,108}, {0,12,24,36,48,72,84,96,108}, - {0,12,24,36,48,60,84,96,108}, {0,12,24,36,48,60,72,96,108}, - {0,12,24,36,48,60,72,84,108}, {0,12,24,36,48,60,72,84,96}}; + {0,6,12,18,24,30,36,42,54}, {0,6,12,36,24,30,36,42,48}}; @@ -740,17 +569,10 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[7]*Z + 63)>>31; + M = (lut_numCnInCnGroups[7]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[7]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[7]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[7]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[7]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 10 @@ -770,11 +592,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>31)+lut_idxCnProcG10[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>7)+lut_idxCnProcG10[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>5)+lut_idxCnProcG10[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -784,11 +602,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Loop over BNs for (k=1; k<9; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>31)+lut_idxCnProcG10[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>7)+lut_idxCnProcG10[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>5)+lut_idxCnProcG10[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -802,11 +616,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[7]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[7]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[7]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } @@ -816,7 +626,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // Process group with 19 BNs fprintf(fd,"//Process group with 19 BNs\n"); // Offset is 4*384/64 = 24 - /* const uint16_t lut_idxCnProcG19[19][18] = {{24,48,72,96,120,144,168,192,216,240,264,288,312,336,360,384,408,432}, {0,48,72,96,120,144,168,192,216,240,264,288,312,336,360,384,408,432}, + const uint16_t lut_idxCnProcG19[19][18] = {{24,48,72,96,120,144,168,192,216,240,264,288,312,336,360,384,408,432}, {0,48,72,96,120,144,168,192,216,240,264,288,312,336,360,384,408,432}, {0,24,72,96,120,144,168,192,216,240,264,288,312,336,360,384,408,432}, {0,24,48,96,120,144,168,192,216,240,264,288,312,336,360,384,408,432}, {0,24,48,72,120,144,168,192,216,240,264,288,312,336,360,384,408,432}, {0,24,48,72,96,144,168,192,216,240,264,288,312,336,360,384,408,432}, {0,24,48,72,96,120,168,192,216,240,264,288,312,336,360,384,408,432}, {0,24,48,72,96,120,144,192,216,240,264,288,312,336,360,384,408,432}, @@ -825,35 +635,17 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) {0,24,48,72,96,120,144,168,192,216,240,264,312,336,360,384,408,432}, {0,24,48,72,96,120,144,168,192,216,240,264,288,336,360,384,408,432}, {0,24,48,72,96,120,144,168,192,216,240,264,288,312,360,384,408,432}, {0,24,48,72,96,120,144,168,192,216,240,264,288,312,336,384,408,432}, {0,24,48,72,96,120,144,168,192,216,240,264,288,312,336,360,408,432}, {0,24,48,72,96,120,144,168,192,216,240,264,288,312,336,360,384,432}, - {0,24,48,72,96,120,144,168,192,216,240,264,288,312,336,360,384,408}};*/ - -const uint16_t lut_idxCnProcG19[19][18] = {{48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, {0,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, - {0,48,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, {0,48,96,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, - {0,48,96,144,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, {0,48,96,144,192,288,336,384,432,480,528,576,624,672,720,768,816,864}, - {0,48,96,144,192,240,336,384,432,480,528,576,624,672,720,768,816,864}, {0,48,96,144,192,240,288,384,432,480,528,576,624,672,720,768,816,864}, - {0,48,96,144,192,240,288,336,432,480,528,576,624,672,720,768,816,864}, {0,48,96,144,192,240,288,336,384,480,528,576,624,672,720,768,816,864}, - {0,48,96,144,192,240,288,336,384,432,528,576,624,672,720,768,816,864}, {0,48,96,144,192,240,288,336,384,432,480,576,624,672,720,768,816,864}, - {0,48,96,144,192,240,288,336,384,432,480,528,624,672,720,768,816,864}, {0,48,96,144,192,240,288,336,384,432,480,528,576,672,720,768,816,864}, - {0,48,96,144,192,240,288,336,384,432,480,528,576,624,720,768,816,864}, {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,768,816,864}, - {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,816,864}, {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,864}, - {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816}}; + {0,24,48,72,96,120,144,168,192,216,240,264,288,312,336,360,384,408}}; if (lut_numCnInCnGroups[8] > 0) { // Number of groups of 64 CNs for parallel processing // Ceil for values not divisible by 64 -<<<<<<< HEAD - M = (lut_numCnInCnGroups[8]*Z + 63)>>31; + M = (lut_numCnInCnGroups[8]*Z + 63)>>5; // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[8]*NR_LDPC_ZMAX)>>31; -======= - M = (lut_numCnInCnGroups[8]*Z + 31)>>7; - - // Set the offset to each bit within a group in terms of 64 Byte - bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[8]*NR_LDPC_ZMAX)>>7; ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[8]*NR_LDPC_ZMAX)>>5; // Set pointers to start of group 19 @@ -873,11 +665,7 @@ const uint16_t lut_idxCnProcG19[19][18] = {{48,96,144,192,240,288,336,384,432,48 fprintf(fd," for (int i=0;i<%d;i++) {\n",M); // Abs and sign of 64 CNs (first BN) // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>31)+lut_idxCnProcG19[j][0]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>7)+lut_idxCnProcG19[j][0]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>5)+lut_idxCnProcG19[j][0]); // sgn = _mm512_sign_epi16(ones, zmm0); fprintf(fd," sgn = _mm512_sign_epi16(ones, zmm0);\n"); // min = _mm512_abs_epi8(zmm0); @@ -887,11 +675,7 @@ const uint16_t lut_idxCnProcG19[19][18] = {{48,96,144,192,240,288,336,384,432,48 // Loop over BNs for (k=1; k<18; k++) { -<<<<<<< HEAD - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>31)+lut_idxCnProcG19[j][k]); -======= - fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>7)+lut_idxCnProcG19[j][k]); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>5)+lut_idxCnProcG19[j][k]); // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); @@ -905,11 +689,7 @@ const uint16_t lut_idxCnProcG19[19][18] = {{48,96,144,192,240,288,336,384,432,48 fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); // *p_cnProcBufResBit = _mm512_sign_epi16(min, sgn); // p_cnProcBufResBit++; -<<<<<<< HEAD - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[8]>>31)+(j*bitOffsetInGroup)); -======= - fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[8]>>7)+(j*bitOffsetInGroup)); ->>>>>>> 6d9ceaa712033dc4f28050886be43572df7c2b68 + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = _mm512_sign_epi16(min, sgn);\n",(lut_startAddrCnGroups[8]>>5)+(j*bitOffsetInGroup)); fprintf(fd," }\n"); } } diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_avx512 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_avx512 index debe8b422d795dbe1b148a6f662068658b0d4f3f..776516a4d72e8d73d51b9ed5a957c8915d912bea 100755 GIT binary patch literal 205888 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%0DF%T=$^Lm28R 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