From a7e6137408960c50fa7babdb5ee6a28060650455 Mon Sep 17 00:00:00 2001 From: Raymond Knopp Date: Sat, 9 May 2020 09:14:59 +0200 Subject: [PATCH] unrolled 2 BNs case in generator --- .../nrLDPC_decoder/nrLDPC_tools/cnProc_gen.c | 39 +++++++++++++++--- .../nrLDPC_decoder/nrLDPC_tools/cnProc_gen.o | Bin 30856 -> 32264 bytes .../nrLDPC_decoder/nrLDPC_tools/gmon.out | Bin 4138 -> 4354 bytes .../nrLDPC_cnProc_BG1_Z384_13.c | 36 ++++++++++++++-- 4 files changed, 66 insertions(+), 9 deletions(-) diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/cnProc_gen.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/cnProc_gen.c index 1daff9c17a..eca8e886fc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/cnProc_gen.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/cnProc_gen.c @@ -92,7 +92,7 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // for (i=0; i>5)+lut_idxCnProcG3[j][0]); @@ -117,6 +117,32 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // *p_cnProcBufResBit = _mm256_sign_epi8(min, sgn); // p_cnProcBufResBit++; fprintf(fd," ((__m256i*)cnProcBufRes)[%d+i] = _mm256_sign_epi8(min, sgn);\n",(lut_startAddrCnGroups[0]>>5)+(j*bitOffsetInGroup)); + + // Abs and sign of 32 CNs (first BN) + // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; + fprintf(fd," ymm0 = ((__m256i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>5)+lut_idxCnProcG3[j][0]+1); + // sgn = _mm256_sign_epi8(ones, ymm0); + fprintf(fd," sgn = _mm256_sign_epi8(ones, ymm0);\n"); + // min = _mm256_abs_epi8(ymm0); + fprintf(fd," min = _mm256_abs_epi8(ymm0);\n"); + + // 32 CNs of second BN + // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][1] + i]; + fprintf(fd," ymm0 = ((__m256i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>5)+lut_idxCnProcG3[j][1]+1); + + // min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0)); + fprintf(fd," min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));\n"); + + // sgn = _mm256_sign_epi8(sgn, ymm0); + fprintf(fd," sgn = _mm256_sign_epi8(sgn, ymm0);\n"); + + // Store result + // min = _mm256_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm256_min_epu8(min, maxLLR);\n"); + // *p_cnProcBufResBit = _mm256_sign_epi8(min, sgn); + // p_cnProcBufResBit++; + fprintf(fd," ((__m256i*)cnProcBufRes)[%d+i] = _mm256_sign_epi8(min, sgn);\n",(lut_startAddrCnGroups[0]>>5)+(j*bitOffsetInGroup)+1); + fprintf(fd," }\n"); } } @@ -250,7 +276,7 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // ===================================================================== // Process group with 6 BNs - + fprintf(fd,"//Process group with 6 BNs\n"); // Offset is 8*384/32 = 96 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}, @@ -316,7 +342,7 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // ===================================================================== // Process group with 7 BNs - + fprintf(fd,"//Process group with 7 BNs\n"); // Offset is 5*384/32 = 60 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}, @@ -384,7 +410,7 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // ===================================================================== // Process group with 8 BNs - + fprintf(fd,"//Process group with 8 BNs\n"); // Offset is 2*384/32 = 24 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}, @@ -452,7 +478,7 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // ===================================================================== // Process group with 9 BNs - + fprintf(fd,"//Process group with 9 BNs\n"); // Offset is 2*384/32 = 24 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}, @@ -522,7 +548,7 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // ===================================================================== // Process group with 10 BNs - + fprintf(fd,"//Process group with 10 BNs\n"); // Offset is 1*384/32 = 12 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}, @@ -593,6 +619,7 @@ void nrLDPC_cnProc_BG1_generator(uint16_t Z,int R) // ===================================================================== // Process group with 19 BNs + fprintf(fd,"//Process group with 19 BNs\n"); // Offset is 4*384/32 = 12 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}, diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/cnProc_gen.o b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/cnProc_gen.o index 5d68165250ea59f7e9f3a2e3acea1c505d165252..b4dce96552df1786339bd3159aca5df15b3ef6ae 100644 GIT binary patch delta 8840 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 delta 8043 zcmZ{p3s98T7018*7Iy(bSya|lF`%`gND*Vj2%(}S!;qwkqczoNc&JG<4?v9~;s=x9 zqj^EEI#MkORuiN3!E92En)qtsBT1`flEG=xsENkZQ6ZVBX=_8zz27--zeBz|BfIzf zf9KwF&$;)0yX)FJp0(|s`V=#Nam&alrn$uRrDJB!#E-_;*BjL3Fe?{CwwrX4Li1*3y_EpEL@p3(Bs(*H+-LLcHtA0K9PkTyL|7ex1_cm9l{>2q`e}>uU z>#qh}+DC;Af3|q+ceBO6(uYpBA`HWxy5T;sn++3n=^y|#$AM-S|o-Pyk^zJPv7XFo;s$Vj%zOna!hqbY{Ky0AxV}@8GSZj_=8|klga8Squ&M${}_^FA(b)G1`Pj$ zB*~g8W0YkRhW|0CEr1vsNsCuf!08Zpxah?uwdtD%jP; zu^9Ys=R3)X(6yKKf)xq#YpL#%UTW;_q=w%^!zbb(>rXhzrq1Cve(t7hx=o5)KdiIM z=?{S@M@U`DE2(Zub6$5vZP;00SGk~IUwhg~7Ff_%=yQbnaa}tao#+xG_YfI@05H0T?37ME-znKj zctU282OidiF_r&)x%m~vvH?j#{J-z~;H$|+Q@OyJqlNg>=;7e;V|6_(k zYSuupJ}cEsYZ5223Zxjwen7qytCw&~_L@kMnK!JD`T&sID{i$pIo9Xhm>A=agvmnT zwRx=(QS|BHZc$qh4A&HtMO(-5zJ(MS@PsfD;4H~@6743u&w_tE zb5=GQUp``FJ7nAA;lXGa+3=4hXcx6Jg4Pe{#?`(uMrbtL4je9ob{=jz<1ZpV)`eeb z+pW$C%Ftn*=AeiB3Y#DfE@IiXX}q4lgN%O&`6CV<4l?EAOXg6I4%ZwGU3?SI|?v~zwk z<5fZB8PC@o^pwtJ4ph)m7k($>DWLrtuV?5ZusiM;s_}WvK@aE}n}BM3!-Ws@c4mmq zYy#RLLzd%?$z%>x<6m|;I3AO;7*92RMC0`ZJQ8pQlBD|2l(s(_f>HT<(?S3)Zof)z^I@U1x=AfT~t>l0_)%bOd*E94E1h2M}EUij!u zU+9|l{W%>nu^ju~i}I&}p-Ao9vQ#&r+Fvw-n!?mu_$&2zaqg+0^&nFR$pk=q80`|4 zrrFppcj0RoKMcPXZE)eY+jh&K3F7cm_dyqj57-2&@l)nS7rveGG57(&CvOjEa=LW+ zIH45>QJ{c4_!t`HaOmRiW&FcS(3Ge`knGp!UWhkZ(S!i6T%Q42@uFA*z`o7u3m2orP+lC8Q%g~;63w8l zVQLww8^k$Ko0(dV>R#cgfb}wUAF3Bb2B=qDw*&UPg71NM0NaEn~iIsMd)>P#c)~1FBG8P!BORPEG;sv}ghK z6Q+(v^-FOH)LTrQit7JFU`a3(1wYryMlqM68Wg#p4rOXRsu`jj)O(q_57pVC8PrFa zdJ)w+aSqf5rWWCq0`*-A>t$*Us!(50uQ2shRK21Y)ZTbU$m!%+xQJ?+XaMydrnaFv zQyc@8etsZd124&1(GKd1%(n>D%_8}kVCZ$G)}#8KCM;CrO;JVQtu9`SIIuFsd}xxm43?S-F{C=jtOp%lit@$Q>YV6J74}H`3^B5D@c#if C{7KmW diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/gmon.out b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/gmon.out index 7baa8bca3099ba92e71ae1fcce590668d150fd4a..a89f942e8ff56a7d12117b412b9d9be3676ad794 100644 GIT binary patch delta 46 pcmZ3b(4;g$mMcTUfdK>}I5w)k