Commit 51a45a4d authored by sebastian's avatar sebastian

Starting to put in the new reduced LUTs

parent 79de8953
...@@ -2199,6 +2199,16 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu ...@@ -2199,6 +2199,16 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu
} }
else if (Z == 320) else if (Z == 320)
{ {
p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z320_CNG3;
p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z320_CNG4;
p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z320_CNG5;
p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z320_CNG6;
p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z320_CNG7;
p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z320_CNG8;
p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z320_CNG9;
p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z320_CNG10;
p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z320_CNG19;
if (R == 13) if (R == 13)
{ {
p_lut->llr2CnProcBuf = lut_llr2CnProcBuf_BG1_Z320_R13; p_lut->llr2CnProcBuf = lut_llr2CnProcBuf_BG1_Z320_R13;
...@@ -2241,6 +2251,16 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu ...@@ -2241,6 +2251,16 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu
} }
else if (Z == 384) else if (Z == 384)
{ {
p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z384_CNG3;
p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z384_CNG4;
p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z384_CNG5;
p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z384_CNG6;
p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z384_CNG7;
p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z384_CNG8;
p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z384_CNG9;
p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z384_CNG10;
p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z384_CNG19;
if (R == 13) if (R == 13)
{ {
p_lut->llr2CnProcBuf = lut_llr2CnProcBuf_BG1_Z384_R13; p_lut->llr2CnProcBuf = lut_llr2CnProcBuf_BG1_Z384_R13;
......
...@@ -31,6 +31,501 @@ ...@@ -31,6 +31,501 @@
#ifndef __NR_LDPC_LUT__H__ #ifndef __NR_LDPC_LUT__H__
#define __NR_LDPC_LUT__H__ #define __NR_LDPC_LUT__H__
// Circular shifts of base graph
// There are 8 sets of circular shifts depending on Z
// However, each shift is modulo Z
// BG1
// Group of CNs with 3 BNs (CNG3)
// e.g. first and second value correspond to row 4 col 0 and 1 in the BG table (modulo Z)
static const uint16_t circShift_BG1_Z2_CNG3[3][1] = {{1},{0},{0}};
static const uint16_t circShift_BG1_Z3_CNG3[3][1] = {{2},{1},{0}};
static const uint16_t circShift_BG1_Z5_CNG3[3][1] = {{3},{0},{0}};
static const uint16_t circShift_BG1_Z7_CNG3[3][1] = {{2},{3},{0}};
static const uint16_t circShift_BG1_Z9_CNG3[3][1] = {{3},{1},{0}};
static const uint16_t circShift_BG1_Z11_CNG3[3][1] = {{9},{3},{0}};
static const uint16_t circShift_BG1_Z13_CNG3[3][1] = {{11},{9},{0}};
static const uint16_t circShift_BG1_Z15_CNG3[3][1] = {{4},{1},{0}};
static const uint16_t circShift_BG1_Z4_CNG3[3][1] = {{1},{2},{0}};
static const uint16_t circShift_BG1_Z6_CNG3[3][1] = {{2},{1},{0}};
static const uint16_t circShift_BG1_Z10_CNG3[3][1] = {{3},{5},{0}};
static const uint16_t circShift_BG1_Z14_CNG3[3][1] = {{2},{10},{0}};
static const uint16_t circShift_BG1_Z18_CNG3[3][1] = {{12},{1},{0}};
static const uint16_t circShift_BG1_Z22_CNG3[3][1] = {{20},{14},{0}};
static const uint16_t circShift_BG1_Z26_CNG3[3][1] = {{24},{22},{0}};
static const uint16_t circShift_BG1_Z30_CNG3[3][1] = {{4},{1},{0}};
static const uint16_t circShift_BG1_Z8_CNG3[3][1] = {{5},{6},{0}};
static const uint16_t circShift_BG1_Z12_CNG3[3][1] = {{8},{1},{0}};
static const uint16_t circShift_BG1_Z20_CNG3[3][1] = {{13},{5},{0}};
static const uint16_t circShift_BG1_Z28_CNG3[3][1] = {{2},{10},{0}};
static const uint16_t circShift_BG1_Z36_CNG3[3][1] = {{30},{19},{0}};
static const uint16_t circShift_BG1_Z44_CNG3[3][1] = {{42},{36},{0}};
static const uint16_t circShift_BG1_Z52_CNG3[3][1] = {{24},{48},{0}};
static const uint16_t circShift_BG1_Z60_CNG3[3][1] = {{4},{31},{0}};
static const uint16_t circShift_BG1_Z16_CNG3[3][1] = {{13},{6},{0}};
static const uint16_t circShift_BG1_Z24_CNG3[3][1] = {{20},{13},{0}};
static const uint16_t circShift_BG1_Z40_CNG3[3][1] = {{33},{5},{0}};
static const uint16_t circShift_BG1_Z56_CNG3[3][1] = {{2},{10},{0}};
static const uint16_t circShift_BG1_Z72_CNG3[3][1] = {{30},{19},{0}};
static const uint16_t circShift_BG1_Z88_CNG3[3][1] = {{42},{80},{0}};
static const uint16_t circShift_BG1_Z104_CNG3[3][1] = {{24},{100},{0}};
static const uint16_t circShift_BG1_Z120_CNG3[3][1] = {{64},{91},{0}};
static const uint16_t circShift_BG1_Z32_CNG3[3][1] = {{29},{6},{0}};
static const uint16_t circShift_BG1_Z48_CNG3[3][1] = {{44},{37},{0}};
static const uint16_t circShift_BG1_Z80_CNG3[3][1] = {{73},{45},{0}};
static const uint16_t circShift_BG1_Z112_CNG3[3][1] = {{58},{10},{0}};
static const uint16_t circShift_BG1_Z144_CNG3[3][1] = {{102},{91},{0}};
static const uint16_t circShift_BG1_Z176_CNG3[3][1] = {{42},{80},{0}};
static const uint16_t circShift_BG1_Z208_CNG3[3][1] = {{24},{204},{0}};
static const uint16_t circShift_BG1_Z240_CNG3[3][1] = {{64},{211},{0}};
static const uint16_t circShift_BG1_Z64_CNG3[3][1] = {{29},{38},{0}};
static const uint16_t circShift_BG1_Z96_CNG3[3][1] = {{44},{85},{0}};
static const uint16_t circShift_BG1_Z160_CNG3[3][1] = {{73},{45},{0}};
static const uint16_t circShift_BG1_Z224_CNG3[3][1] = {{170},{10},{0}};
static const uint16_t circShift_BG1_Z288_CNG3[3][1] = {{246},{235},{0}};
static const uint16_t circShift_BG1_Z352_CNG3[3][1] = {{42},{256},{0}};
static const uint16_t circShift_BG1_Z128_CNG3[3][1] = {{29},{102},{0}};
static const uint16_t circShift_BG1_Z192_CNG3[3][1] = {{140},{181},{0}};
static const uint16_t circShift_BG1_Z320_CNG3[3][1] = {{233},{205},{0}};
static const uint16_t circShift_BG1_Z256_CNG3[3][1] = {{157},{102},{0}};
static const uint16_t circShift_BG1_Z384_CNG3[3][1] = {{332},{181},{0}};
// Group of CNs with 4 BNs (CNG4) ->[Num BNs][Num of CN with 4 BNs]
static const uint16_t circShift_BG1_Z2_CNG4[4][5] = {{1, 0, 1, 1, 1},{0, 0, 1, 1, 1},{0, 0, 1, 1, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z3_CNG4[4][5] = {{2, 2, 1, 2, 0},{2, 1, 1, 2, 2},{2, 1, 0, 2, 0},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z5_CNG4[4][5] = {{0, 3, 2, 1, 1},{4, 0, 0, 0, 3},{4, 0, 2, 1, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z7_CNG4[4][5] = {{5, 4, 4, 2, 2},{1, 6, 3, 0, 2},{6, 5, 5, 1, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z9_CNG4[4][5] = {{0, 0, 0, 0, 6},{0, 0, 0, 0, 0},{0, 0, 2, 8, 0},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z11_CNG4[4][5] = {{3, 0, 7, 2, 5},{7, 5, 6, 6, 1},{4, 8, 3, 6, 4},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z13_CNG4[4][5] = {{7, 4, 10, 7, 12},{10, 2, 6, 10, 6},{9, 5, 12, 6, 10},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z15_CNG4[4][5] = {{0, 14, 4, 12, 12},{7, 9, 13, 5, 9},{9, 11, 0, 11, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z4_CNG4[4][5] = {{1, 2, 1, 1, 1},{0, 0, 1, 1, 3},{2, 2, 1, 1, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z6_CNG4[4][5] = {{2, 5, 1, 5, 3},{2, 4, 1, 2, 5},{5, 1, 0, 2, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z10_CNG4[4][5] = {{0, 8, 2, 6, 1},{9, 5, 0, 5, 8},{4, 5, 7, 6, 6},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z14_CNG4[4][5] = {{12, 11, 11, 2, 2},{1, 13, 3, 7, 9},{6, 12, 12, 8, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z18_CNG4[4][5] = {{9, 0, 0, 9, 6},{0, 0, 0, 0, 0},{0, 0, 2, 17, 0},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z22_CNG4[4][5] = {{3, 11, 18, 2, 16},{18, 16, 17, 17, 1},{4, 19, 3, 17, 15},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z26_CNG4[4][5] = {{20, 4, 10, 7, 25},{10, 2, 6, 10, 19},{22, 5, 12, 6, 23},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z30_CNG4[4][5] = {{15, 29, 4, 12, 27},{22, 24, 13, 20, 24},{9, 11, 0, 11, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z8_CNG4[4][5] = {{1, 6, 5, 5, 5},{0, 4, 1, 5, 7},{2, 2, 5, 1, 7},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z12_CNG4[4][5] = {{2, 5, 7, 5, 3},{2, 10, 1, 2, 5},{5, 7, 0, 2, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z20_CNG4[4][5] = {{10, 18, 12, 6, 1},{9, 15, 0, 5, 8},{4, 15, 17, 6, 6},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z28_CNG4[4][5] = {{12, 25, 11, 2, 16},{1, 27, 17, 7, 9},{6, 26, 12, 22, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z36_CNG4[4][5] = {{9, 0, 0, 27, 24},{0, 0, 0, 0, 0},{0, 0, 2, 35, 0},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z44_CNG4[4][5] = {{3, 11, 40, 24, 38},{18, 16, 17, 39, 23},{4, 41, 3, 17, 15},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z52_CNG4[4][5] = {{46, 30, 10, 7, 25},{36, 2, 32, 10, 45},{22, 31, 12, 6, 49},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z60_CNG4[4][5] = {{45, 59, 4, 42, 57},{52, 24, 43, 50, 54},{9, 41, 30, 11, 33},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z16_CNG4[4][5] = {{9, 6, 13, 5, 5},{8, 12, 9, 13, 7},{2, 10, 5, 9, 7},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z24_CNG4[4][5] = {{2, 5, 7, 17, 15},{2, 10, 13, 14, 5},{5, 19, 0, 2, 15},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z40_CNG4[4][5] = {{10, 18, 32, 26, 21},{29, 15, 0, 25, 28},{24, 35, 37, 6, 6},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z56_CNG4[4][5] = {{40, 25, 11, 2, 16},{29, 27, 45, 35, 9},{6, 26, 40, 22, 29},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z72_CNG4[4][5] = {{45, 0, 0, 27, 24},{36, 0, 0, 0, 0},{0, 0, 2, 35, 0},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z88_CNG4[4][5] = {{3, 55, 40, 24, 82},{62, 60, 61, 83, 67},{4, 85, 47, 17, 59},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z104_CNG4[4][5] = {{98, 82, 10, 59, 77},{36, 2, 84, 10, 45},{22, 31, 12, 58, 49},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z120_CNG4[4][5] = {{45, 59, 4, 102, 57},{112, 84, 103, 50, 114},{9, 41, 30, 71, 93},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z32_CNG4[4][5] = {{25, 6, 29, 21, 21},{8, 28, 9, 29, 23},{2, 26, 21, 9, 7},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z48_CNG4[4][5] = {{2, 29, 31, 17, 39},{2, 34, 37, 14, 5},{5, 19, 24, 26, 15},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z80_CNG4[4][5] = {{50, 58, 32, 66, 21},{29, 15, 0, 65, 68},{64, 35, 37, 46, 46},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z112_CNG4[4][5] = {{96, 81, 67, 2, 72},{29, 83, 45, 91, 9},{62, 26, 96, 78, 29},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z144_CNG4[4][5] = {{45, 72, 72, 27, 24},{36, 0, 0, 0, 0},{72, 0, 2, 35, 0},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z176_CNG4[4][5] = {{91, 143, 128, 112, 82},{150, 60, 61, 83, 67},{92, 85, 135, 17, 59},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z208_CNG4[4][5] = {{98, 82, 10, 163, 181},{140, 2, 84, 10, 45},{22, 135, 12, 162, 153},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z240_CNG4[4][5] = {{165, 59, 4, 222, 177},{232, 204, 103, 170, 114},{9, 161, 30, 71, 93},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z64_CNG4[4][5] = {{25, 6, 29, 21, 21},{40, 28, 9, 29, 23},{2, 58, 21, 9, 39},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z96_CNG4[4][5] = {{2, 77, 79, 17, 39},{2, 82, 37, 14, 53},{5, 19, 24, 26, 15},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z160_CNG4[4][5] = {{50, 138, 32, 66, 101},{29, 15, 80, 65, 68},{144, 115, 37, 126, 126},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z224_CNG4[4][5] = {{208, 81, 67, 114, 184},{141, 195, 45, 91, 121},{174, 138, 96, 78, 29},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z288_CNG4[4][5] = {{45, 72, 216, 27, 168},{36, 144, 144, 0, 0},{72, 0, 2, 35, 144},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z352_CNG4[4][5] = {{91, 319, 304, 288, 82},{326, 236, 237, 83, 67},{268, 85, 135, 17, 235},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z128_CNG4[4][5] = {{25, 70, 29, 21, 21},{104, 92, 9, 29, 23},{66, 122, 21, 9, 39},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z192_CNG4[4][5] = {{2, 77, 175, 113, 135},{2, 82, 37, 14, 149},{101, 115, 120, 26, 15},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z320_CNG4[4][5] = {{210, 298, 32, 226, 101},{29, 15, 80, 65, 228},{304, 115, 197, 126, 126},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z256_CNG4[4][5] = {{25, 198, 157, 149, 149},{104, 220, 137, 157, 151},{194, 122, 149, 137, 167},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z384_CNG4[4][5] = {{194, 269, 175, 113, 135},{194, 82, 37, 14, 149},{101, 115, 312, 218, 15},{0, 0, 0, 0, 0}};
// Group of CNs with 5 BNs (CNG5) ->[Num BNs][Num of CN with 5 BNs]
static const uint16_t circShift_BG1_Z2_CNG5[5][18] = {{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1},{0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1},{0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1},{0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z3_CNG5[5][18] = {{0, 0, 0, 2, 0, 0, 0, 1, 0, 2, 2, 2, 0, 2, 0, 1, 2, 2},{2, 2, 2, 0, 1, 2, 1, 2, 0, 2, 1, 2, 1, 0, 0, 2, 0, 0},{2, 1, 2, 1, 1, 0, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1},{1, 0, 0, 1, 1, 0, 0, 1, 2, 0, 0, 2, 0, 1, 0, 0, 0, 1},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z5_CNG5[5][18] = {{2, 4, 2, 0, 1, 2, 1, 2, 0, 0, 2, 2, 4, 1, 2, 4, 3, 4},{0, 0, 0, 0, 3, 3, 3, 3, 2, 0, 1, 3, 4, 4, 2, 2, 4, 2},{0, 3, 1, 3, 0, 2, 0, 1, 1, 0, 0, 0, 3, 4, 2, 4, 1, 4},{1, 0, 1, 2, 4, 4, 0, 2, 2, 3, 4, 0, 0, 1, 3, 2, 2, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z7_CNG5[5][18] = {{4, 4, 1, 2, 6, 3, 6, 0, 3, 2, 5, 3, 5, 4, 5, 2, 3, 0},{0, 0, 5, 1, 6, 4, 4, 0, 6, 0, 4, 5, 3, 6, 0, 5, 1, 4},{3, 0, 2, 2, 0, 4, 0, 2, 2, 0, 5, 5, 0, 3, 0, 4, 1, 2},{1, 3, 4, 1, 2, 5, 4, 2, 2, 4, 3, 5, 6, 3, 2, 6, 0, 5},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z9_CNG5[5][18] = {{0, 0, 7, 0, 5, 0, 0, 0, 0, 0, 8, 1, 0, 1, 0, 0, 7, 0},{0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 7, 0, 0, 0, 0, 0},{0, 0, 0, 0, 2, 0, 0, 4, 0, 4, 0, 0, 0, 0, 3, 0, 0, 0},{5, 3, 3, 7, 8, 6, 2, 1, 0, 0, 0, 7, 0, 0, 0, 3, 0, 3},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z11_CNG5[5][18] = {{5, 7, 4, 6, 3, 9, 6, 2, 10, 1, 5, 1, 3, 10, 5, 2, 1, 2},{3, 6, 2, 7, 1, 5, 5, 0, 1, 7, 1, 1, 4, 9, 0, 0, 3, 2},{5, 5, 1, 6, 7, 1, 7, 4, 8, 9, 2, 8, 2, 0, 4, 3, 9, 7},{3, 7, 10, 0, 2, 8, 3, 2, 6, 2, 10, 4, 1, 4, 8, 8, 2, 8},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z13_CNG5[5][18] = {{5, 6, 4, 8, 4, 1, 2, 4, 6, 10, 4, 4, 6, 0, 4, 2, 1, 4},{6, 5, 9, 12, 1, 6, 10, 10, 9, 4, 10, 6, 5, 12, 2, 10, 7, 6},{0, 2, 3, 10, 1, 2, 8, 8, 11, 6, 2, 12, 8, 3, 5, 12, 8, 12},{1, 9, 2, 2, 2, 6, 7, 12, 7, 1, 12, 3, 4, 9, 6, 11, 7, 3},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z15_CNG5[5][18] = {{10, 5, 12, 13, 2, 7, 5, 13, 13, 4, 11, 6, 11, 1, 10, 8, 7, 11},{2, 7, 6, 11, 13, 2, 4, 14, 5, 12, 12, 9, 12, 0, 8, 9, 7, 1},{6, 12, 11, 4, 5, 13, 11, 10, 1, 7, 7, 10, 12, 11, 3, 5, 4, 7},{13, 4, 1, 8, 10, 13, 0, 3, 1, 5, 0, 10, 10, 5, 7, 9, 5, 13},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z4_CNG5[5][18] = {{0, 0, 3, 3, 0, 2, 0, 3, 1, 2, 3, 1, 1, 3, 1, 3, 3, 3},{2, 3, 0, 3, 1, 0, 1, 1, 0, 3, 3, 1, 1, 3, 3, 1, 3, 1},{0, 2, 0, 3, 1, 0, 0, 0, 3, 1, 0, 3, 3, 1, 1, 3, 1, 3},{2, 0, 2, 1, 3, 2, 1, 1, 1, 3, 3, 3, 0, 3, 0, 3, 3, 1},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z6_CNG5[5][18] = {{0, 0, 0, 5, 0, 0, 3, 4, 0, 5, 2, 2, 0, 5, 0, 4, 5, 2},{5, 5, 5, 3, 1, 5, 1, 5, 3, 2, 4, 5, 1, 3, 3, 2, 0, 0},{5, 1, 5, 4, 4, 3, 2, 0, 1, 1, 4, 2, 3, 1, 4, 1, 0, 1},{4, 3, 0, 4, 4, 0, 0, 4, 5, 3, 0, 2, 3, 4, 3, 0, 0, 4},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z10_CNG5[5][18] = {{7, 9, 2, 0, 1, 7, 1, 2, 0, 0, 7, 7, 9, 1, 2, 4, 8, 4},{0, 0, 5, 0, 3, 8, 3, 8, 2, 0, 6, 8, 9, 9, 7, 7, 9, 7},{5, 3, 6, 8, 0, 7, 5, 6, 1, 0, 5, 5, 8, 4, 2, 4, 6, 9},{6, 5, 6, 7, 4, 9, 5, 2, 7, 3, 4, 5, 0, 1, 8, 7, 2, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z14_CNG5[5][18] = {{11, 4, 1, 9, 6, 10, 6, 7, 10, 2, 12, 10, 12, 11, 12, 9, 10, 0},{0, 7, 12, 8, 13, 11, 4, 7, 13, 7, 4, 5, 3, 6, 7, 5, 8, 4},{3, 0, 9, 2, 7, 11, 0, 9, 2, 7, 12, 12, 0, 3, 7, 4, 8, 9},{8, 10, 11, 1, 2, 12, 11, 2, 2, 11, 10, 5, 6, 10, 2, 13, 7, 12},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z18_CNG5[5][18] = {{0, 0, 7, 0, 5, 0, 0, 0, 0, 0, 17, 1, 0, 10, 9, 0, 16, 0},{9, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 8, 16, 0, 0, 0, 9, 0},{0, 0, 0, 0, 11, 0, 0, 4, 0, 4, 0, 0, 0, 0, 3, 0, 0, 0},{5, 3, 3, 7, 8, 6, 11, 1, 0, 0, 0, 7, 0, 0, 9, 3, 0, 3},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z22_CNG5[5][18] = {{16, 18, 15, 17, 14, 9, 17, 13, 21, 12, 16, 12, 3, 10, 16, 13, 12, 13},{3, 6, 13, 18, 1, 16, 16, 11, 1, 18, 12, 12, 15, 20, 0, 11, 3, 2},{16, 5, 1, 6, 18, 1, 7, 15, 8, 9, 2, 19, 13, 11, 15, 3, 9, 7},{3, 18, 10, 11, 13, 19, 14, 2, 17, 13, 10, 4, 12, 4, 8, 8, 13, 8},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z26_CNG5[5][18] = {{18, 19, 4, 21, 4, 14, 2, 4, 6, 10, 4, 4, 6, 13, 4, 2, 1, 4},{6, 18, 22, 12, 1, 6, 10, 23, 22, 4, 23, 19, 18, 12, 2, 23, 7, 6},{0, 2, 16, 10, 14, 2, 8, 21, 11, 6, 15, 12, 21, 16, 5, 12, 21, 12},{1, 22, 2, 15, 15, 6, 20, 12, 20, 14, 25, 3, 17, 22, 6, 24, 20, 3},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z30_CNG5[5][18] = {{25, 5, 27, 13, 2, 22, 20, 13, 13, 19, 11, 21, 11, 1, 25, 23, 22, 11},{17, 7, 21, 11, 13, 2, 19, 29, 20, 12, 27, 24, 27, 0, 8, 9, 7, 1},{6, 27, 11, 19, 20, 28, 26, 25, 1, 22, 22, 25, 12, 26, 18, 5, 19, 7},{28, 19, 1, 8, 25, 13, 15, 18, 1, 5, 0, 10, 10, 20, 22, 24, 5, 28},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z8_CNG5[5][18] = {{0, 4, 7, 3, 0, 6, 0, 7, 5, 2, 7, 1, 5, 7, 5, 7, 7, 3},{6, 3, 0, 3, 5, 4, 1, 1, 0, 3, 7, 5, 1, 7, 3, 5, 3, 5},{4, 2, 4, 7, 5, 4, 0, 4, 7, 1, 4, 7, 3, 5, 5, 3, 5, 3},{6, 0, 6, 5, 7, 6, 1, 5, 1, 3, 7, 7, 0, 3, 0, 7, 3, 5},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z12_CNG5[5][18] = {{6, 0, 0, 11, 6, 0, 3, 4, 6, 11, 2, 8, 6, 5, 6, 4, 5, 8},{11, 5, 5, 9, 7, 5, 1, 11, 9, 8, 4, 11, 1, 9, 9, 2, 0, 6},{5, 1, 11, 4, 4, 3, 8, 6, 7, 1, 10, 2, 9, 1, 10, 7, 6, 7},{10, 3, 0, 4, 10, 6, 6, 4, 11, 9, 0, 2, 9, 10, 9, 0, 0, 10},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z20_CNG5[5][18] = {{17, 9, 12, 10, 11, 7, 11, 2, 10, 10, 7, 7, 19, 11, 2, 14, 8, 14},{0, 10, 15, 10, 13, 8, 3, 8, 2, 0, 16, 18, 19, 19, 17, 7, 9, 7},{15, 13, 16, 18, 10, 17, 5, 6, 11, 0, 5, 15, 18, 4, 12, 4, 16, 19},{16, 5, 6, 7, 14, 9, 15, 2, 17, 13, 4, 5, 0, 1, 8, 7, 2, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z28_CNG5[5][18] = {{25, 4, 1, 23, 6, 10, 6, 7, 24, 2, 26, 24, 26, 11, 12, 23, 10, 0},{0, 7, 26, 8, 13, 11, 18, 21, 13, 21, 18, 5, 17, 6, 21, 19, 22, 4},{3, 0, 9, 16, 21, 25, 14, 9, 2, 21, 12, 26, 0, 17, 21, 4, 22, 9},{8, 10, 25, 15, 2, 12, 11, 16, 2, 25, 10, 19, 6, 10, 2, 27, 21, 12},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z36_CNG5[5][18] = {{0, 0, 25, 0, 23, 0, 0, 0, 0, 0, 17, 19, 0, 10, 9, 0, 16, 18},{9, 0, 0, 0, 0, 0, 18, 0, 31, 0, 0, 26, 16, 0, 0, 0, 27, 0},{0, 0, 0, 0, 11, 0, 0, 22, 0, 4, 0, 0, 0, 0, 21, 0, 0, 0},{5, 21, 3, 25, 26, 6, 29, 19, 18, 18, 0, 25, 0, 0, 9, 3, 18, 21},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z44_CNG5[5][18] = {{16, 18, 15, 17, 14, 9, 39, 13, 43, 12, 16, 12, 3, 32, 16, 35, 34, 35},{25, 6, 35, 18, 1, 16, 16, 33, 1, 40, 12, 34, 15, 20, 0, 33, 3, 24},{16, 5, 23, 6, 40, 23, 7, 15, 30, 9, 24, 19, 35, 33, 37, 25, 9, 29},{25, 40, 10, 11, 35, 19, 36, 2, 39, 13, 10, 4, 12, 26, 8, 8, 35, 8},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z52_CNG5[5][18] = {{44, 45, 4, 21, 4, 40, 2, 4, 6, 10, 4, 4, 6, 39, 4, 2, 1, 4},{6, 18, 22, 38, 1, 32, 36, 49, 22, 30, 49, 45, 44, 12, 28, 23, 7, 6},{26, 28, 16, 36, 40, 2, 8, 21, 11, 6, 41, 12, 21, 42, 5, 38, 47, 38},{27, 48, 28, 41, 41, 6, 20, 38, 20, 40, 51, 29, 43, 48, 32, 24, 46, 3},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z60_CNG5[5][18] = {{25, 5, 27, 43, 32, 52, 50, 13, 43, 19, 41, 51, 11, 1, 55, 53, 22, 11},{47, 7, 21, 11, 43, 32, 19, 29, 50, 12, 57, 54, 27, 30, 8, 9, 7, 31},{6, 57, 11, 49, 20, 58, 26, 55, 31, 52, 22, 25, 42, 26, 48, 35, 49, 7},{58, 19, 1, 38, 25, 43, 45, 48, 31, 5, 0, 40, 40, 20, 52, 24, 5, 28},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z16_CNG5[5][18] = {{0, 12, 7, 3, 0, 6, 8, 15, 13, 2, 15, 1, 5, 7, 13, 7, 7, 11},{14, 3, 8, 3, 5, 12, 9, 1, 0, 11, 7, 5, 9, 7, 11, 13, 3, 13},{12, 10, 4, 7, 5, 4, 8, 12, 7, 9, 4, 15, 3, 13, 5, 11, 13, 3},{14, 8, 6, 13, 15, 6, 9, 13, 9, 3, 15, 7, 8, 3, 0, 7, 11, 13},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z24_CNG5[5][18] = {{6, 0, 0, 23, 6, 12, 15, 4, 6, 11, 14, 8, 18, 17, 18, 4, 17, 8},{11, 17, 17, 9, 19, 5, 13, 23, 9, 8, 4, 23, 1, 9, 21, 2, 12, 6},{17, 13, 23, 4, 4, 3, 20, 18, 7, 1, 10, 2, 9, 1, 10, 19, 18, 19},{22, 3, 0, 16, 10, 6, 18, 16, 23, 9, 0, 2, 21, 22, 9, 0, 0, 10},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z40_CNG5[5][18] = {{17, 9, 12, 30, 11, 27, 11, 22, 10, 10, 27, 7, 19, 31, 22, 34, 28, 34},{20, 10, 15, 30, 13, 28, 23, 28, 22, 20, 16, 38, 19, 19, 37, 7, 29, 27},{15, 13, 16, 38, 10, 37, 25, 26, 31, 20, 5, 15, 18, 24, 32, 4, 16, 19},{36, 25, 6, 27, 34, 29, 15, 2, 17, 33, 4, 5, 0, 21, 8, 7, 22, 20},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z56_CNG5[5][18] = {{53, 32, 1, 51, 34, 38, 34, 7, 24, 2, 26, 24, 54, 11, 12, 23, 38, 28},{0, 35, 54, 8, 41, 11, 18, 49, 41, 49, 18, 5, 45, 34, 21, 47, 22, 4},{3, 0, 9, 44, 49, 53, 42, 9, 2, 49, 12, 26, 0, 17, 49, 4, 22, 9},{36, 10, 25, 15, 2, 12, 11, 16, 30, 25, 38, 19, 6, 10, 2, 55, 49, 12},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z72_CNG5[5][18] = {{0, 36, 61, 0, 59, 0, 0, 0, 0, 0, 53, 55, 0, 46, 9, 0, 52, 18},{45, 0, 0, 0, 0, 36, 18, 0, 67, 0, 0, 62, 16, 0, 0, 0, 27, 0},{0, 0, 0, 0, 11, 0, 36, 22, 36, 4, 36, 0, 0, 0, 21, 0, 0, 0},{41, 21, 39, 61, 62, 42, 29, 19, 18, 18, 0, 61, 0, 0, 45, 39, 54, 57},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z88_CNG5[5][18] = {{16, 18, 15, 61, 14, 9, 83, 13, 87, 56, 60, 12, 47, 76, 60, 35, 34, 79},{69, 6, 79, 62, 1, 16, 16, 33, 1, 40, 56, 34, 15, 20, 0, 77, 3, 68},{60, 5, 23, 50, 40, 67, 7, 15, 74, 53, 24, 19, 35, 33, 37, 25, 53, 29},{25, 40, 54, 11, 79, 19, 36, 46, 83, 13, 54, 4, 12, 70, 8, 8, 79, 8},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z104_CNG5[5][18] = {{44, 45, 4, 21, 4, 92, 2, 4, 6, 10, 4, 4, 6, 91, 4, 2, 1, 4},{58, 18, 74, 38, 1, 32, 88, 49, 22, 30, 49, 45, 96, 64, 28, 75, 59, 6},{26, 28, 16, 88, 40, 2, 8, 21, 63, 6, 93, 64, 73, 94, 5, 38, 99, 38},{27, 100, 28, 93, 93, 6, 20, 90, 20, 92, 51, 81, 43, 100, 84, 24, 98, 3},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z120_CNG5[5][18] = {{25, 65, 27, 43, 32, 112, 50, 73, 103, 79, 41, 111, 11, 1, 115, 53, 22, 71},{47, 7, 21, 11, 43, 32, 79, 29, 110, 12, 117, 54, 87, 90, 68, 69, 7, 91},{6, 117, 11, 49, 80, 118, 26, 55, 31, 52, 22, 25, 42, 26, 48, 95, 49, 67},{58, 79, 61, 98, 85, 103, 105, 108, 91, 65, 60, 100, 100, 20, 52, 24, 5, 28},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z32_CNG5[5][18] = {{0, 28, 23, 3, 0, 22, 24, 31, 29, 2, 31, 1, 5, 7, 13, 7, 23, 11},{14, 19, 8, 19, 5, 12, 9, 17, 16, 27, 7, 5, 9, 23, 11, 13, 3, 29},{28, 10, 20, 23, 21, 20, 24, 12, 7, 9, 4, 15, 19, 29, 21, 11, 13, 3},{30, 24, 22, 29, 31, 6, 9, 29, 25, 19, 31, 7, 24, 3, 0, 23, 11, 13},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z48_CNG5[5][18] = {{30, 24, 24, 23, 30, 12, 15, 4, 6, 35, 38, 32, 18, 41, 18, 4, 17, 32},{11, 41, 17, 33, 19, 5, 37, 23, 9, 8, 4, 47, 25, 33, 45, 26, 36, 30},{41, 13, 47, 28, 4, 3, 20, 18, 31, 25, 10, 2, 9, 1, 10, 43, 18, 19},{22, 27, 24, 40, 34, 30, 42, 16, 47, 9, 24, 26, 21, 22, 9, 0, 24, 34},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z80_CNG5[5][18] = {{17, 9, 12, 30, 11, 27, 11, 62, 50, 10, 27, 47, 19, 71, 22, 74, 68, 74},{20, 50, 55, 30, 53, 68, 23, 68, 22, 20, 56, 78, 19, 19, 77, 47, 69, 67},{55, 53, 16, 78, 50, 37, 25, 66, 31, 60, 5, 55, 18, 64, 32, 44, 16, 19},{76, 25, 46, 67, 74, 29, 55, 2, 57, 33, 44, 45, 0, 21, 48, 47, 22, 20},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z112_CNG5[5][18] = {{53, 88, 1, 107, 34, 38, 34, 63, 80, 2, 82, 80, 110, 11, 12, 23, 94, 84},{0, 91, 54, 64, 41, 11, 18, 49, 97, 49, 74, 61, 45, 90, 77, 103, 22, 4},{3, 56, 65, 100, 105, 53, 98, 65, 58, 49, 68, 26, 0, 73, 49, 60, 22, 9},{36, 10, 81, 15, 2, 68, 11, 16, 30, 25, 38, 75, 6, 10, 2, 55, 49, 12},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z144_CNG5[5][18] = {{72, 36, 61, 0, 131, 0, 0, 0, 0, 0, 53, 55, 72, 46, 9, 0, 52, 18},{45, 0, 0, 0, 0, 36, 90, 0, 67, 0, 0, 134, 16, 0, 0, 0, 99, 0},{72, 0, 0, 0, 11, 0, 108, 22, 36, 76, 108, 0, 0, 0, 21, 0, 0, 0},{113, 21, 39, 133, 62, 42, 29, 19, 18, 18, 0, 61, 0, 0, 117, 39, 126, 57},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z176_CNG5[5][18] = {{104, 18, 103, 149, 102, 97, 171, 101, 175, 56, 60, 100, 135, 164, 60, 123, 34, 79},{157, 6, 79, 150, 1, 104, 16, 121, 89, 128, 144, 34, 15, 20, 88, 77, 3, 68},{60, 5, 111, 50, 40, 67, 95, 103, 162, 141, 112, 19, 35, 33, 37, 25, 53, 117},{113, 128, 54, 99, 167, 107, 36, 46, 83, 101, 54, 92, 12, 70, 96, 96, 167, 96},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z208_CNG5[5][18] = {{44, 45, 4, 21, 4, 92, 2, 4, 6, 10, 4, 4, 6, 91, 4, 2, 1, 4},{58, 18, 74, 142, 1, 136, 88, 49, 126, 30, 153, 45, 200, 64, 28, 75, 163, 6},{130, 132, 16, 192, 40, 106, 112, 125, 63, 6, 197, 168, 177, 198, 109, 142, 99, 142},{131, 100, 28, 197, 93, 6, 20, 194, 20, 92, 155, 185, 43, 100, 188, 128, 98, 3},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z240_CNG5[5][18] = {{25, 185, 27, 163, 32, 232, 170, 73, 103, 199, 161, 231, 11, 121, 115, 53, 22, 191},{47, 127, 141, 131, 43, 32, 199, 149, 110, 132, 237, 174, 207, 90, 188, 189, 127, 211},{126, 117, 11, 169, 200, 118, 26, 175, 151, 172, 142, 145, 42, 26, 168, 215, 49, 187},{178, 199, 181, 98, 205, 103, 105, 108, 211, 65, 180, 100, 100, 140, 52, 24, 125, 148},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z64_CNG5[5][18] = {{0, 28, 23, 3, 0, 22, 24, 31, 29, 2, 63, 33, 37, 39, 45, 39, 23, 11},{14, 19, 8, 51, 37, 44, 9, 49, 48, 59, 39, 5, 41, 23, 11, 45, 35, 29},{60, 42, 52, 23, 53, 20, 56, 44, 7, 41, 36, 15, 51, 29, 21, 11, 45, 35},{30, 24, 54, 61, 63, 6, 9, 61, 57, 19, 31, 39, 56, 35, 0, 23, 11, 45},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z96_CNG5[5][18] = {{30, 24, 72, 71, 30, 60, 63, 4, 6, 35, 38, 32, 18, 89, 66, 52, 17, 80},{11, 89, 17, 81, 19, 5, 37, 23, 9, 8, 52, 47, 25, 81, 93, 26, 36, 78},{41, 61, 95, 76, 52, 51, 68, 66, 79, 73, 10, 2, 9, 1, 58, 43, 18, 67},{22, 27, 24, 40, 82, 78, 90, 64, 95, 9, 24, 74, 21, 22, 9, 0, 72, 82},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z160_CNG5[5][18] = {{17, 89, 12, 110, 11, 27, 91, 62, 50, 10, 27, 47, 99, 151, 102, 154, 68, 74},{20, 50, 135, 110, 133, 148, 23, 148, 22, 20, 136, 158, 19, 19, 77, 47, 69, 67},{55, 133, 96, 158, 50, 117, 105, 66, 111, 140, 5, 55, 18, 64, 32, 124, 16, 99},{156, 105, 46, 67, 74, 29, 135, 2, 57, 33, 44, 125, 0, 21, 48, 47, 102, 100},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z224_CNG5[5][18] = {{53, 88, 1, 107, 146, 150, 34, 175, 192, 114, 82, 192, 222, 123, 12, 23, 206, 84},{0, 203, 166, 176, 153, 11, 130, 49, 209, 49, 186, 173, 157, 90, 77, 215, 22, 4},{3, 168, 65, 212, 217, 53, 210, 177, 58, 161, 68, 26, 0, 73, 49, 60, 134, 9},{148, 122, 81, 127, 114, 68, 123, 128, 30, 137, 150, 187, 6, 10, 114, 167, 161, 12},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z288_CNG5[5][18] = {{72, 180, 205, 0, 275, 0, 0, 144, 0, 0, 197, 199, 216, 190, 153, 0, 52, 18},{189, 0, 0, 0, 0, 180, 90, 144, 211, 0, 0, 278, 16, 0, 0, 0, 243, 0},{72, 0, 0, 0, 155, 0, 252, 166, 36, 76, 108, 0, 0, 0, 165, 0, 0, 0},{257, 165, 183, 277, 62, 42, 173, 19, 162, 18, 0, 205, 0, 0, 117, 183, 270, 57},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z352_CNG5[5][18] = {{280, 18, 279, 325, 102, 273, 171, 101, 351, 56, 60, 100, 135, 164, 236, 123, 210, 79},{157, 6, 255, 326, 1, 104, 16, 297, 265, 304, 320, 210, 15, 196, 264, 77, 3, 244},{236, 181, 111, 226, 40, 243, 95, 279, 338, 141, 112, 195, 35, 209, 37, 25, 53, 293},{113, 304, 54, 99, 167, 107, 212, 222, 83, 101, 54, 268, 188, 246, 272, 272, 167, 272},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z128_CNG5[5][18] = {{64, 28, 23, 67, 0, 86, 88, 95, 93, 2, 127, 33, 37, 39, 45, 39, 23, 11},{14, 19, 8, 115, 37, 108, 73, 49, 112, 59, 39, 69, 105, 23, 11, 45, 35, 29},{60, 42, 116, 87, 53, 84, 120, 44, 71, 41, 36, 79, 51, 29, 21, 11, 45, 35},{30, 24, 54, 61, 63, 6, 9, 61, 121, 83, 31, 103, 120, 35, 0, 23, 11, 45},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z192_CNG5[5][18] = {{30, 24, 72, 71, 30, 60, 159, 100, 102, 131, 38, 128, 18, 185, 66, 52, 113, 80},{11, 89, 17, 81, 19, 5, 37, 23, 9, 8, 148, 143, 121, 177, 93, 122, 132, 78},{41, 61, 191, 76, 52, 147, 68, 66, 175, 169, 10, 2, 105, 97, 154, 139, 114, 163},{22, 27, 120, 136, 82, 78, 90, 64, 95, 105, 120, 74, 21, 22, 105, 96, 168, 82},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z320_CNG5[5][18] = {{177, 249, 172, 270, 11, 27, 91, 222, 210, 170, 187, 207, 259, 151, 102, 154, 228, 234},{20, 50, 295, 110, 293, 308, 23, 308, 22, 20, 296, 158, 179, 179, 77, 47, 69, 227},{55, 133, 96, 318, 50, 117, 105, 66, 271, 140, 5, 55, 178, 64, 192, 124, 176, 259},{316, 105, 46, 67, 234, 29, 135, 162, 217, 33, 44, 285, 160, 181, 208, 207, 102, 260},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z256_CNG5[5][18] = {{64, 156, 23, 195, 128, 86, 216, 95, 221, 2, 127, 161, 37, 167, 173, 167, 151, 139},{142, 147, 136, 243, 165, 236, 73, 177, 112, 187, 167, 197, 105, 151, 139, 173, 163, 157},{188, 170, 116, 215, 181, 84, 120, 172, 199, 41, 164, 207, 51, 157, 149, 139, 173, 163},{158, 152, 182, 61, 63, 6, 9, 61, 121, 211, 159, 103, 120, 163, 0, 151, 139, 173},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z384_CNG5[5][18] = {{30, 24, 72, 71, 222, 252, 159, 100, 102, 323, 230, 320, 210, 185, 258, 52, 113, 80},{11, 89, 17, 81, 19, 5, 229, 215, 201, 8, 148, 335, 313, 177, 93, 314, 132, 78},{233, 61, 383, 76, 244, 147, 260, 258, 175, 361, 202, 2, 297, 289, 346, 139, 114, 163},{22, 27, 312, 136, 274, 78, 90, 256, 287, 105, 312, 266, 21, 214, 297, 288, 168, 274},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
// Group of CNs with 6 BNs (CNG6) ->[Num BNs][Num of CN with 6 BNs]
static const uint16_t circShift_BG1_Z2_CNG6[6][8] = {{1, 0, 1, 0, 0, 1, 1, 0},{0, 1, 0, 1, 1, 0, 1, 0},{1, 1, 1, 0, 0, 1, 1, 0},{1, 1, 1, 1, 1, 1, 1, 0},{0, 0, 0, 1, 0, 0, 1, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z3_CNG6[6][8] = {{1, 1, 2, 1, 1, 1, 1, 1},{0, 2, 0, 1, 0, 2, 0, 2},{2, 0, 0, 1, 2, 0, 1, 1},{1, 1, 1, 0, 2, 2, 0, 0},{1, 0, 0, 1, 2, 2, 1, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z5_CNG6[6][8] = {{4, 4, 2, 0, 4, 1, 4, 4},{2, 0, 2, 4, 1, 2, 0, 0},{3, 0, 3, 1, 1, 0, 2, 0},{0, 0, 1, 1, 0, 0, 3, 2},{2, 0, 3, 0, 1, 0, 3, 1},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z7_CNG6[6][8] = {{4, 0, 0, 3, 1, 0, 3, 0},{0, 3, 5, 5, 6, 0, 5, 3},{2, 1, 4, 4, 5, 2, 3, 1},{0, 0, 0, 3, 2, 4, 1, 4},{1, 3, 4, 4, 1, 1, 1, 5},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z9_CNG6[6][8] = {{6, 0, 0, 8, 0, 4, 1, 2},{0, 4, 2, 7, 0, 0, 1, 1},{0, 0, 0, 0, 1, 0, 5, 0},{2, 0, 0, 7, 0, 0, 0, 5},{0, 0, 0, 0, 0, 3, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z11_CNG6[6][8] = {{3, 3, 0, 3, 10, 1, 8, 5},{9, 7, 8, 0, 0, 10, 0, 5},{1, 2, 5, 4, 4, 1, 5, 7},{6, 1, 6, 5, 5, 2, 0, 2},{4, 4, 3, 7, 6, 8, 10, 7},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z13_CNG6[6][8] = {{0, 10, 0, 1, 12, 6, 6, 9},{4, 3, 2, 2, 6, 12, 8, 8},{1, 4, 4, 11, 10, 2, 5, 9},{3, 5, 3, 3, 2, 5, 3, 2},{7, 0, 12, 5, 9, 4, 4, 6},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z15_CNG6[6][8] = {{10, 3, 3, 3, 14, 2, 2, 2},{5, 2, 7, 5, 3, 7, 2, 13},{4, 9, 1, 0, 9, 8, 5, 2},{13, 5, 9, 8, 3, 2, 5, 6},{0, 10, 9, 14, 1, 10, 6, 13},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z4_CNG6[6][8] = {{1, 0, 3, 2, 0, 3, 1, 0},{0, 1, 0, 1, 1, 2, 1, 2},{3, 1, 3, 0, 0, 1, 1, 0},{1, 3, 1, 3, 3, 3, 3, 0},{2, 2, 0, 3, 0, 0, 3, 2},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z6_CNG6[6][8] = {{1, 1, 2, 4, 1, 1, 1, 4},{3, 2, 3, 1, 3, 2, 0, 2},{2, 3, 3, 4, 2, 0, 4, 1},{1, 1, 4, 0, 2, 5, 3, 3},{4, 3, 3, 4, 5, 5, 1, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z10_CNG6[6][8] = {{9, 9, 7, 0, 4, 1, 9, 9},{2, 0, 7, 4, 1, 2, 5, 0},{3, 5, 8, 1, 1, 0, 2, 0},{0, 5, 1, 1, 0, 0, 3, 7},{7, 0, 8, 5, 1, 0, 3, 1},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z14_CNG6[6][8] = {{11, 0, 0, 3, 8, 7, 10, 7},{0, 10, 12, 12, 6, 0, 5, 3},{2, 1, 4, 4, 5, 9, 10, 8},{7, 7, 7, 3, 2, 4, 8, 11},{8, 3, 4, 4, 8, 1, 8, 12},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z18_CNG6[6][8] = {{15, 0, 9, 17, 0, 13, 10, 2},{0, 13, 11, 7, 0, 9, 10, 1},{0, 9, 0, 0, 10, 0, 14, 0},{11, 0, 0, 7, 0, 0, 9, 14},{0, 0, 0, 0, 0, 12, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z22_CNG6[6][8] = {{3, 14, 0, 3, 21, 1, 8, 16},{9, 7, 8, 0, 0, 21, 0, 16},{1, 2, 5, 4, 15, 1, 16, 7},{6, 1, 6, 5, 16, 2, 11, 2},{15, 4, 14, 7, 6, 8, 21, 18},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z26_CNG6[6][8] = {{0, 10, 13, 1, 12, 6, 6, 9},{17, 16, 2, 15, 6, 12, 8, 21},{1, 4, 4, 11, 10, 15, 18, 9},{16, 18, 3, 16, 2, 5, 16, 2},{20, 0, 25, 18, 9, 4, 17, 6},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z30_CNG6[6][8] = {{10, 18, 3, 3, 29, 17, 17, 2},{5, 2, 22, 5, 18, 7, 2, 28},{4, 24, 16, 0, 9, 23, 5, 2},{28, 5, 9, 23, 18, 17, 5, 6},{0, 25, 9, 14, 16, 10, 6, 28},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z8_CNG6[6][8] = {{1, 0, 7, 2, 4, 7, 1, 0},{0, 1, 4, 1, 1, 2, 1, 6},{7, 1, 3, 0, 0, 1, 5, 4},{1, 3, 1, 3, 7, 7, 3, 4},{6, 2, 0, 3, 0, 0, 3, 6},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z12_CNG6[6][8] = {{1, 1, 8, 10, 1, 7, 1, 10},{9, 2, 3, 7, 9, 2, 6, 2},{2, 9, 9, 4, 8, 0, 4, 7},{7, 1, 10, 0, 2, 5, 9, 3},{10, 9, 3, 4, 5, 11, 1, 6},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z20_CNG6[6][8] = {{19, 9, 17, 0, 4, 1, 19, 9},{2, 0, 7, 14, 1, 2, 15, 0},{3, 5, 8, 11, 1, 0, 12, 10},{0, 15, 11, 1, 10, 10, 3, 7},{17, 0, 8, 15, 1, 10, 3, 1},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z28_CNG6[6][8] = {{25, 14, 0, 3, 8, 21, 24, 21},{0, 24, 26, 26, 6, 14, 19, 17},{16, 15, 4, 4, 19, 9, 24, 8},{21, 21, 7, 3, 2, 18, 22, 25},{22, 17, 4, 18, 8, 15, 22, 12},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z36_CNG6[6][8] = {{15, 18, 9, 17, 0, 13, 28, 20},{0, 13, 29, 7, 0, 9, 10, 19},{0, 27, 0, 0, 10, 18, 14, 0},{11, 18, 0, 25, 0, 0, 9, 14},{0, 0, 18, 0, 0, 12, 18, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z44_CNG6[6][8] = {{3, 14, 22, 3, 43, 1, 30, 38},{31, 29, 8, 22, 22, 21, 0, 38},{1, 24, 27, 26, 15, 23, 38, 29},{6, 23, 28, 5, 38, 24, 11, 24},{37, 26, 14, 29, 28, 30, 21, 18},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z52_CNG6[6][8] = {{0, 36, 39, 1, 12, 6, 6, 9},{43, 42, 28, 41, 6, 12, 34, 21},{1, 4, 30, 11, 10, 15, 44, 35},{16, 18, 3, 16, 28, 5, 42, 28},{46, 26, 51, 44, 35, 30, 43, 6},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z60_CNG6[6][8] = {{40, 18, 3, 3, 59, 17, 17, 32},{5, 32, 52, 35, 48, 7, 2, 58},{34, 24, 46, 0, 39, 23, 35, 2},{58, 5, 39, 23, 18, 47, 5, 36},{30, 25, 9, 14, 16, 10, 36, 58},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z16_CNG6[6][8] = {{1, 0, 7, 10, 12, 7, 9, 0},{8, 1, 4, 9, 9, 10, 9, 6},{7, 1, 11, 8, 8, 9, 13, 12},{9, 3, 1, 11, 15, 15, 3, 4},{14, 10, 0, 3, 0, 0, 11, 14},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z24_CNG6[6][8] = {{1, 13, 20, 10, 1, 19, 13, 10},{9, 2, 15, 19, 21, 14, 6, 14},{2, 9, 9, 16, 8, 0, 16, 19},{19, 1, 22, 12, 2, 5, 21, 3},{10, 9, 15, 4, 5, 11, 1, 18},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z40_CNG6[6][8] = {{39, 29, 17, 20, 24, 21, 39, 9},{22, 20, 27, 14, 21, 2, 15, 0},{23, 5, 8, 11, 21, 0, 12, 30},{0, 35, 11, 21, 30, 10, 3, 27},{37, 20, 28, 15, 1, 10, 23, 1},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z56_CNG6[6][8] = {{25, 42, 0, 31, 8, 49, 24, 49},{0, 52, 54, 54, 6, 42, 19, 45},{16, 43, 32, 32, 47, 9, 52, 8},{49, 21, 7, 31, 30, 46, 50, 25},{22, 45, 4, 18, 8, 15, 50, 12},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z72_CNG6[6][8] = {{15, 54, 9, 17, 0, 49, 64, 20},{0, 13, 65, 7, 0, 9, 46, 55},{0, 27, 0, 0, 46, 18, 50, 0},{47, 54, 0, 25, 0, 0, 9, 50},{36, 0, 18, 0, 0, 12, 18, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z88_CNG6[6][8] = {{47, 14, 22, 47, 87, 1, 74, 38},{75, 29, 52, 22, 22, 65, 0, 82},{1, 68, 71, 70, 59, 67, 82, 73},{6, 67, 28, 5, 82, 68, 55, 24},{81, 26, 14, 73, 28, 30, 21, 18},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z104_CNG6[6][8] = {{52, 88, 91, 1, 12, 6, 6, 9},{43, 94, 80, 41, 6, 12, 86, 21},{1, 56, 30, 63, 62, 15, 96, 87},{16, 18, 3, 68, 80, 5, 42, 28},{46, 78, 51, 44, 87, 30, 95, 6},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z120_CNG6[6][8] = {{100, 78, 63, 63, 59, 77, 77, 32},{65, 32, 112, 95, 108, 67, 2, 58},{34, 84, 106, 60, 39, 83, 95, 2},{58, 5, 99, 23, 18, 47, 65, 36},{30, 85, 9, 14, 76, 10, 96, 58},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z32_CNG6[6][8] = {{17, 0, 7, 10, 28, 23, 25, 16},{24, 17, 4, 9, 9, 26, 25, 22},{23, 17, 27, 8, 8, 25, 13, 12},{25, 19, 1, 27, 31, 15, 3, 20},{30, 26, 16, 19, 0, 0, 11, 30},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z48_CNG6[6][8] = {{25, 13, 20, 34, 1, 43, 13, 10},{33, 2, 15, 19, 21, 14, 6, 14},{26, 9, 33, 40, 8, 24, 40, 43},{19, 1, 22, 36, 2, 5, 21, 3},{34, 9, 39, 4, 5, 11, 1, 42},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z80_CNG6[6][8] = {{39, 69, 17, 20, 64, 61, 79, 49},{62, 60, 67, 54, 21, 2, 15, 40},{63, 45, 48, 51, 21, 40, 52, 30},{0, 35, 51, 61, 30, 50, 43, 27},{37, 60, 68, 55, 41, 10, 23, 41},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z112_CNG6[6][8] = {{81, 42, 56, 87, 8, 105, 80, 49},{56, 52, 110, 110, 6, 98, 19, 45},{72, 43, 88, 88, 103, 9, 108, 64},{105, 77, 63, 31, 86, 102, 50, 81},{78, 101, 4, 74, 8, 71, 106, 12},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z144_CNG6[6][8] = {{87, 126, 9, 17, 0, 121, 64, 92},{0, 13, 137, 7, 0, 81, 46, 55},{72, 99, 0, 0, 118, 90, 122, 0},{47, 54, 0, 97, 0, 0, 9, 122},{36, 0, 18, 0, 0, 84, 18, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z176_CNG6[6][8] = {{135, 14, 110, 47, 87, 89, 162, 38},{75, 117, 52, 110, 110, 65, 88, 170},{89, 156, 71, 70, 147, 155, 170, 73},{94, 155, 116, 5, 82, 68, 143, 112},{81, 114, 14, 73, 28, 30, 109, 18},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z208_CNG6[6][8] = {{52, 88, 91, 1, 12, 6, 6, 9},{147, 198, 184, 41, 6, 12, 86, 125},{1, 160, 30, 167, 166, 15, 96, 191},{16, 122, 3, 68, 184, 5, 42, 28},{46, 182, 155, 148, 191, 30, 199, 6},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z240_CNG6[6][8] = {{220, 78, 183, 183, 179, 77, 197, 32},{185, 152, 112, 215, 108, 187, 122, 178},{154, 84, 106, 180, 159, 203, 215, 2},{178, 5, 219, 143, 138, 167, 65, 156},{150, 205, 129, 14, 196, 130, 216, 58},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z64_CNG6[6][8] = {{49, 0, 7, 42, 60, 23, 57, 48},{56, 49, 36, 41, 9, 58, 57, 22},{23, 49, 59, 8, 8, 25, 45, 44},{57, 51, 1, 27, 63, 47, 3, 52},{62, 26, 16, 19, 32, 32, 43, 30},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z96_CNG6[6][8] = {{25, 13, 68, 34, 49, 91, 13, 10},{81, 50, 15, 67, 21, 14, 6, 62},{74, 57, 81, 88, 56, 72, 40, 43},{19, 1, 70, 36, 50, 53, 21, 51},{82, 57, 87, 4, 5, 59, 1, 42},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z160_CNG6[6][8] = {{39, 69, 97, 100, 64, 141, 79, 129},{142, 140, 147, 134, 21, 2, 15, 120},{143, 45, 128, 131, 101, 40, 132, 110},{0, 115, 51, 141, 110, 130, 123, 27},{37, 140, 68, 135, 41, 10, 103, 121},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z224_CNG6[6][8] = {{81, 154, 56, 199, 8, 105, 192, 49},{56, 164, 110, 110, 6, 210, 131, 157},{72, 43, 200, 200, 103, 121, 220, 64},{217, 189, 63, 143, 198, 214, 50, 193},{78, 101, 4, 186, 8, 183, 106, 124},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z288_CNG6[6][8] = {{231, 270, 153, 161, 0, 265, 64, 236},{0, 13, 137, 151, 0, 81, 46, 199},{216, 99, 0, 0, 118, 90, 266, 0},{47, 54, 0, 241, 144, 144, 9, 266},{36, 0, 162, 144, 0, 228, 18, 0},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z352_CNG6[6][8] = {{311, 190, 110, 47, 87, 89, 162, 38},{251, 293, 228, 286, 110, 65, 264, 170},{265, 332, 247, 246, 147, 155, 346, 249},{94, 331, 116, 181, 258, 244, 143, 288},{81, 114, 190, 73, 204, 30, 109, 194},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z128_CNG6[6][8] = {{49, 64, 7, 42, 60, 23, 121, 112},{120, 49, 36, 105, 73, 58, 121, 86},{23, 49, 59, 8, 72, 89, 109, 108},{57, 51, 1, 27, 127, 47, 3, 116},{62, 26, 16, 19, 96, 32, 43, 94},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z192_CNG6[6][8] = {{121, 13, 68, 130, 145, 187, 13, 106},{177, 146, 111, 163, 21, 14, 102, 158},{74, 57, 81, 88, 152, 72, 136, 43},{115, 97, 166, 132, 50, 149, 21, 147},{178, 57, 183, 4, 5, 59, 97, 42},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z320_CNG6[6][8] = {{39, 69, 257, 260, 64, 301, 79, 289},{302, 140, 147, 294, 181, 162, 175, 280},{303, 45, 128, 291, 101, 40, 132, 110},{160, 115, 51, 141, 270, 130, 283, 187},{37, 300, 228, 295, 41, 10, 103, 281},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z256_CNG6[6][8] = {{177, 64, 7, 42, 60, 151, 249, 112},{248, 49, 164, 233, 73, 186, 121, 86},{151, 49, 59, 8, 72, 217, 109, 236},{185, 51, 1, 155, 127, 47, 131, 116},{62, 154, 144, 147, 224, 160, 171, 222},{0, 0, 0, 0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z384_CNG6[6][8] = {{313, 13, 260, 130, 145, 187, 205, 298},{177, 338, 303, 163, 213, 206, 102, 158},{266, 57, 81, 280, 344, 264, 328, 235},{115, 289, 358, 132, 242, 341, 213, 339},{370, 57, 375, 4, 197, 59, 97, 234},{0, 0, 0, 0, 0, 0, 0, 0}};
// Group of CNs with 7 BNs (CNG7) ->[Num BNs][Num of CN with 7 BNs]
static const uint16_t circShift_BG1_Z2_CNG7[7][5] = {{0, 0, 0, 0, 0},{0, 1, 0, 1, 0},{1, 1, 1, 0, 1},{1, 0, 0, 1, 1},{1, 1, 0, 0, 1},{0, 0, 1, 1, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z3_CNG7[7][5] = {{0, 2, 2, 1, 1},{2, 0, 0, 2, 2},{1, 1, 0, 2, 0},{0, 0, 1, 2, 0},{2, 2, 2, 2, 1},{0, 0, 2, 0, 2},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z5_CNG7[7][5] = {{2, 4, 4, 3, 4},{3, 0, 0, 4, 0},{2, 1, 4, 4, 0},{0, 0, 3, 1, 0},{0, 1, 0, 4, 4},{1, 1, 2, 3, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z7_CNG7[7][5] = {{3, 5, 2, 0, 6},{6, 4, 0, 0, 1},{6, 6, 3, 1, 5},{2, 5, 3, 2, 6},{3, 5, 0, 2, 6},{4, 5, 0, 1, 4},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z9_CNG7[7][5] = {{7, 7, 0, 0, 8},{0, 1, 0, 6, 0},{1, 1, 1, 1, 3},{4, 6, 7, 7, 0},{5, 0, 4, 0, 5},{2, 3, 0, 7, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z11_CNG7[7][5] = {{3, 10, 2, 0, 0},{4, 0, 8, 3, 7},{4, 5, 10, 2, 4},{0, 0, 0, 2, 4},{6, 5, 0, 0, 0},{6, 3, 10, 1, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z13_CNG7[7][5] = {{2, 9, 6, 1, 4},{10, 12, 7, 7, 6},{8, 0, 8, 1, 3},{10, 3, 10, 0, 0},{3, 12, 0, 1, 1},{11, 5, 12, 2, 7},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z15_CNG7[7][5] = {{2, 11, 6, 4, 9},{11, 1, 5, 9, 3},{14, 10, 4, 2, 10},{2, 5, 0, 5, 8},{1, 10, 8, 12, 7},{3, 9, 5, 1, 4},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z4_CNG7[7][5] = {{0, 2, 0, 2, 0},{0, 1, 2, 3, 0},{3, 3, 1, 2, 1},{3, 0, 0, 3, 3},{3, 1, 2, 0, 3},{0, 2, 3, 1, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z6_CNG7[7][5] = {{3, 5, 5, 4, 1},{2, 3, 0, 2, 2},{4, 4, 0, 5, 0},{3, 3, 4, 5, 0},{2, 5, 2, 5, 1},{0, 0, 2, 0, 5},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z10_CNG7[7][5] = {{2, 4, 9, 8, 9},{8, 0, 5, 9, 0},{7, 1, 9, 4, 0},{0, 5, 8, 1, 0},{5, 1, 5, 9, 4},{6, 1, 2, 8, 1},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z14_CNG7[7][5] = {{3, 12, 2, 0, 6},{6, 11, 7, 7, 8},{6, 6, 10, 1, 5},{2, 5, 3, 9, 13},{10, 12, 0, 9, 13},{4, 5, 0, 1, 11},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z18_CNG7[7][5] = {{7, 16, 9, 0, 8},{9, 1, 0, 6, 0},{10, 10, 10, 1, 3},{4, 15, 7, 16, 0},{14, 0, 4, 0, 14},{2, 3, 9, 7, 10},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z22_CNG7[7][5] = {{3, 21, 13, 0, 0},{15, 11, 19, 14, 18},{4, 5, 10, 13, 15},{11, 11, 0, 2, 15},{17, 5, 0, 0, 0},{17, 3, 10, 12, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z26_CNG7[7][5] = {{15, 22, 6, 1, 17},{10, 25, 20, 20, 6},{8, 0, 21, 14, 3},{23, 16, 23, 0, 0},{3, 12, 0, 1, 1},{24, 18, 25, 2, 20},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z30_CNG7[7][5] = {{17, 26, 6, 4, 9},{26, 1, 5, 24, 18},{29, 10, 4, 2, 10},{2, 20, 0, 5, 23},{16, 25, 8, 12, 22},{18, 24, 20, 16, 19},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z8_CNG7[7][5] = {{4, 2, 0, 6, 0},{4, 5, 2, 7, 0},{7, 7, 5, 6, 1},{7, 0, 0, 7, 7},{7, 1, 2, 0, 3},{0, 2, 7, 5, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z12_CNG7[7][5] = {{9, 5, 5, 10, 1},{2, 3, 6, 8, 2},{4, 10, 6, 5, 6},{9, 3, 4, 5, 6},{2, 11, 2, 11, 7},{6, 6, 2, 0, 5},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z20_CNG7[7][5] = {{12, 14, 9, 18, 9},{8, 0, 15, 19, 10},{7, 11, 9, 14, 0},{10, 15, 8, 1, 10},{5, 1, 5, 19, 4},{16, 11, 12, 18, 11},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z28_CNG7[7][5] = {{17, 26, 2, 14, 6},{20, 25, 7, 7, 8},{20, 6, 24, 15, 19},{16, 19, 3, 23, 13},{10, 26, 0, 23, 13},{18, 19, 14, 15, 25},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z36_CNG7[7][5] = {{25, 34, 9, 0, 26},{9, 1, 18, 6, 0},{10, 28, 28, 1, 3},{4, 15, 7, 16, 0},{32, 18, 22, 0, 32},{20, 21, 27, 7, 28},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z44_CNG7[7][5] = {{3, 43, 35, 22, 0},{15, 33, 41, 14, 40},{4, 27, 10, 13, 15},{33, 11, 22, 24, 37},{39, 5, 0, 22, 0},{39, 3, 32, 34, 25},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z52_CNG7[7][5] = {{41, 22, 6, 1, 17},{36, 25, 20, 46, 6},{8, 0, 47, 14, 29},{49, 16, 49, 26, 26},{3, 12, 0, 1, 1},{24, 18, 51, 2, 46},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z60_CNG7[7][5] = {{17, 56, 6, 4, 39},{26, 31, 35, 24, 18},{29, 10, 4, 2, 40},{32, 50, 0, 35, 53},{46, 55, 38, 12, 22},{18, 24, 20, 16, 49},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z16_CNG7[7][5] = {{12, 2, 0, 14, 8},{12, 5, 10, 7, 0},{15, 7, 5, 14, 1},{15, 0, 0, 15, 15},{7, 1, 10, 0, 11},{8, 10, 7, 5, 3},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z24_CNG7[7][5] = {{9, 5, 5, 22, 1},{14, 3, 18, 8, 2},{4, 10, 6, 17, 18},{21, 15, 16, 17, 6},{2, 23, 2, 11, 7},{18, 18, 2, 12, 5},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z40_CNG7[7][5] = {{12, 14, 29, 38, 29},{8, 0, 35, 19, 10},{7, 11, 9, 14, 20},{10, 35, 8, 21, 10},{25, 1, 25, 19, 24},{36, 31, 12, 18, 11},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z56_CNG7[7][5] = {{17, 26, 30, 14, 34},{20, 53, 7, 7, 8},{48, 6, 24, 43, 19},{44, 19, 3, 23, 41},{38, 26, 28, 51, 41},{46, 47, 14, 43, 25},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z72_CNG7[7][5] = {{25, 34, 9, 0, 26},{45, 1, 18, 42, 0},{10, 28, 28, 37, 39},{40, 51, 7, 16, 36},{32, 18, 22, 0, 68},{20, 57, 27, 7, 64},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z88_CNG7[7][5] = {{3, 87, 35, 22, 0},{15, 77, 41, 58, 84},{48, 27, 54, 13, 15},{33, 55, 22, 68, 81},{39, 49, 0, 66, 0},{39, 3, 76, 78, 25},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z104_CNG7[7][5] = {{41, 22, 6, 1, 69},{88, 77, 20, 98, 6},{8, 52, 99, 14, 81},{49, 16, 49, 26, 78},{55, 12, 0, 1, 53},{76, 70, 103, 2, 46},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z120_CNG7[7][5] = {{77, 116, 66, 4, 39},{26, 31, 95, 24, 18},{89, 70, 4, 62, 100},{32, 110, 60, 95, 53},{46, 115, 98, 72, 22},{18, 84, 80, 76, 49},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z32_CNG7[7][5] = {{28, 2, 0, 14, 8},{12, 21, 10, 23, 0},{31, 7, 21, 14, 1},{31, 0, 0, 31, 31},{7, 17, 10, 16, 11},{8, 26, 7, 5, 19},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z48_CNG7[7][5] = {{9, 5, 29, 46, 1},{14, 3, 42, 8, 2},{28, 34, 30, 41, 18},{45, 15, 40, 41, 30},{2, 47, 2, 11, 7},{18, 18, 26, 12, 29},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z80_CNG7[7][5] = {{12, 14, 69, 78, 69},{8, 0, 75, 59, 50},{47, 51, 9, 54, 60},{50, 75, 48, 61, 50},{25, 1, 25, 19, 24},{76, 71, 52, 18, 51},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z112_CNG7[7][5] = {{17, 82, 30, 14, 90},{76, 53, 63, 63, 8},{104, 62, 24, 99, 19},{100, 19, 3, 79, 97},{38, 82, 28, 51, 97},{46, 103, 70, 43, 81},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z144_CNG7[7][5] = {{25, 34, 81, 0, 26},{45, 1, 18, 42, 0},{10, 28, 100, 109, 39},{40, 123, 7, 16, 108},{104, 90, 94, 0, 68},{20, 57, 99, 79, 64},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z176_CNG7[7][5] = {{3, 175, 123, 22, 0},{103, 77, 41, 146, 172},{48, 27, 142, 101, 15},{121, 55, 110, 156, 81},{39, 49, 0, 66, 0},{39, 91, 76, 78, 113},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z208_CNG7[7][5] = {{145, 126, 6, 1, 173},{88, 77, 20, 202, 6},{112, 156, 203, 118, 81},{153, 16, 153, 130, 182},{159, 12, 104, 1, 53},{76, 70, 207, 2, 46},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z240_CNG7[7][5] = {{77, 116, 186, 124, 39},{146, 151, 215, 144, 138},{209, 70, 124, 182, 220},{32, 230, 180, 95, 173},{166, 115, 98, 72, 142},{18, 84, 80, 76, 49},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z64_CNG7[7][5] = {{28, 34, 32, 14, 40},{44, 21, 42, 55, 32},{31, 39, 21, 14, 1},{31, 32, 32, 63, 63},{39, 49, 42, 16, 11},{40, 58, 7, 37, 51},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z96_CNG7[7][5] = {{9, 5, 77, 46, 49},{62, 51, 90, 56, 2},{28, 82, 78, 41, 18},{45, 15, 40, 89, 30},{2, 95, 50, 59, 55},{18, 66, 74, 12, 77},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z160_CNG7[7][5] = {{12, 14, 69, 78, 69},{88, 80, 75, 139, 130},{47, 51, 9, 54, 60},{50, 75, 48, 61, 130},{25, 1, 105, 19, 24},{76, 151, 52, 98, 51},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z224_CNG7[7][5] = {{17, 82, 142, 14, 90},{76, 165, 175, 175, 120},{104, 174, 136, 211, 131},{100, 19, 3, 191, 209},{150, 194, 28, 51, 209},{158, 103, 182, 43, 81},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z288_CNG7[7][5] = {{169, 178, 225, 0, 170},{189, 1, 162, 186, 0},{154, 28, 244, 253, 183},{184, 267, 151, 16, 108},{104, 234, 238, 0, 68},{164, 201, 243, 79, 64},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z352_CNG7[7][5] = {{3, 175, 123, 22, 176},{103, 253, 217, 322, 348},{224, 27, 142, 277, 15},{297, 231, 110, 156, 81},{215, 49, 176, 66, 176},{39, 267, 76, 78, 113},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z128_CNG7[7][5] = {{92, 98, 32, 78, 40},{44, 21, 42, 55, 96},{31, 39, 21, 78, 65},{31, 32, 32, 127, 63},{39, 49, 106, 16, 75},{104, 58, 7, 101, 51},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z192_CNG7[7][5] = {{9, 101, 77, 142, 49},{62, 147, 186, 56, 2},{124, 82, 174, 137, 18},{141, 111, 40, 89, 126},{98, 191, 50, 155, 55},{114, 162, 74, 12, 77},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z320_CNG7[7][5] = {{12, 14, 229, 78, 229},{88, 80, 235, 299, 290},{207, 211, 169, 54, 60},{50, 75, 48, 61, 130},{25, 161, 105, 179, 184},{76, 311, 52, 258, 51},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z256_CNG7[7][5] = {{220, 98, 160, 206, 40},{44, 149, 42, 55, 96},{159, 167, 21, 206, 65},{31, 160, 32, 127, 63},{167, 49, 234, 16, 75},{104, 58, 7, 229, 179},{0, 0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z384_CNG7[7][5] = {{9, 101, 77, 142, 241},{62, 339, 186, 248, 2},{316, 274, 174, 137, 210},{333, 111, 232, 89, 318},{290, 383, 50, 347, 55},{114, 354, 74, 12, 269},{0, 0, 0, 0, 0}};
// Group of CNs with 8 BNs (CNG8) ->[Num BNs][Num of CN with 8 BNs]
static const uint16_t circShift_BG1_Z2_CNG8[8][2] = {{1, 1},{0, 1},{0, 1},{1, 0},{0, 0},{1, 0},{1, 0},{0, 0}};
static const uint16_t circShift_BG1_Z3_CNG8[8][2] = {{0, 0},{2, 0},{1, 2},{1, 2},{1, 2},{0, 1},{1, 1},{0, 0}};
static const uint16_t circShift_BG1_Z5_CNG8[8][2] = {{3, 1},{2, 2},{0, 0},{3, 4},{1, 2},{2, 3},{4, 0},{0, 0}};
static const uint16_t circShift_BG1_Z7_CNG8[8][2] = {{3, 3},{3, 4},{2, 2},{3, 0},{0, 4},{4, 0},{6, 5},{0, 0}};
static const uint16_t circShift_BG1_Z9_CNG8[8][2] = {{0, 1},{1, 5},{0, 4},{4, 1},{2, 3},{7, 3},{0, 8},{0, 0}};
static const uint16_t circShift_BG1_Z11_CNG8[8][2] = {{10, 3},{9, 3},{9, 2},{3, 10},{9, 1},{5, 8},{8, 5},{0, 0}};
static const uint16_t circShift_BG1_Z13_CNG8[8][2] = {{3, 2},{9, 12},{11, 6},{0, 3},{12, 0},{5, 5},{7, 7},{0, 0}};
static const uint16_t circShift_BG1_Z15_CNG8[8][2] = {{2, 0},{6, 10},{2, 14},{8, 1},{0, 2},{0, 0},{0, 2},{0, 0}};
static const uint16_t circShift_BG1_Z4_CNG8[8][2] = {{1, 1},{0, 1},{2, 3},{3, 2},{0, 2},{3, 0},{3, 2},{0, 0}};
static const uint16_t circShift_BG1_Z6_CNG8[8][2] = {{3, 0},{2, 0},{1, 2},{4, 5},{1, 2},{3, 4},{1, 1},{0, 0}};
static const uint16_t circShift_BG1_Z10_CNG8[8][2] = {{3, 6},{2, 7},{0, 0},{8, 9},{1, 7},{7, 3},{9, 0},{0, 0}};
static const uint16_t circShift_BG1_Z14_CNG8[8][2] = {{10, 10},{3, 11},{2, 2},{10, 7},{0, 4},{4, 0},{13, 5},{0, 0}};
static const uint16_t circShift_BG1_Z18_CNG8[8][2] = {{9, 1},{1, 5},{0, 4},{13, 1},{2, 3},{7, 3},{0, 8},{0, 0}};
static const uint16_t circShift_BG1_Z22_CNG8[8][2] = {{21, 3},{20, 14},{9, 2},{14, 21},{9, 12},{16, 8},{19, 16},{0, 0}};
static const uint16_t circShift_BG1_Z26_CNG8[8][2] = {{3, 2},{22, 12},{24, 19},{13, 16},{25, 0},{5, 5},{20, 20},{0, 0}};
static const uint16_t circShift_BG1_Z30_CNG8[8][2] = {{2, 15},{21, 25},{17, 14},{23, 1},{0, 2},{0, 15},{0, 17},{0, 0}};
static const uint16_t circShift_BG1_Z8_CNG8[8][2] = {{5, 5},{4, 1},{2, 3},{7, 6},{4, 6},{3, 4},{3, 6},{0, 0}};
static const uint16_t circShift_BG1_Z12_CNG8[8][2] = {{3, 0},{2, 6},{7, 8},{10, 11},{1, 8},{3, 10},{1, 7},{0, 0}};
static const uint16_t circShift_BG1_Z20_CNG8[8][2] = {{3, 16},{12, 7},{10, 10},{18, 9},{1, 17},{7, 3},{19, 0},{0, 0}};
static const uint16_t circShift_BG1_Z28_CNG8[8][2] = {{24, 24},{3, 11},{2, 2},{24, 7},{14, 4},{18, 0},{13, 5},{0, 0}};
static const uint16_t circShift_BG1_Z36_CNG8[8][2] = {{9, 19},{1, 23},{0, 22},{31, 1},{2, 21},{7, 3},{0, 26},{0, 0}};
static const uint16_t circShift_BG1_Z44_CNG8[8][2] = {{43, 25},{42, 14},{31, 24},{14, 43},{31, 34},{38, 30},{19, 16},{0, 0}};
static const uint16_t circShift_BG1_Z52_CNG8[8][2] = {{29, 28},{48, 38},{24, 19},{13, 16},{51, 0},{5, 5},{20, 20},{0, 0}};
static const uint16_t circShift_BG1_Z60_CNG8[8][2] = {{2, 45},{51, 55},{47, 14},{23, 1},{30, 32},{0, 45},{0, 47},{0, 0}};
static const uint16_t circShift_BG1_Z16_CNG8[8][2] = {{13, 13},{12, 9},{2, 3},{7, 6},{12, 14},{11, 12},{3, 6},{0, 0}};
static const uint16_t circShift_BG1_Z24_CNG8[8][2] = {{3, 0},{14, 6},{19, 8},{22, 23},{1, 20},{3, 22},{13, 19},{0, 0}};
static const uint16_t circShift_BG1_Z40_CNG8[8][2] = {{3, 16},{12, 27},{10, 10},{38, 9},{1, 17},{27, 3},{39, 0},{0, 0}};
static const uint16_t circShift_BG1_Z56_CNG8[8][2] = {{52, 52},{3, 11},{30, 2},{24, 35},{14, 32},{18, 28},{41, 33},{0, 0}};
static const uint16_t circShift_BG1_Z72_CNG8[8][2] = {{45, 55},{37, 23},{0, 58},{67, 37},{38, 57},{7, 39},{0, 26},{0, 0}};
static const uint16_t circShift_BG1_Z88_CNG8[8][2] = {{43, 25},{42, 58},{75, 24},{58, 87},{31, 78},{82, 74},{19, 16},{0, 0}};
static const uint16_t circShift_BG1_Z104_CNG8[8][2] = {{81, 80},{100, 90},{24, 19},{65, 16},{103, 0},{57, 5},{72, 20},{0, 0}};
static const uint16_t circShift_BG1_Z120_CNG8[8][2] = {{2, 45},{51, 115},{47, 14},{23, 1},{90, 32},{60, 45},{60, 107},{0, 0}};
static const uint16_t circShift_BG1_Z32_CNG8[8][2] = {{13, 13},{12, 9},{2, 19},{7, 22},{28, 14},{27, 28},{19, 22},{0, 0}};
static const uint16_t circShift_BG1_Z48_CNG8[8][2] = {{3, 0},{14, 6},{19, 8},{22, 47},{1, 44},{3, 46},{13, 19},{0, 0}};
static const uint16_t circShift_BG1_Z80_CNG8[8][2] = {{3, 16},{52, 67},{50, 50},{78, 49},{41, 17},{27, 43},{39, 40},{0, 0}};
static const uint16_t circShift_BG1_Z112_CNG8[8][2] = {{52, 52},{59, 11},{86, 2},{80, 35},{70, 32},{18, 84},{41, 89},{0, 0}};
static const uint16_t circShift_BG1_Z144_CNG8[8][2] = {{117, 55},{37, 23},{72, 130},{139, 37},{110, 129},{79, 39},{0, 26},{0, 0}};
static const uint16_t circShift_BG1_Z176_CNG8[8][2] = {{43, 25},{130, 146},{75, 24},{146, 175},{119, 166},{82, 162},{107, 16},{0, 0}};
static const uint16_t circShift_BG1_Z208_CNG8[8][2] = {{185, 184},{100, 194},{24, 123},{65, 16},{207, 104},{161, 109},{72, 124},{0, 0}};
static const uint16_t circShift_BG1_Z240_CNG8[8][2] = {{2, 45},{171, 115},{47, 134},{143, 1},{210, 152},{180, 165},{180, 107},{0, 0}};
static const uint16_t circShift_BG1_Z64_CNG8[8][2] = {{13, 13},{44, 41},{2, 19},{39, 54},{28, 14},{59, 60},{51, 22},{0, 0}};
static const uint16_t circShift_BG1_Z96_CNG8[8][2] = {{3, 48},{14, 6},{19, 8},{70, 47},{49, 92},{51, 46},{61, 19},{0, 0}};
static const uint16_t circShift_BG1_Z160_CNG8[8][2] = {{83, 16},{132, 147},{50, 130},{158, 129},{41, 17},{107, 43},{119, 120},{0, 0}};
static const uint16_t circShift_BG1_Z224_CNG8[8][2] = {{164, 52},{59, 11},{86, 2},{80, 35},{182, 32},{130, 84},{153, 201},{0, 0}};
static const uint16_t circShift_BG1_Z288_CNG8[8][2] = {{261, 55},{181, 23},{72, 274},{283, 181},{254, 273},{79, 39},{144, 26},{0, 0}};
static const uint16_t circShift_BG1_Z352_CNG8[8][2] = {{219, 25},{130, 322},{251, 200},{322, 351},{295, 166},{258, 338},{283, 192},{0, 0}};
static const uint16_t circShift_BG1_Z128_CNG8[8][2] = {{77, 77},{108, 41},{66, 83},{103, 54},{28, 78},{123, 124},{115, 22},{0, 0}};
static const uint16_t circShift_BG1_Z192_CNG8[8][2] = {{3, 48},{14, 102},{115, 8},{166, 47},{49, 188},{51, 142},{157, 115},{0, 0}};
static const uint16_t circShift_BG1_Z320_CNG8[8][2] = {{83, 16},{292, 147},{50, 290},{318, 289},{201, 177},{267, 43},{279, 280},{0, 0}};
static const uint16_t circShift_BG1_Z256_CNG8[8][2] = {{205, 77},{236, 41},{194, 83},{231, 182},{28, 78},{123, 252},{115, 22},{0, 0}};
static const uint16_t circShift_BG1_Z384_CNG8[8][2] = {{195, 48},{14, 102},{115, 8},{166, 47},{241, 188},{51, 334},{157, 115},{0, 0}};
// Group of CNs with 9 BNs (CNG9) ->[Num BNs][Num of CN with 9 BNs]
static const uint16_t circShift_BG1_Z2_CNG9[9][2] = {{1, 1},{0, 0},{0, 1},{1, 1},{0, 0},{1, 0},{1, 1},{1, 0},{0, 0}};
static const uint16_t circShift_BG1_Z3_CNG9[9][2] = {{2, 0},{2, 1},{1, 0},{0, 1},{2, 0},{1, 0},{0, 0},{0, 1},{0, 0}};
static const uint16_t circShift_BG1_Z5_CNG9[9][2] = {{4, 4},{1, 4},{3, 1},{3, 1},{2, 1},{2, 2},{3, 0},{0, 4},{0, 0}};
static const uint16_t circShift_BG1_Z7_CNG9[9][2] = {{4, 2},{0, 2},{1, 3},{0, 0},{0, 5},{2, 3},{3, 4},{4, 1},{0, 0}};
static const uint16_t circShift_BG1_Z9_CNG9[9][2] = {{8, 0},{0, 6},{7, 3},{0, 8},{5, 0},{6, 6},{7, 4},{0, 2},{0, 0}};
static const uint16_t circShift_BG1_Z11_CNG9[9][2] = {{8, 2},{7, 0},{0, 7},{0, 1},{7, 4},{7, 9},{9, 1},{8, 7},{0, 0}};
static const uint16_t circShift_BG1_Z13_CNG9[9][2] = {{6, 6},{1, 10},{7, 2},{11, 1},{9, 6},{11, 4},{12, 8},{0, 4},{0, 0}};
static const uint16_t circShift_BG1_Z15_CNG9[9][2] = {{4, 4},{7, 12},{8, 11},{10, 11},{2, 2},{12, 2},{7, 2},{13, 10},{0, 0}};
static const uint16_t circShift_BG1_Z4_CNG9[9][2] = {{3, 3},{2, 2},{0, 1},{3, 1},{0, 2},{3, 2},{1, 1},{3, 0},{0, 0}};
static const uint16_t circShift_BG1_Z6_CNG9[9][2] = {{2, 0},{5, 4},{1, 3},{3, 1},{2, 3},{1, 3},{0, 3},{3, 4},{0, 0}};
static const uint16_t circShift_BG1_Z10_CNG9[9][2] = {{9, 9},{1, 4},{3, 6},{3, 6},{2, 1},{2, 7},{8, 5},{5, 9},{0, 0}};
static const uint16_t circShift_BG1_Z14_CNG9[9][2] = {{4, 9},{7, 9},{1, 3},{7, 7},{7, 5},{9, 3},{10, 11},{4, 8},{0, 0}};
static const uint16_t circShift_BG1_Z18_CNG9[9][2] = {{8, 0},{0, 15},{7, 3},{0, 8},{5, 9},{15, 6},{7, 4},{0, 11},{0, 0}};
static const uint16_t circShift_BG1_Z22_CNG9[9][2] = {{8, 2},{7, 0},{0, 7},{11, 1},{18, 4},{18, 20},{20, 1},{19, 7},{0, 0}};
static const uint16_t circShift_BG1_Z26_CNG9[9][2] = {{6, 6},{1, 10},{7, 15},{24, 1},{22, 19},{24, 4},{12, 8},{13, 17},{0, 0}};
static const uint16_t circShift_BG1_Z30_CNG9[9][2] = {{19, 19},{22, 12},{23, 26},{10, 11},{2, 17},{27, 2},{22, 2},{13, 25},{0, 0}};
static const uint16_t circShift_BG1_Z8_CNG9[9][2] = {{7, 7},{6, 6},{4, 5},{3, 5},{4, 6},{3, 6},{5, 5},{3, 0},{0, 0}};
static const uint16_t circShift_BG1_Z12_CNG9[9][2] = {{2, 6},{5, 4},{1, 9},{3, 1},{8, 9},{1, 3},{6, 3},{9, 10},{0, 0}};
static const uint16_t circShift_BG1_Z20_CNG9[9][2] = {{9, 9},{1, 4},{13, 16},{13, 6},{12, 11},{2, 7},{18, 15},{15, 9},{0, 0}};
static const uint16_t circShift_BG1_Z28_CNG9[9][2] = {{18, 9},{7, 9},{1, 17},{21, 21},{7, 5},{23, 17},{24, 25},{4, 22},{0, 0}};
static const uint16_t circShift_BG1_Z36_CNG9[9][2] = {{8, 18},{0, 15},{25, 21},{18, 26},{23, 9},{33, 24},{7, 4},{0, 29},{0, 0}};
static const uint16_t circShift_BG1_Z44_CNG9[9][2] = {{30, 24},{29, 0},{22, 29},{11, 23},{40, 4},{18, 20},{20, 23},{41, 29},{0, 0}};
static const uint16_t circShift_BG1_Z52_CNG9[9][2] = {{6, 6},{27, 10},{7, 41},{50, 1},{48, 45},{24, 4},{38, 8},{39, 17},{0, 0}};
static const uint16_t circShift_BG1_Z60_CNG9[9][2] = {{19, 49},{22, 12},{23, 26},{40, 41},{32, 17},{27, 32},{52, 32},{13, 25},{0, 0}};
static const uint16_t circShift_BG1_Z16_CNG9[9][2] = {{7, 7},{6, 6},{12, 13},{3, 5},{4, 14},{11, 14},{13, 13},{3, 8},{0, 0}};
static const uint16_t circShift_BG1_Z24_CNG9[9][2] = {{14, 6},{17, 16},{1, 9},{15, 13},{20, 9},{13, 15},{18, 15},{9, 10},{0, 0}};
static const uint16_t circShift_BG1_Z40_CNG9[9][2] = {{9, 29},{21, 4},{13, 36},{13, 6},{32, 31},{22, 27},{18, 15},{35, 9},{0, 0}};
static const uint16_t circShift_BG1_Z56_CNG9[9][2] = {{46, 9},{7, 37},{1, 45},{21, 49},{7, 33},{51, 17},{24, 53},{4, 50},{0, 0}};
static const uint16_t circShift_BG1_Z72_CNG9[9][2] = {{8, 18},{0, 15},{25, 21},{18, 62},{59, 45},{33, 60},{7, 4},{36, 65},{0, 0}};
static const uint16_t circShift_BG1_Z88_CNG9[9][2] = {{30, 68},{73, 0},{66, 29},{11, 23},{84, 4},{62, 64},{20, 23},{41, 73},{0, 0}};
static const uint16_t circShift_BG1_Z104_CNG9[9][2] = {{6, 6},{27, 10},{59, 41},{50, 53},{48, 97},{24, 4},{38, 60},{91, 69},{0, 0}};
static const uint16_t circShift_BG1_Z120_CNG9[9][2] = {{79, 49},{22, 12},{23, 86},{100, 101},{92, 17},{87, 92},{52, 92},{13, 85},{0, 0}};
static const uint16_t circShift_BG1_Z32_CNG9[9][2] = {{23, 7},{22, 22},{28, 13},{3, 21},{20, 14},{11, 14},{29, 29},{19, 24},{0, 0}};
static const uint16_t circShift_BG1_Z48_CNG9[9][2] = {{38, 30},{17, 40},{1, 33},{15, 37},{44, 9},{13, 15},{18, 15},{33, 34},{0, 0}};
static const uint16_t circShift_BG1_Z80_CNG9[9][2] = {{49, 29},{21, 4},{53, 36},{13, 46},{72, 71},{62, 27},{58, 55},{75, 49},{0, 0}};
static const uint16_t circShift_BG1_Z112_CNG9[9][2] = {{46, 9},{7, 37},{1, 101},{21, 105},{63, 89},{51, 73},{24, 109},{4, 106},{0, 0}};
static const uint16_t circShift_BG1_Z144_CNG9[9][2] = {{80, 18},{0, 15},{25, 93},{90, 134},{59, 45},{33, 132},{7, 76},{108, 65},{0, 0}};
static const uint16_t circShift_BG1_Z176_CNG9[9][2] = {{118, 156},{73, 88},{154, 117},{99, 111},{172, 92},{150, 152},{108, 23},{129, 161},{0, 0}};
static const uint16_t circShift_BG1_Z208_CNG9[9][2] = {{6, 6},{27, 10},{163, 145},{50, 53},{48, 201},{24, 4},{38, 164},{91, 173},{0, 0}};
static const uint16_t circShift_BG1_Z240_CNG9[9][2] = {{199, 169},{22, 12},{23, 206},{100, 221},{92, 17},{207, 212},{52, 92},{13, 205},{0, 0}};
static const uint16_t circShift_BG1_Z64_CNG9[9][2] = {{55, 39},{22, 54},{28, 45},{3, 21},{52, 14},{11, 14},{29, 61},{19, 24},{0, 0}};
static const uint16_t circShift_BG1_Z96_CNG9[9][2] = {{86, 78},{65, 40},{1, 33},{63, 37},{92, 57},{61, 15},{18, 63},{33, 82},{0, 0}};
static const uint16_t circShift_BG1_Z160_CNG9[9][2] = {{129, 29},{21, 84},{133, 36},{13, 126},{72, 151},{142, 107},{138, 135},{75, 49},{0, 0}};
static const uint16_t circShift_BG1_Z224_CNG9[9][2] = {{158, 9},{119, 37},{113, 213},{21, 105},{63, 89},{51, 185},{136, 109},{116, 218},{0, 0}};
static const uint16_t circShift_BG1_Z288_CNG9[9][2] = {{80, 162},{144, 159},{169, 93},{90, 134},{59, 45},{177, 132},{151, 76},{108, 209},{0, 0}};
static const uint16_t circShift_BG1_Z352_CNG9[9][2] = {{294, 156},{73, 88},{330, 293},{99, 111},{172, 92},{150, 152},{284, 23},{305, 337},{0, 0}};
static const uint16_t circShift_BG1_Z128_CNG9[9][2] = {{55, 103},{22, 54},{28, 109},{67, 21},{116, 14},{11, 14},{29, 61},{83, 88},{0, 0}};
static const uint16_t circShift_BG1_Z192_CNG9[9][2] = {{86, 174},{65, 40},{1, 129},{159, 133},{92, 57},{61, 111},{18, 63},{33, 82},{0, 0}};
static const uint16_t circShift_BG1_Z320_CNG9[9][2] = {{289, 189},{21, 244},{293, 36},{13, 286},{232, 151},{302, 267},{138, 135},{235, 209},{0, 0}};
static const uint16_t circShift_BG1_Z256_CNG9[9][2] = {{183, 103},{22, 182},{28, 109},{67, 21},{244, 142},{11, 14},{157, 61},{211, 216},{0, 0}};
static const uint16_t circShift_BG1_Z384_CNG9[9][2] = {{278, 366},{257, 232},{1, 321},{351, 133},{92, 57},{253, 303},{18, 63},{225, 82},{0, 0}};
// Group of CNs with 10 BNs (CNG10) ->[Num BNs][Num of CN with 10 BNs]
static const uint16_t circShift_BG1_Z2_CNG10[10][1] = {{0},{0},{1},{1},{0},{0},{1},{1},{0},{0}};
static const uint16_t circShift_BG1_Z3_CNG10[10][1] = {{1},{2},{0},{0},{0},{2},{2},{1},{2},{0}};
static const uint16_t circShift_BG1_Z5_CNG10[10][1] = {{0},{3},{0},{1},{1},{0},{4},{0},{4},{0}};
static const uint16_t circShift_BG1_Z7_CNG10[10][1] = {{5},{4},{4},{0},{1},{4},{2},{2},{5},{0}};
static const uint16_t circShift_BG1_Z9_CNG10[10][1] = {{0},{0},{0},{5},{8},{1},{6},{5},{0},{0}};
static const uint16_t circShift_BG1_Z11_CNG10[10][1] = {{7},{9},{0},{4},{4},{6},{4},{6},{2},{0}};
static const uint16_t circShift_BG1_Z13_CNG10[10][1] = {{3},{2},{1},{11},{5},{8},{10},{9},{12},{0}};
static const uint16_t circShift_BG1_Z15_CNG10[10][1] = {{1},{0},{6},{13},{12},{10},{4},{3},{8},{0}};
static const uint16_t circShift_BG1_Z4_CNG10[10][1] = {{0},{0},{3},{3},{2},{0},{1},{1},{2},{0}};
static const uint16_t circShift_BG1_Z6_CNG10[10][1] = {{1},{5},{3},{0},{3},{2},{2},{1},{2},{0}};
static const uint16_t circShift_BG1_Z10_CNG10[10][1] = {{5},{3},{0},{1},{6},{0},{9},{5},{4},{0}};
static const uint16_t circShift_BG1_Z14_CNG10[10][1] = {{5},{11},{4},{7},{8},{11},{2},{2},{5},{0}};
static const uint16_t circShift_BG1_Z18_CNG10[10][1] = {{0},{0},{0},{5},{8},{10},{15},{14},{0},{0}};
static const uint16_t circShift_BG1_Z22_CNG10[10][1] = {{18},{9},{0},{4},{4},{17},{15},{6},{2},{0}};
static const uint16_t circShift_BG1_Z26_CNG10[10][1] = {{16},{2},{1},{11},{18},{21},{23},{9},{12},{0}};
static const uint16_t circShift_BG1_Z30_CNG10[10][1] = {{1},{15},{21},{13},{27},{25},{19},{3},{8},{0}};
static const uint16_t circShift_BG1_Z8_CNG10[10][1] = {{0},{4},{7},{3},{6},{4},{5},{1},{2},{0}};
static const uint16_t circShift_BG1_Z12_CNG10[10][1] = {{7},{11},{9},{6},{3},{8},{8},{7},{2},{0}};
static const uint16_t circShift_BG1_Z20_CNG10[10][1] = {{15},{13},{10},{11},{16},{10},{9},{5},{14},{0}};
static const uint16_t circShift_BG1_Z28_CNG10[10][1] = {{5},{11},{4},{21},{8},{11},{2},{16},{5},{0}};
static const uint16_t circShift_BG1_Z36_CNG10[10][1] = {{18},{0},{0},{5},{26},{10},{15},{14},{18},{0}};
static const uint16_t circShift_BG1_Z44_CNG10[10][1] = {{40},{31},{22},{4},{4},{17},{15},{6},{24},{0}};
static const uint16_t circShift_BG1_Z52_CNG10[10][1] = {{16},{2},{27},{37},{44},{47},{49},{35},{12},{0}};
static const uint16_t circShift_BG1_Z60_CNG10[10][1] = {{1},{45},{21},{43},{57},{25},{19},{33},{38},{0}};
static const uint16_t circShift_BG1_Z16_CNG10[10][1] = {{0},{4},{7},{3},{6},{4},{13},{1},{10},{0}};
static const uint16_t circShift_BG1_Z24_CNG10[10][1] = {{19},{11},{21},{18},{15},{8},{8},{19},{2},{0}};
static const uint16_t circShift_BG1_Z40_CNG10[10][1] = {{15},{13},{10},{31},{16},{30},{29},{5},{34},{0}};
static const uint16_t circShift_BG1_Z56_CNG10[10][1] = {{33},{39},{4},{49},{36},{39},{2},{44},{33},{0}};
static const uint16_t circShift_BG1_Z72_CNG10[10][1] = {{54},{0},{36},{41},{26},{46},{15},{14},{54},{0}};
static const uint16_t circShift_BG1_Z88_CNG10[10][1] = {{84},{75},{22},{48},{48},{17},{59},{50},{68},{0}};
static const uint16_t circShift_BG1_Z104_CNG10[10][1] = {{68},{2},{27},{37},{96},{99},{101},{35},{12},{0}};
static const uint16_t circShift_BG1_Z120_CNG10[10][1] = {{61},{105},{21},{103},{57},{25},{79},{33},{38},{0}};
static const uint16_t circShift_BG1_Z32_CNG10[10][1] = {{16},{4},{7},{19},{6},{4},{13},{17},{26},{0}};
static const uint16_t circShift_BG1_Z48_CNG10[10][1] = {{19},{35},{21},{18},{39},{32},{32},{19},{26},{0}};
static const uint16_t circShift_BG1_Z80_CNG10[10][1] = {{55},{53},{50},{71},{56},{30},{29},{5},{74},{0}};
static const uint16_t circShift_BG1_Z112_CNG10[10][1] = {{33},{95},{4},{105},{92},{39},{58},{44},{89},{0}};
static const uint16_t circShift_BG1_Z144_CNG10[10][1] = {{54},{0},{108},{41},{98},{46},{15},{86},{54},{0}};
static const uint16_t circShift_BG1_Z176_CNG10[10][1] = {{172},{75},{22},{136},{48},{17},{59},{138},{68},{0}};
static const uint16_t circShift_BG1_Z208_CNG10[10][1] = {{172},{2},{131},{141},{96},{99},{101},{35},{116},{0}};
static const uint16_t circShift_BG1_Z240_CNG10[10][1] = {{181},{105},{141},{223},{177},{145},{199},{153},{38},{0}};
static const uint16_t circShift_BG1_Z64_CNG10[10][1] = {{48},{4},{7},{19},{38},{36},{45},{49},{26},{0}};
static const uint16_t circShift_BG1_Z96_CNG10[10][1] = {{19},{83},{69},{18},{39},{32},{80},{67},{74},{0}};
static const uint16_t circShift_BG1_Z160_CNG10[10][1] = {{135},{133},{130},{71},{136},{110},{109},{85},{154},{0}};
static const uint16_t circShift_BG1_Z224_CNG10[10][1] = {{33},{95},{4},{217},{204},{39},{58},{44},{201},{0}};
static const uint16_t circShift_BG1_Z288_CNG10[10][1] = {{54},{0},{252},{41},{98},{46},{15},{230},{54},{0}};
static const uint16_t circShift_BG1_Z352_CNG10[10][1] = {{348},{75},{22},{312},{224},{17},{59},{314},{244},{0}};
static const uint16_t circShift_BG1_Z128_CNG10[10][1] = {{112},{4},{7},{83},{102},{36},{109},{113},{90},{0}};
static const uint16_t circShift_BG1_Z192_CNG10[10][1] = {{115},{179},{165},{18},{39},{32},{176},{67},{170},{0}};
static const uint16_t circShift_BG1_Z320_CNG10[10][1] = {{295},{133},{130},{231},{296},{110},{269},{245},{154},{0}};
static const uint16_t circShift_BG1_Z256_CNG10[10][1] = {{112},{4},{7},{211},{102},{164},{109},{241},{90},{0}};
static const uint16_t circShift_BG1_Z384_CNG10[10][1] = {{307},{179},{165},{18},{39},{224},{368},{67},{170},{0}};
// Group of CNs with 19 BNs (CNG19) ->[Num BNs][Num of CN with 19 BNs]
static const uint16_t circShift_BG1_Z2_CNG19[19][4] = {{0, 0, 0, 1},{1, 1, 1, 1},{0, 1, 1, 0},{1, 0, 1, 0},{0, 1, 1, 0},{0, 0, 1, 1},{1, 0, 1, 1},{1, 1, 1, 0},{0, 0, 1, 0},{1, 0, 1, 0},{1, 1, 0, 1},{1, 0, 1, 1},{1, 0, 1, 0},{0, 1, 1, 0},{1, 1, 1, 0},{1, 0, 1, 0},{1, 0, 1, 0},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z3_CNG19[19][4] = {{1, 1, 1, 0},{1, 1, 1, 0},{2, 1, 1, 0},{0, 0, 2, 2},{1, 0, 1, 1},{0, 1, 2, 0},{2, 1, 0, 2},{0, 1, 1, 0},{1, 1, 0, 2},{2, 0, 0, 0},{0, 1, 2, 2},{2, 0, 1, 2},{1, 0, 2, 1},{2, 0, 2, 0},{0, 1, 0, 1},{0, 1, 1, 0},{1, 0, 1, 0},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z5_CNG19[19][4] = {{3, 3, 3, 0},{0, 4, 2, 3},{3, 2, 0, 0},{4, 1, 0, 2},{0, 1, 3, 1},{4, 3, 2, 0},{0, 4, 2, 4},{2, 0, 0, 1},{0, 4, 1, 3},{4, 0, 1, 3},{3, 1, 0, 4},{3, 1, 3, 3},{0, 2, 1, 4},{3, 3, 4, 3},{1, 0, 1, 2},{4, 1, 0, 4},{2, 0, 1, 3},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z7_CNG19[19][4] = {{6, 1, 4, 5},{2, 3, 0, 4},{3, 4, 3, 4},{0, 4, 1, 5},{4, 0, 5, 3},{3, 3, 4, 2},{0, 0, 4, 2},{2, 3, 6, 6},{6, 3, 2, 1},{0, 2, 0, 3},{5, 2, 0, 0},{0, 2, 4, 6},{0, 6, 0, 5},{1, 5, 2, 4},{2, 3, 5, 1},{6, 5, 6, 2},{4, 0, 6, 4},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z9_CNG19[19][4] = {{4, 8, 6, 7},{0, 0, 5, 1},{8, 7, 4, 4},{6, 4, 7, 0},{3, 7, 0, 1},{4, 4, 4, 6},{2, 4, 2, 8},{0, 0, 0, 5},{8, 1, 0, 0},{0, 6, 3, 3},{7, 0, 2, 0},{8, 8, 4, 7},{0, 5, 0, 8},{5, 3, 0, 3},{0, 3, 8, 0},{1, 2, 2, 5},{0, 0, 0, 0},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z11_CNG19[19][4] = {{8, 0, 6, 9},{8, 5, 2, 6},{2, 8, 4, 5},{0, 8, 5, 4},{9, 4, 1, 7},{0, 2, 1, 1},{1, 5, 7, 3},{8, 6, 6, 7},{1, 2, 8, 4},{9, 0, 6, 4},{3, 4, 0, 5},{9, 0, 0, 9},{6, 4, 4, 7},{7, 1, 10, 6},{2, 9, 9, 0},{3, 5, 1, 0},{1, 0, 7, 0},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z13_CNG19[19][4] = {{0, 9, 2, 4},{0, 11, 11, 6},{0, 7, 8, 7},{0, 0, 11, 9},{0, 10, 4, 10},{0, 0, 6, 8},{0, 0, 9, 6},{0, 2, 12, 8},{0, 3, 5, 5},{0, 8, 0, 11},{0, 0, 12, 9},{0, 6, 2, 5},{0, 4, 7, 1},{0, 0, 8, 4},{0, 12, 10, 3},{0, 5, 3, 2},{0, 1, 1, 12},{0, 0, 0, 0},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z15_CNG19[19][4] = {{0, 6, 9, 8},{2, 11, 4, 8},{6, 1, 0, 12},{14, 11, 1, 10},{9, 8, 11, 13},{8, 2, 12, 6},{8, 7, 14, 6},{0, 11, 2, 1},{10, 11, 9, 6},{8, 9, 8, 7},{0, 5, 6, 9},{0, 10, 11, 2},{7, 3, 3, 5},{10, 12, 6, 2},{0, 13, 5, 10},{0, 6, 7, 7},{2, 0, 5, 9},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z4_CNG19[19][4] = {{2, 2, 2, 1},{1, 3, 3, 1},{2, 1, 1, 0},{3, 0, 3, 0},{0, 3, 1, 2},{2, 2, 1, 3},{3, 0, 1, 3},{1, 1, 1, 0},{2, 0, 3, 2},{3, 2, 3, 2},{1, 1, 2, 3},{3, 0, 1, 3},{3, 2, 1, 0},{2, 3, 1, 0},{3, 3, 1, 0},{3, 0, 3, 0},{3, 0, 1, 0},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z6_CNG19[19][4] = {{1, 4, 1, 0},{1, 4, 4, 3},{2, 1, 4, 0},{3, 0, 2, 5},{1, 0, 4, 1},{0, 1, 5, 3},{5, 1, 3, 2},{0, 4, 4, 0},{1, 1, 3, 5},{5, 0, 3, 3},{3, 1, 2, 5},{5, 3, 4, 2},{4, 0, 5, 4},{2, 0, 5, 0},{0, 1, 0, 1},{0, 4, 1, 3},{4, 0, 1, 3},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z10_CNG19[19][4] = {{3, 3, 8, 0},{5, 4, 7, 8},{3, 7, 0, 0},{9, 1, 0, 7},{0, 1, 8, 1},{9, 3, 7, 5},{5, 4, 2, 9},{2, 0, 0, 1},{5, 9, 1, 3},{4, 0, 6, 3},{3, 6, 5, 4},{8, 6, 3, 3},{0, 2, 1, 4},{3, 3, 4, 8},{6, 0, 6, 7},{9, 1, 0, 9},{2, 0, 6, 8},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z14_CNG19[19][4] = {{13, 1, 11, 5},{2, 3, 7, 4},{10, 11, 3, 11},{7, 4, 8, 5},{4, 7, 12, 3},{10, 3, 4, 2},{0, 7, 11, 2},{9, 3, 13, 6},{6, 10, 9, 1},{7, 9, 0, 3},{5, 9, 7, 7},{0, 9, 4, 13},{0, 6, 7, 12},{1, 12, 2, 4},{2, 3, 5, 1},{6, 5, 13, 2},{11, 0, 6, 4},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z18_CNG19[19][4] = {{13, 17, 6, 7},{0, 0, 5, 1},{8, 7, 4, 4},{6, 4, 7, 0},{3, 16, 9, 10},{4, 4, 4, 6},{11, 4, 2, 17},{0, 9, 9, 5},{8, 1, 0, 0},{0, 15, 3, 3},{7, 0, 2, 0},{17, 8, 13, 7},{0, 14, 0, 8},{5, 3, 0, 3},{0, 12, 17, 0},{1, 11, 2, 5},{9, 0, 0, 0},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z22_CNG19[19][4] = {{8, 11, 6, 9},{8, 5, 13, 6},{13, 8, 15, 5},{0, 8, 16, 15},{9, 4, 1, 7},{11, 2, 1, 12},{1, 16, 18, 3},{8, 6, 17, 18},{1, 13, 8, 4},{9, 11, 17, 15},{3, 4, 0, 5},{9, 0, 0, 9},{17, 15, 15, 7},{18, 1, 21, 17},{13, 9, 9, 11},{3, 16, 12, 11},{12, 0, 7, 11},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z26_CNG19[19][4] = {{0, 22, 2, 4},{0, 11, 11, 6},{0, 20, 21, 7},{0, 0, 24, 9},{0, 10, 4, 23},{0, 0, 19, 21},{0, 0, 22, 6},{0, 2, 12, 21},{0, 16, 18, 5},{0, 8, 13, 24},{0, 0, 25, 9},{0, 6, 2, 5},{0, 4, 7, 14},{0, 0, 21, 17},{0, 12, 23, 16},{0, 5, 16, 2},{0, 1, 14, 12},{0, 0, 0, 0},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z30_CNG19[19][4] = {{15, 6, 9, 8},{17, 26, 4, 23},{6, 16, 15, 12},{14, 11, 1, 10},{24, 8, 26, 13},{23, 2, 27, 6},{23, 22, 29, 6},{15, 26, 2, 1},{25, 11, 24, 6},{8, 9, 8, 22},{15, 5, 6, 24},{15, 25, 11, 17},{7, 3, 3, 20},{10, 27, 6, 2},{0, 13, 5, 25},{15, 6, 7, 22},{17, 0, 20, 9},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z8_CNG19[19][4] = {{2, 2, 2, 1},{5, 7, 7, 1},{2, 5, 1, 4},{7, 4, 7, 4},{4, 7, 5, 6},{2, 6, 5, 3},{3, 0, 5, 3},{5, 5, 1, 0},{6, 4, 7, 6},{7, 6, 7, 6},{1, 5, 6, 3},{3, 4, 1, 3},{7, 6, 1, 0},{6, 3, 5, 4},{3, 7, 5, 4},{7, 4, 3, 0},{7, 0, 5, 4},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z12_CNG19[19][4] = {{7, 4, 1, 0},{7, 4, 10, 3},{2, 1, 4, 0},{9, 0, 8, 11},{1, 0, 4, 7},{0, 7, 5, 9},{5, 7, 3, 8},{0, 10, 4, 0},{1, 7, 3, 5},{5, 6, 9, 3},{9, 1, 8, 5},{11, 3, 4, 8},{10, 6, 5, 4},{2, 6, 11, 0},{0, 7, 0, 7},{6, 4, 1, 3},{10, 0, 1, 9},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z20_CNG19[19][4] = {{13, 3, 8, 0},{15, 14, 7, 8},{3, 7, 0, 10},{9, 1, 0, 17},{0, 1, 18, 1},{19, 13, 7, 15},{15, 4, 2, 19},{2, 0, 0, 1},{15, 9, 11, 3},{4, 0, 6, 13},{13, 16, 15, 4},{18, 6, 3, 13},{10, 12, 1, 4},{13, 3, 4, 8},{16, 0, 6, 17},{9, 1, 10, 19},{12, 0, 16, 8},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z28_CNG19[19][4] = {{27, 1, 11, 5},{16, 17, 7, 18},{10, 11, 3, 25},{7, 18, 8, 5},{18, 7, 12, 17},{10, 17, 18, 2},{0, 21, 11, 16},{9, 3, 13, 6},{20, 10, 9, 15},{21, 9, 14, 17},{19, 23, 21, 7},{14, 9, 18, 13},{14, 6, 21, 12},{1, 26, 2, 18},{2, 3, 5, 15},{20, 19, 27, 2},{25, 0, 6, 18},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z36_CNG19[19][4] = {{31, 35, 6, 7},{18, 18, 23, 1},{8, 7, 4, 22},{6, 4, 25, 0},{3, 16, 27, 10},{4, 4, 22, 24},{29, 22, 2, 17},{0, 9, 27, 5},{8, 1, 0, 18},{0, 15, 3, 21},{7, 0, 2, 0},{17, 8, 13, 7},{0, 14, 0, 26},{23, 3, 0, 21},{0, 12, 17, 0},{1, 11, 20, 5},{9, 0, 18, 0},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z44_CNG19[19][4] = {{30, 33, 6, 9},{30, 5, 35, 6},{35, 8, 37, 5},{22, 30, 38, 15},{31, 4, 23, 7},{33, 24, 1, 34},{23, 38, 40, 3},{30, 6, 17, 18},{1, 35, 30, 26},{31, 33, 39, 37},{25, 26, 22, 5},{9, 22, 22, 9},{39, 37, 37, 29},{40, 1, 43, 39},{35, 9, 31, 11},{3, 38, 34, 33},{12, 0, 7, 33},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z52_CNG19[19][4] = {{0, 22, 28, 4},{0, 11, 37, 6},{0, 20, 21, 33},{0, 0, 24, 9},{0, 10, 4, 49},{0, 0, 45, 21},{0, 0, 48, 6},{0, 2, 38, 47},{0, 16, 18, 31},{0, 8, 39, 50},{0, 0, 51, 35},{0, 6, 28, 5},{0, 30, 33, 40},{0, 0, 47, 17},{0, 12, 23, 16},{0, 31, 42, 2},{0, 1, 14, 38},{0, 0, 0, 0},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z60_CNG19[19][4] = {{15, 36, 9, 8},{47, 56, 4, 23},{6, 16, 45, 42},{14, 41, 31, 40},{24, 8, 56, 43},{23, 32, 57, 6},{53, 52, 59, 36},{45, 56, 32, 1},{25, 11, 24, 36},{8, 9, 8, 22},{15, 35, 6, 24},{15, 25, 41, 47},{37, 33, 33, 20},{40, 27, 36, 32},{30, 43, 5, 55},{45, 36, 7, 52},{17, 0, 50, 39},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z16_CNG19[19][4] = {{10, 2, 10, 9},{5, 15, 15, 9},{2, 5, 9, 4},{15, 12, 15, 4},{4, 7, 5, 6},{10, 14, 13, 3},{11, 8, 5, 3},{5, 13, 1, 8},{14, 12, 15, 6},{15, 6, 7, 6},{9, 13, 14, 11},{3, 4, 1, 3},{7, 14, 1, 0},{14, 11, 5, 12},{3, 15, 13, 4},{15, 12, 11, 0},{15, 0, 5, 12},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z24_CNG19[19][4] = {{19, 4, 13, 12},{19, 4, 10, 15},{2, 1, 16, 0},{9, 0, 20, 11},{13, 0, 16, 7},{0, 19, 17, 9},{5, 19, 3, 8},{0, 10, 16, 12},{13, 7, 15, 17},{17, 6, 9, 15},{21, 1, 8, 5},{23, 3, 16, 20},{10, 18, 5, 16},{2, 18, 11, 12},{12, 19, 0, 7},{18, 16, 13, 15},{10, 0, 13, 21},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z40_CNG19[19][4] = {{33, 23, 28, 20},{15, 14, 7, 8},{23, 27, 0, 30},{9, 21, 0, 37},{0, 1, 38, 21},{39, 13, 27, 15},{15, 4, 2, 39},{2, 0, 0, 1},{15, 9, 31, 23},{4, 20, 26, 13},{13, 36, 15, 4},{18, 26, 3, 13},{30, 32, 21, 4},{33, 3, 24, 28},{16, 20, 6, 37},{29, 21, 30, 39},{32, 0, 36, 28},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z56_CNG19[19][4] = {{55, 29, 39, 33},{16, 45, 35, 18},{38, 39, 31, 53},{35, 46, 8, 5},{18, 7, 12, 45},{10, 45, 18, 30},{0, 21, 39, 16},{37, 31, 41, 34},{48, 38, 9, 43},{21, 37, 14, 45},{47, 23, 21, 35},{14, 9, 46, 13},{14, 6, 21, 40},{29, 26, 30, 18},{30, 31, 5, 43},{48, 19, 55, 30},{25, 0, 34, 46},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z72_CNG19[19][4] = {{67, 35, 42, 43},{54, 18, 23, 1},{44, 7, 4, 22},{42, 40, 61, 36},{3, 16, 27, 10},{4, 4, 58, 60},{29, 58, 2, 53},{0, 45, 63, 41},{44, 37, 0, 18},{0, 15, 3, 57},{43, 0, 2, 36},{17, 8, 13, 43},{0, 14, 0, 26},{23, 3, 0, 21},{0, 12, 53, 0},{1, 47, 56, 41},{45, 0, 18, 36},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z88_CNG19[19][4] = {{30, 77, 50, 9},{30, 49, 35, 6},{79, 8, 37, 49},{66, 74, 38, 15},{31, 4, 23, 51},{77, 24, 1, 78},{67, 38, 40, 3},{74, 50, 61, 18},{1, 79, 30, 70},{75, 77, 39, 81},{25, 70, 22, 5},{53, 66, 22, 9},{83, 81, 37, 73},{40, 45, 43, 39},{79, 9, 75, 55},{47, 38, 34, 33},{12, 0, 7, 33},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z104_CNG19[19][4] = {{0, 22, 28, 4},{0, 11, 37, 6},{0, 20, 21, 33},{0, 0, 76, 9},{0, 10, 4, 49},{0, 0, 45, 21},{0, 0, 48, 6},{0, 2, 38, 47},{0, 16, 18, 83},{0, 60, 91, 50},{0, 0, 51, 87},{0, 6, 28, 5},{0, 30, 85, 92},{0, 0, 47, 69},{0, 64, 75, 16},{0, 31, 42, 2},{0, 1, 66, 38},{0, 0, 0, 0},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z120_CNG19[19][4] = {{15, 96, 69, 8},{107, 116, 4, 23},{6, 16, 105, 42},{14, 101, 31, 100},{84, 8, 116, 43},{83, 92, 117, 66},{53, 52, 59, 96},{105, 56, 92, 1},{85, 11, 24, 96},{8, 69, 68, 22},{75, 95, 6, 24},{15, 85, 101, 47},{97, 33, 33, 80},{100, 87, 96, 32},{90, 43, 5, 115},{105, 96, 67, 52},{17, 0, 110, 99},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z32_CNG19[19][4] = {{26, 2, 10, 25},{5, 15, 15, 25},{2, 21, 25, 20},{31, 28, 31, 20},{4, 7, 21, 22},{10, 30, 29, 3},{27, 8, 5, 19},{5, 13, 17, 8},{14, 28, 31, 22},{31, 6, 7, 22},{9, 13, 14, 27},{3, 4, 1, 19},{23, 14, 1, 16},{30, 27, 21, 12},{3, 31, 13, 20},{15, 28, 27, 16},{31, 0, 21, 12},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z48_CNG19[19][4] = {{19, 28, 13, 36},{19, 28, 10, 39},{2, 25, 40, 0},{33, 0, 44, 35},{37, 0, 16, 7},{24, 43, 17, 9},{29, 43, 27, 8},{0, 34, 16, 36},{13, 7, 15, 17},{17, 6, 33, 39},{21, 25, 8, 5},{23, 3, 40, 20},{10, 18, 5, 16},{2, 18, 35, 12},{36, 43, 0, 31},{42, 16, 13, 39},{10, 0, 13, 21},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z80_CNG19[19][4] = {{73, 63, 68, 60},{15, 54, 7, 48},{23, 27, 0, 30},{49, 21, 40, 37},{0, 1, 38, 61},{39, 53, 67, 15},{15, 4, 42, 79},{2, 0, 40, 41},{55, 49, 71, 63},{4, 60, 26, 13},{53, 76, 55, 4},{58, 26, 43, 53},{30, 72, 61, 44},{33, 3, 24, 28},{16, 20, 6, 77},{29, 61, 70, 79},{32, 0, 36, 68},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z112_CNG19[19][4] = {{111, 29, 95, 89},{16, 45, 91, 18},{94, 39, 31, 53},{91, 46, 64, 5},{74, 7, 68, 45},{10, 45, 74, 30},{0, 21, 95, 16},{93, 87, 41, 34},{104, 94, 65, 43},{21, 93, 70, 101},{103, 79, 77, 35},{14, 9, 102, 69},{70, 6, 77, 96},{29, 82, 86, 74},{86, 31, 5, 99},{104, 75, 111, 30},{81, 0, 90, 46},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z144_CNG19[19][4] = {{67, 35, 114, 43},{54, 18, 23, 1},{44, 79, 76, 22},{42, 112, 133, 108},{75, 16, 99, 82},{4, 76, 58, 132},{29, 58, 74, 53},{0, 117, 63, 41},{116, 109, 0, 18},{72, 15, 3, 57},{115, 72, 74, 36},{89, 8, 85, 115},{0, 14, 0, 98},{95, 3, 72, 21},{72, 12, 125, 0},{73, 119, 56, 113},{117, 0, 90, 108},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z176_CNG19[19][4] = {{118, 77, 50, 97},{118, 49, 35, 94},{167, 96, 37, 49},{154, 162, 126, 103},{31, 92, 111, 139},{165, 112, 89, 166},{67, 126, 128, 91},{74, 50, 61, 106},{1, 167, 118, 70},{163, 77, 127, 169},{25, 158, 110, 93},{53, 66, 110, 9},{171, 81, 125, 73},{128, 133, 131, 39},{167, 9, 163, 143},{47, 126, 34, 121},{12, 0, 7, 121},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z208_CNG19[19][4] = {{0, 22, 132, 4},{0, 11, 37, 6},{0, 124, 21, 33},{0, 0, 180, 113},{0, 10, 4, 49},{0, 0, 149, 21},{0, 0, 48, 6},{0, 2, 38, 151},{0, 16, 122, 83},{0, 60, 195, 154},{0, 0, 155, 87},{0, 6, 28, 5},{0, 30, 85, 92},{0, 0, 47, 173},{0, 168, 179, 120},{0, 31, 42, 2},{0, 105, 66, 142},{0, 0, 0, 0},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z240_CNG19[19][4] = {{135, 96, 189, 128},{227, 236, 4, 23},{126, 136, 225, 162},{134, 221, 151, 220},{84, 128, 236, 43},{83, 92, 117, 186},{53, 172, 179, 96},{225, 56, 92, 1},{205, 11, 24, 216},{128, 189, 68, 22},{75, 95, 6, 24},{135, 85, 101, 167},{217, 153, 33, 200},{220, 87, 96, 32},{90, 163, 125, 235},{105, 216, 67, 172},{137, 0, 230, 219},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z64_CNG19[19][4] = {{58, 2, 42, 57},{5, 47, 47, 25},{34, 53, 57, 20},{31, 60, 63, 20},{36, 7, 53, 22},{10, 30, 29, 3},{59, 40, 37, 51},{37, 45, 49, 8},{46, 28, 31, 22},{63, 38, 39, 54},{9, 45, 14, 27},{3, 4, 33, 19},{23, 14, 33, 48},{62, 27, 53, 12},{35, 63, 13, 52},{47, 28, 59, 16},{31, 0, 53, 12},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z96_CNG19[19][4] = {{19, 76, 13, 84},{19, 76, 58, 87},{50, 73, 40, 0},{81, 0, 44, 83},{85, 48, 64, 7},{24, 43, 65, 57},{29, 43, 75, 56},{0, 82, 64, 36},{13, 7, 63, 17},{17, 54, 33, 39},{69, 25, 8, 53},{23, 3, 88, 20},{10, 66, 53, 16},{50, 18, 35, 12},{84, 43, 48, 79},{42, 16, 13, 39},{58, 0, 13, 69},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z160_CNG19[19][4] = {{73, 143, 68, 60},{15, 134, 7, 48},{103, 27, 80, 30},{49, 101, 120, 37},{80, 1, 38, 61},{39, 133, 67, 15},{15, 4, 42, 79},{2, 80, 40, 121},{55, 129, 71, 143},{4, 140, 106, 93},{133, 76, 135, 4},{138, 106, 123, 53},{110, 72, 141, 44},{113, 83, 24, 28},{16, 100, 86, 77},{29, 141, 70, 159},{32, 0, 116, 68},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z224_CNG19[19][4] = {{223, 141, 207, 201},{16, 45, 203, 18},{94, 151, 31, 165},{91, 46, 176, 5},{74, 119, 180, 45},{10, 157, 186, 142},{0, 133, 95, 16},{205, 87, 153, 34},{216, 206, 177, 155},{21, 93, 70, 213},{215, 79, 77, 147},{14, 9, 214, 69},{70, 118, 77, 96},{141, 194, 198, 74},{198, 31, 117, 99},{104, 187, 223, 30},{81, 0, 90, 158},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z288_CNG19[19][4] = {{211, 179, 258, 187},{198, 162, 167, 145},{188, 223, 220, 166},{186, 256, 133, 108},{219, 160, 243, 82},{4, 76, 202, 132},{29, 202, 218, 197},{144, 117, 63, 41},{116, 109, 0, 162},{216, 15, 3, 57},{115, 72, 74, 36},{233, 152, 229, 115},{144, 158, 0, 242},{95, 147, 216, 165},{216, 156, 269, 0},{73, 119, 200, 113},{261, 0, 234, 108},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z352_CNG19[19][4] = {{294, 77, 226, 97},{118, 225, 35, 94},{167, 96, 213, 49},{330, 338, 302, 279},{207, 268, 111, 139},{165, 112, 265, 166},{243, 302, 128, 91},{250, 50, 237, 106},{1, 167, 294, 246},{339, 253, 127, 345},{201, 334, 110, 269},{53, 242, 286, 185},{347, 257, 125, 249},{304, 133, 131, 215},{167, 9, 163, 143},{47, 302, 210, 121},{188, 0, 7, 121},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z128_CNG19[19][4] = {{122, 2, 106, 121},{69, 111, 111, 89},{98, 117, 57, 84},{31, 124, 63, 20},{100, 71, 117, 22},{10, 94, 93, 3},{59, 104, 101, 115},{101, 45, 49, 8},{110, 92, 95, 86},{63, 102, 39, 118},{9, 109, 14, 91},{67, 4, 97, 83},{23, 14, 97, 112},{62, 27, 117, 76},{35, 127, 77, 116},{111, 28, 123, 16},{31, 0, 117, 12},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z192_CNG19[19][4] = {{115, 76, 13, 84},{19, 76, 58, 87},{50, 73, 136, 0},{177, 96, 140, 83},{181, 144, 64, 7},{24, 139, 161, 153},{125, 139, 75, 56},{96, 178, 160, 132},{109, 103, 63, 113},{17, 150, 129, 39},{165, 25, 8, 149},{23, 99, 88, 20},{106, 162, 53, 112},{50, 114, 131, 108},{180, 139, 48, 79},{138, 112, 13, 39},{154, 0, 13, 165},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z320_CNG19[19][4] = {{73, 303, 68, 220},{15, 294, 7, 208},{103, 27, 80, 30},{49, 261, 280, 197},{240, 161, 38, 61},{39, 133, 227, 175},{15, 4, 202, 79},{162, 80, 200, 281},{215, 129, 71, 303},{164, 300, 106, 253},{133, 76, 295, 164},{298, 266, 283, 53},{110, 72, 301, 44},{113, 83, 184, 28},{16, 260, 246, 77},{189, 301, 230, 319},{32, 0, 276, 68},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z256_CNG19[19][4] = {{250, 2, 106, 121},{69, 239, 111, 89},{226, 117, 185, 84},{159, 124, 63, 20},{100, 71, 117, 150},{10, 222, 93, 131},{59, 104, 229, 243},{229, 173, 177, 136},{110, 220, 95, 86},{191, 102, 39, 246},{9, 109, 142, 219},{195, 132, 225, 211},{23, 142, 225, 240},{190, 155, 245, 76},{35, 255, 205, 244},{239, 28, 251, 144},{31, 0, 117, 12},{1, 0, 0, 1},{0, 0, 0, 0}};
static const uint16_t circShift_BG1_Z384_CNG19[19][4] = {{307, 76, 205, 276},{19, 76, 250, 87},{50, 73, 328, 0},{369, 288, 332, 275},{181, 144, 256, 199},{216, 331, 161, 153},{317, 331, 267, 56},{288, 178, 160, 132},{109, 295, 63, 305},{17, 342, 129, 231},{357, 217, 200, 341},{215, 99, 88, 212},{106, 354, 53, 304},{242, 114, 131, 300},{180, 331, 240, 271},{330, 112, 205, 39},{346, 0, 13, 357},{1, 0, 0, 1},{0, 0, 0, 0}};
// Startaddressses in the BN buffer of the different CN groups
// BG1
// Group of CNs with 3 BNs (CNG3)
static const uint32_t startAddrBnProcBuf_BG1_CNG3[3] = {111360, 100224, 0};
static const uint32_t startAddrBnProcBuf_BG1_CNG4[4][5] = {{105984, 107904, 120192, 120576, 109440}, {40704, 74880, 43392, 47232, 43008}, {42240, 19200, 62592, 23424, 92928}, {8832, 12672, 13824, 14592, 15744}};
static const uint32_t startAddrBnProcBuf_BG1_CNG5[5][18] = {{116736, 105216, 105600, 117504, 117888, 106368, 118272, 106752, 118656, 107136, 119040, 107520, 119424, 119808, 108288, 108672, 109056, 120960}, {88704, 30336, 39552, 31872, 46848, 58752, 89856, 87936, 90240, 33408, 89472, 41856, 61824, 30720, 73344, 74496, 62208, 92544}, {72576, 88320, 86400, 46464, 33024, 97536, 73728, 90624, 60288, 61440, 32640, 91776, 34176, 91392, 91008, 32256, 98688, 33792}, {59520, 97152, 57216, 31104, 74112, 22272, 21888, 23040, 22656, 75264, 61056, 92160, 97920, 93312, 34560, 98304, 23808, 93696}, {6912, 7296, 8064, 8448, 9216, 9600, 9984, 10368, 10752, 11136, 11520, 11904, 12288, 13056, 13440, 14208, 14976, 15360}};
static const uint32_t startAddrBnProcBuf_BG1_CNG6[6][8] = {{114432, 103680, 115584, 104064, 115968, 116352, 104832, 117120}, {68736, 69888, 55680, 87168, 104448, 71040, 17280, 72192}, {83328, 56832, 59136, 71424, 84864, 29184, 60672, 46080}, {41472, 42624, 57984, 96768, 41088, 58368, 43776, 59904}, {18816, 86016, 71808, 31488, 86784, 87552, 72960, 89088}, {3456, 4608, 4992, 5376, 5760, 6144, 6528, 7680}};
static const uint32_t startAddrBnProcBuf_BG1_CNG7[7][5] = {{112512, 102144, 114048, 114816, 115200}, {100992, 28800, 102912, 85632, 103296}, {45312, 45696, 83712, 29568, 85248}, {80256, 81792, 55296, 57600, 70272}, {38784, 39936, 69120, 56448, 96384}, {52608, 54144, 96000, 70656, 21504}, {1152, 2304, 3072, 3840, 4224}};
static const uint32_t startAddrBnProcBuf_BG1_CNG8[8][2] = {{111744, 113664}, {100608, 102528}, {66432, 84096}, {81024, 56064}, {52992, 69504}, {67200, 84480}, {81408, 18432}, {384, 2688}};
static const uint32_t startAddrBnProcBuf_BG1_CNG9[9][2] = {{112128, 113280}, {38400, 101760}, {80640, 82176}, {52224, 53760}, {66816, 67968}, {53376, 54912}, {95232, 95616}, {39168, 40320}, {768, 1920}};
static const uint32_t startAddrBnProcBuf_BG1_CNG10[10][1] = {{112896}, {101376}, {67584}, {82560}, {54528}, {29952}, {68352}, {82944}, {21120}, {1536}};
static const uint32_t startAddrBnProcBuf_BG1_CNG19[19][4] = {{109824, 110208, 110592, 110976}, {99072, 25728, 99456, 99840}, {24192, 64128, 27264, 65280}, {62976, 44160, 44544, 44928}, {16128, 16512, 16896, 37248}, {34944, 75648, 36096, 78720}, {24576, 35328, 77184, 37632}, {76032, 26112, 36480, 79104}, {47616, 49152, 27648, 50688}, {76416, 77952, 77568, 79488}, {63360, 48000, 64512, 65664}, {24960, 26496, 49536, 51072}, {48384, 49920, 28032, 51456}, {94080, 48768, 50304, 51840}, {25344, 26880, 94464, 94848}, {35712, 64896, 28416, 38016}, {63744, 78336, 36864, 66048}, {76800, 18048, 20352, 79872}, {17664, 19584, 19968, 20736}};
// BG1 // BG1
// Z = 2 // Z = 2
#include "lut_llr2CnProcBuf_BG1_Z2_R13.h" #include "lut_llr2CnProcBuf_BG1_Z2_R13.h"
......
...@@ -278,6 +278,16 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -278,6 +278,16 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups; const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups;
const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups;
const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG1_R13[0]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[0]]) p_lut->circShift[0];
const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG1_R13[1]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[1]]) p_lut->circShift[1];
const uint16_t (*lut_circShift_CNG5) [lut_numCnInCnGroups_BG1_R13[2]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[2]]) p_lut->circShift[2];
const uint16_t (*lut_circShift_CNG6) [lut_numCnInCnGroups_BG1_R13[3]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[3]]) p_lut->circShift[3];
const uint16_t (*lut_circShift_CNG7) [lut_numCnInCnGroups_BG1_R13[4]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[4]]) p_lut->circShift[4];
const uint16_t (*lut_circShift_CNG8) [lut_numCnInCnGroups_BG1_R13[5]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[5]]) p_lut->circShift[5];
const uint16_t (*lut_circShift_CNG9) [lut_numCnInCnGroups_BG1_R13[6]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[6]]) p_lut->circShift[6];
const uint16_t (*lut_circShift_CNG10)[lut_numCnInCnGroups_BG1_R13[7]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[7]]) p_lut->circShift[7];
const uint16_t (*lut_circShift_CNG19)[lut_numCnInCnGroups_BG1_R13[8]] = (uint16_t(*)[lut_numCnInCnGroups_BG1_R13[8]]) p_lut->circShift[8];
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes; int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
int8_t* bnProcBuf = p_procBuf->bnProcBuf; int8_t* bnProcBuf = p_procBuf->bnProcBuf;
...@@ -295,21 +305,18 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -295,21 +305,18 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[0]*Z; M = lut_numCnInCnGroups[0]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG3[3] = {111360, 100224, 0};
const uint16_t cyclicShiftValues_Z384_CNG3[3] = {332, 181, 0};
for (j=0; j<3; j++) for (j=0; j<3; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[0] + j*bitOffsetInGroup];
/* /*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ */
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG3[j]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG3[j]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG3[j]],p_cnProcBufRes,Z,lut_circShift_CNG3[j][0]);
} }
// ===================================================================== // =====================================================================
...@@ -319,11 +326,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -319,11 +326,6 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[1]*Z; M = lut_numCnInCnGroups[1]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG4[4][5] = {{105984, 107904, 120192, 120576, 109440}, {40704, 74880, 43392, 47232, 43008}, {42240, 19200, 62592, 23424, 92928}, {8832, 12672, 13824, 14592, 15744}};
const uint16_t cyclicShiftValues_Z384_CNG4[4][5] = {{194, 269, 175, 113, 135}, {194, 82, 37, 14, 149}, {101, 115, 312, 218, 15}, {0, 0, 0, 0, 0}};
//const uint16_t cyclicShiftValues_Z384_CNG4[4][5] = {{175, 113, 194, 269, 135}, {14, 194, 149, 101, 37}, {15, 82, 312, 115, 218}, {0, 0, 0, 0, 0}};
for (j=0; j<4; j++) for (j=0; j<4; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[1] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[1] + j*bitOffsetInGroup];
...@@ -334,13 +336,13 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -334,13 +336,13 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ */
for (i=0; i<lut_numCnInCnGroups_BG1_R13[1]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[1]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG4[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG4[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG4[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG4[j][i]);
p_cnProcBufRes+=NR_LDPC_ZMAX; p_cnProcBufRes += NR_LDPC_ZMAX;
} }
} }
// ===================================================================== // =====================================================================
...@@ -350,27 +352,19 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -350,27 +352,19 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[2]*Z; M = lut_numCnInCnGroups[2]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG5[5][18] = {{116736, 105216, 105600, 117504, 117888, 106368, 118272, 106752, 118656, 107136, 119040, 107520, 119424, 119808, 108288, 108672, 109056, 120960}, {88704, 30336, 39552, 31872, 46848, 58752, 89856, 87936, 90240, 33408, 89472, 41856, 61824, 30720, 73344, 74496, 62208, 92544}, {72576, 88320, 86400, 46464, 33024, 97536, 73728, 90624, 60288, 61440, 32640, 91776, 34176, 91392, 91008, 32256, 98688, 33792}, {59520, 97152, 57216, 31104, 74112, 22272, 21888, 23040, 22656, 75264, 61056, 92160, 97920, 93312, 34560, 98304, 23808, 93696}, {6912, 7296, 8064, 8448, 9216, 9600, 9984, 10368, 10752, 11136, 11520, 11904, 12288, 13056, 13440, 14208, 14976, 15360}};
const uint16_t cyclicShiftValues_Z384_CNG5[5][18] = {{30, 24, 72, 71, 222, 252, 159, 100, 102, 323, 230, 320, 210, 185, 258, 52, 113, 80}, {11, 89, 17, 81, 19, 5, 229, 215, 201, 8, 148, 335, 313, 177, 93, 314, 132, 78}, {233, 61, 383, 76, 244, 147, 260, 258, 175, 361, 202, 2, 297, 289, 346, 139, 114, 163}, {22, 27, 312, 136, 274, 78, 90, 256, 287, 105, 312, 266, 21, 214, 297, 288, 168, 274}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
for (j=0; j<5; j++) for (j=0; j<5; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[2] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[2] + j*bitOffsetInGroup];
/*
/*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
//mexPrintf("bnProcBuf = %p, p_cnProcBufRes = %p\n", &bnProcBuf[p_lut_cn2bn[j*M + i]],&p_cnProcBufRes[i]);
} }
*/ */
for (i=0; i<lut_numCnInCnGroups_BG1_R13[2]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[2]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG5[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG5[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG5[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG5[j][i]);
//mexPrintf("bnProcBuf = %p, p_cnProcBufRes = %p | p_lut_cn2bn = %d\n", &bnProcBuf[p_lut_cn2bn[j*M + i*Z]],&p_cnProcBufRes[i*Z],p_lut_cn2bn[j*M + i*Z]); p_cnProcBufRes += NR_LDPC_ZMAX;
p_cnProcBufRes+=NR_LDPC_ZMAX;
} }
} }
...@@ -382,28 +376,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -382,28 +376,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[3]*Z; M = lut_numCnInCnGroups[3]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[3]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[3]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG6[6][8] = {{114432, 103680, 115584, 104064, 115968, 116352, 104832, 117120}, {68736, 69888, 55680, 87168, 104448, 71040, 17280, 72192}, {83328, 56832, 59136, 71424, 84864, 29184, 60672, 46080}, {41472, 42624, 57984, 96768, 41088, 58368, 43776, 59904}, {18816, 86016, 71808, 31488, 86784, 87552, 72960, 89088}, {3456, 4608, 4992, 5376, 5760, 6144, 6528, 7680}};
const uint16_t cyclicShiftValues_Z384_CNG6[6][8] = {{313, 13, 260, 130, 145, 187, 205, 298}, {177, 338, 303, 163, 213, 206, 102, 158}, {266, 57, 81, 280, 344, 264, 328, 235}, {115, 289, 358, 132, 242, 341, 213, 339}, {370, 57, 375, 4, 197, 59, 97, 234}, {0, 0, 0, 0, 0, 0, 0, 0}};
for (j=0; j<6; j++) for (j=0; j<6; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[3] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[3] + j*bitOffsetInGroup];
/*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ /*
for (i=0; i<lut_numCnInCnGroups_BG1_R13[3]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[3]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG6[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG6[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG6[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG6[j][i]);
p_cnProcBufRes+=NR_LDPC_ZMAX; p_cnProcBufRes += NR_LDPC_ZMAX;
} }
*/
} }
// ===================================================================== // =====================================================================
...@@ -413,29 +400,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -413,29 +400,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[4]*Z; M = lut_numCnInCnGroups[4]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[4]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[4]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG7[7][5] = {{112512, 102144, 114048, 114816, 115200}, {100992, 28800, 102912, 85632, 103296}, {45312, 45696, 83712, 29568, 85248}, {80256, 81792, 55296, 57600, 70272}, {38784, 39936, 69120, 56448, 96384}, {52608, 54144, 96000, 70656, 21504}, {1152, 2304, 3072, 3840, 4224}};
const uint16_t cyclicShiftValues_Z384_CNG7[7][5] = {{9, 101, 77, 142, 241}, {62, 339, 186, 248, 2}, {316, 274, 174, 137, 210}, {333, 111, 232, 89, 318}, {290, 383, 50, 347, 55}, {114, 354, 74, 12, 269}, {0, 0, 0, 0, 0}};
for (j=0; j<7; j++) for (j=0; j<7; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[4] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[4] + j*bitOffsetInGroup];
/*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ /*
for (i=0; i<lut_numCnInCnGroups_BG1_R13[4]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[4]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG7[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG7[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG7[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG7[j][i]);
p_cnProcBufRes+=NR_LDPC_ZMAX; p_cnProcBufRes += NR_LDPC_ZMAX;
} }
*/
} }
// ===================================================================== // =====================================================================
...@@ -445,30 +424,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -445,30 +424,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[5]*Z; M = lut_numCnInCnGroups[5]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[5]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[5]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG8[8][2] = {{111744, 113664}, {100608, 102528}, {66432, 84096}, {81024, 56064}, {52992, 69504}, {67200, 84480}, {81408, 18432}, {384, 2688}};
const uint16_t cyclicShiftValues_Z384_CNG8[8][2] = {{195, 48}, {14, 102}, {115, 8}, {166, 47}, {241, 188}, {51, 334}, {157, 115}, {0, 0}};
for (j=0; j<8; j++) for (j=0; j<8; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[5] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[5] + j*bitOffsetInGroup];
/*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ /*
for (i=0; i<lut_numCnInCnGroups_BG1_R13[5]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[5]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG8[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG8[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG8[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG8[j][i]);
p_cnProcBufRes+=NR_LDPC_ZMAX; p_cnProcBufRes += NR_LDPC_ZMAX;
} }
*/
} }
// ===================================================================== // =====================================================================
...@@ -478,25 +448,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -478,25 +448,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[6]*Z; M = lut_numCnInCnGroups[6]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[6]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[6]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG9[9][2] = {{112128, 113280}, {38400, 101760}, {80640, 82176}, {52224, 53760}, {66816, 67968}, {53376, 54912}, {95232, 95616}, {39168, 40320}, {768, 1920}};
const uint16_t cyclicShiftValues_Z384_CNG9[9][2] = {{278, 366}, {257, 232}, {1, 321}, {351, 133}, {92, 57}, {253, 303}, {18, 63}, {225, 82}, {0, 0,}};
for (j=0; j<9; j++) for (j=0; j<9; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[6] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[6] + j*bitOffsetInGroup];
/*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ /*
for (i=0; i<lut_numCnInCnGroups_BG1_R13[6]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[6]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG9[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG9[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG9[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG9[j][i]);
p_cnProcBufRes+=NR_LDPC_ZMAX; p_cnProcBufRes += NR_LDPC_ZMAX;
} }
*/
} }
// ===================================================================== // =====================================================================
...@@ -506,25 +472,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -506,25 +472,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[7]*Z; M = lut_numCnInCnGroups[7]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[7]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[7]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG10[10][1] = {{112896}, {101376}, {67584}, {82560}, {54528}, {29952}, {68352}, {82944}, {21120}, {1536}};
const uint16_t cyclicShiftValues_Z384_CNG10[10][1] = {{307}, {179}, {165}, {18}, {39}, {224}, {368}, {67}, {170}, {0}};
for (j=0; j<10; j++) for (j=0; j<10; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[7] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[7] + j*bitOffsetInGroup];
/*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ /*
for (i=0; i<lut_numCnInCnGroups_BG1_R13[7]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[7]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG10[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG10[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG10[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG10[j][i]);
p_cnProcBufRes+=NR_LDPC_ZMAX; p_cnProcBufRes += NR_LDPC_ZMAX;
} }
*/
} }
// ===================================================================== // =====================================================================
...@@ -534,27 +496,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -534,27 +496,21 @@ static inline void nrLDPC_cn2bnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[8]*Z; M = lut_numCnInCnGroups[8]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[8]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[8]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG19[19][4] = {{109824, 110208, 110592, 110976}, {99072, 25728, 99456, 99840}, {24192, 64128, 27264, 65280}, {62976, 44160, 44544, 44928}, {16128, 16512, 16896, 37248}, {34944, 75648, 36096, 78720}, {24576, 35328, 77184, 37632}, {76032, 26112, 36480, 79104}, {47616, 49152, 27648, 50688}, {76416, 77952, 77568, 79488}, {63360, 48000, 64512, 65664}, {24960, 26496, 49536, 51072}, {48384, 49920, 28032, 51456}, {94080, 48768, 50304, 51840}, {25344, 26880, 94464, 94848}, {35712, 64896, 28416, 38016}, {63744, 78336, 36864, 66048}, {76800, 18048, 20352, 79872}, {17664, 19584, 19968, 20736}};
const uint16_t cyclicShiftValues_Z384_CNG19[19][4] = {{307, 76, 205, 276}, {19, 76, 250, 87}, {50, 73, 328, 0}, {369, 288, 332, 275}, {181, 144, 256, 199}, {216, 331, 161, 153}, {317, 331, 267, 56}, {288, 178, 160, 132}, {109, 295, 63, 305}, {17, 342, 129, 231}, {357, 217, 200, 341}, {215, 99, 88, 212}, {106, 354, 53, 304}, {242, 114, 131, 300}, {180, 331, 240, 271}, {330, 112, 205, 39}, {346, 0, 13, 357}, {1, 0, 0, 1}, {0, 0, 0, 0}};
for (j=0; j<19; j++) for (j=0; j<19; j++)
{ {
p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[8] + j*bitOffsetInGroup]; p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[8] + j*bitOffsetInGroup];
/*
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i]; bnProcBuf[p_lut_cn2bn[j*M + i]] = p_cnProcBufRes[i];
} }
*/ /*
for (i=0; i<lut_numCnInCnGroups_BG1_R13[8]; i++) for (i=0; i<lut_numCnInCnGroups_BG1_R13[8]; i++)
{ {
nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_CNG19[j][i]],p_cnProcBufRes,Z,cyclicShiftValues_Z384_CNG19[j][i]); nrLDPC_circ_memcpy(&bnProcBuf[startAddrBnProcBuf_BG1_CNG19[j][i]],p_cnProcBufRes,Z,lut_circShift_CNG19[j][i]);
p_cnProcBufRes+=NR_LDPC_ZMAX; p_cnProcBufRes += NR_LDPC_ZMAX;
} }
*/
} }
} }
...@@ -752,21 +708,15 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf ...@@ -752,21 +708,15 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf
M = lut_numCnInCnGroups[2]*Z; M = lut_numCnInCnGroups[2]*Z;
bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX; bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX;
const uint32_t startAddrBnProcBuf_CNG5[5][18] = {{116736, 105216, 105600, 117504, 117888, 106368, 118272, 106752, 118656, 107136, 119040, 107520, 119424, 119808, 108288, 108672, 109056, 120960}, {88704, 30336, 39552, 31872, 46848, 58752, 89856, 87936, 90240, 33408, 89472, 41856, 61824, 30720, 73344, 74496, 62208, 92544}, {72576, 88320, 86400, 46464, 33024, 97536, 73728, 90624, 60288, 61440, 32640, 91776, 34176, 91392, 91008, 32256, 98688, 33792}, {59520, 97152, 57216, 31104, 74112, 22272, 21888, 23040, 22656, 75264, 61056, 92160, 97920, 93312, 34560, 98304, 23808, 93696}, {6912, 7296, 8064, 8448, 9216, 9600, 9984, 10368, 10752, 11136, 11520, 11904, 12288, 13056, 13440, 14208, 14976, 15360}};
const uint16_t cyclicShiftValues_Z384_CNG5[5][18] = {{30, 71, 222, 159, 102, 230, 210, 185, 80, 24, 72, 252, 100, 323, 320, 258, 52, 113}, {89, 81, 8, 93, 314, 76, 19, 17, 335, 383, 215, 148, 346, 78, 177, 139, 163, 61}, {229, 289, 361, 11, 201, 2, 214, 233, 260, 312, 5, 175, 313, 136, 202, 297, 132, 22}, {312, 27, 147, 21, 288, 114, 244, 297, 274, 105, 258, 266, 274, 90, 287, 78, 256, 168}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
for (j=0; j<4; j++) for (j=0; j<4; j++)
{ {
p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[2] + j*bitOffsetInGroup]; p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[2] + j*bitOffsetInGroup];
if (1)
{
for (i=0; i<M; i++) for (i=0; i<M; i++)
{ {
p_cnProcBuf[i] = bnProcBufRes[p_lut_cn2bn[j*M + i]]; p_cnProcBuf[i] = bnProcBufRes[p_lut_cn2bn[j*M + i]];
} }
}
/* /*
else else
{ {
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#define __NR_LDPC_TYPES__H__ #define __NR_LDPC_TYPES__H__
#include "PHY/TOOLS/time_meas.h" #include "PHY/TOOLS/time_meas.h"
#include "nrLDPC_defs.h"
// ============================================================================== // ==============================================================================
// TYPES // TYPES
...@@ -49,6 +50,7 @@ typedef struct nrLDPC_lut { ...@@ -49,6 +50,7 @@ typedef struct nrLDPC_lut {
const uint8_t* numEdgesPerBn; /**< LUT with number of edges per BN */ const uint8_t* numEdgesPerBn; /**< LUT with number of edges per BN */
const uint32_t* cn2bnProcBuf; /**< LUT for transferring CN processing results to BN processing buffer */ const uint32_t* cn2bnProcBuf; /**< LUT for transferring CN processing results to BN processing buffer */
const uint16_t* llr2llrProcBuf; /**< LUT for transferring input LLRs to LLR processing buffer */ const uint16_t* llr2llrProcBuf; /**< LUT for transferring input LLRs to LLR processing buffer */
const uint16_t** circShift[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT for circular shift values for all CN groups and Z's */
} t_nrLDPC_lut; } t_nrLDPC_lut;
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment