From 1fefd730d6c4a4de7d62592a14fa5573f2103149 Mon Sep 17 00:00:00 2001 From: laurent Date: Wed, 15 Feb 2023 11:19:54 +0100 Subject: [PATCH] fix ldpc ubsan --- .../PHY/CODING/nrLDPC_decoder/nrLDPC_init.h | 2217 ++++++++--------- .../PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h | 1048 ++------ .../PHY/CODING/nrLDPC_decoder/nrLDPC_types.h | 23 +- 3 files changed, 1164 insertions(+), 2124 deletions(-) diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init.h index ea031dc2da..a000b0218d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init.h @@ -30,10 +30,25 @@ #ifndef __NR_LDPC_INIT__H__ #define __NR_LDPC_INIT__H__ - +#include #include "nrLDPC_lut.h" #include "nrLDPCdecoder_defs.h" +#define expandArr8(namE) \ + (const arr8_t) \ + { \ + (uint8_t*)namE, sizeof(namE) / sizeof(*namE), sizeof(*namE) / sizeof(**namE) \ + } +#define expandArr16(namE) \ + (const arr16_t) \ + { \ + (uint16_t*)namE, sizeof(namE) / sizeof(*namE), sizeof(*namE) / sizeof(**namE) \ + } +#define expandArr32(namE) \ + (const arr32_t) \ + { \ + (uint32_t*)namE, sizeof(namE) / sizeof(*namE), sizeof(*namE) / sizeof(**namE) \ + } /** \brief Initializes the decoder and sets correct LUTs \param p_decParams Pointer to decoder parameters @@ -46,118 +61,90 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu uint8_t BG = p_decParams->BG; uint16_t Z = p_decParams->Z; uint8_t R = p_decParams->R; - + memset(p_lut, 0, sizeof(*p_lut)); if (BG == 2) { // LUT that only depend on BG p_lut->startAddrCnGroups = lut_startAddrCnGroups_BG2; - - p_lut->posBnInCnProcBuf[0] = (const uint8_t**) posBnInCnProcBuf_BG2_CNG3; - p_lut->posBnInCnProcBuf[1] = (const uint8_t**) posBnInCnProcBuf_BG2_CNG4; - p_lut->posBnInCnProcBuf[2] = (const uint8_t**) posBnInCnProcBuf_BG2_CNG5; - p_lut->posBnInCnProcBuf[3] = (const uint8_t**) posBnInCnProcBuf_BG2_CNG6; - p_lut->posBnInCnProcBuf[4] = (const uint8_t**) posBnInCnProcBuf_BG2_CNG8; - p_lut->posBnInCnProcBuf[5] = (const uint8_t**) posBnInCnProcBuf_BG2_CNG10; - p_lut->posBnInCnProcBuf[6] = NULL; - p_lut->posBnInCnProcBuf[7] = NULL; - p_lut->posBnInCnProcBuf[8] = NULL; + p_lut->posBnInCnProcBuf[0] = expandArr8(posBnInCnProcBuf_BG2_CNG3); + p_lut->posBnInCnProcBuf[1] = expandArr8(posBnInCnProcBuf_BG2_CNG4); + p_lut->posBnInCnProcBuf[2] = expandArr8(posBnInCnProcBuf_BG2_CNG5); + p_lut->posBnInCnProcBuf[3] = expandArr8(posBnInCnProcBuf_BG2_CNG6); + p_lut->posBnInCnProcBuf[4] = expandArr8(posBnInCnProcBuf_BG2_CNG8); + p_lut->posBnInCnProcBuf[5] = expandArr8(posBnInCnProcBuf_BG2_CNG10); // LUT that only depend on R if (R == 15) { - p_lut->startAddrBnProcBuf[0] = (const uint32_t**) startAddrBnProcBuf_BG2_R15_CNG3; - p_lut->startAddrBnProcBuf[1] = (const uint32_t**) startAddrBnProcBuf_BG2_R15_CNG4; - p_lut->startAddrBnProcBuf[2] = (const uint32_t**) startAddrBnProcBuf_BG2_R15_CNG5; - p_lut->startAddrBnProcBuf[3] = (const uint32_t**) startAddrBnProcBuf_BG2_R15_CNG6; - p_lut->startAddrBnProcBuf[4] = (const uint32_t**) startAddrBnProcBuf_BG2_R15_CNG8; - p_lut->startAddrBnProcBuf[5] = (const uint32_t**) startAddrBnProcBuf_BG2_R15_CNG10; - p_lut->startAddrBnProcBuf[6] = NULL; - p_lut->startAddrBnProcBuf[7] = NULL; - p_lut->startAddrBnProcBuf[8] = NULL; + p_lut->startAddrBnProcBuf[0] = expandArr32(startAddrBnProcBuf_BG2_R15_CNG3); + p_lut->startAddrBnProcBuf[1] = expandArr32(startAddrBnProcBuf_BG2_R15_CNG4); + p_lut->startAddrBnProcBuf[2] = expandArr32(startAddrBnProcBuf_BG2_R15_CNG5); + p_lut->startAddrBnProcBuf[3] = expandArr32(startAddrBnProcBuf_BG2_R15_CNG6); + p_lut->startAddrBnProcBuf[4] = expandArr32(startAddrBnProcBuf_BG2_R15_CNG8); + p_lut->startAddrBnProcBuf[5] = expandArr32(startAddrBnProcBuf_BG2_R15_CNG10); - p_lut->bnPosBnProcBuf[0] = (const uint8_t**) bnPosBnProcBuf_BG2_R15_CNG3; - p_lut->bnPosBnProcBuf[1] = (const uint8_t**) bnPosBnProcBuf_BG2_R15_CNG4; - p_lut->bnPosBnProcBuf[2] = (const uint8_t**) bnPosBnProcBuf_BG2_R15_CNG5; - p_lut->bnPosBnProcBuf[3] = (const uint8_t**) bnPosBnProcBuf_BG2_R15_CNG6; - p_lut->bnPosBnProcBuf[4] = (const uint8_t**) bnPosBnProcBuf_BG2_R15_CNG8; - p_lut->bnPosBnProcBuf[5] = (const uint8_t**) bnPosBnProcBuf_BG2_R15_CNG10; - p_lut->bnPosBnProcBuf[6] = NULL; - p_lut->bnPosBnProcBuf[7] = NULL; - p_lut->bnPosBnProcBuf[8] = NULL; + p_lut->bnPosBnProcBuf[0] = expandArr8(bnPosBnProcBuf_BG2_R15_CNG3); + p_lut->bnPosBnProcBuf[1] = expandArr8(bnPosBnProcBuf_BG2_R15_CNG4); + p_lut->bnPosBnProcBuf[2] = expandArr8(bnPosBnProcBuf_BG2_R15_CNG5); + p_lut->bnPosBnProcBuf[3] = expandArr8(bnPosBnProcBuf_BG2_R15_CNG6); + p_lut->bnPosBnProcBuf[4] = expandArr8(bnPosBnProcBuf_BG2_R15_CNG8); + p_lut->bnPosBnProcBuf[5] = expandArr8(bnPosBnProcBuf_BG2_R15_CNG10); - p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG2_R15; - p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG2_R15; + p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG2_R15; + p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG2_R15; - p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG2_R15; - p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG2_R15; - p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG2_R15; - p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R15; + p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG2_R15; + p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG2_R15; + p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG2_R15; + p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R15; - numLLR = NR_LDPC_NCOL_BG2_R15*Z; + numLLR = NR_LDPC_NCOL_BG2_R15 * Z; } else if (R == 13) { - p_lut->startAddrBnProcBuf[0] = NULL; - p_lut->startAddrBnProcBuf[1] = (const uint32_t**) startAddrBnProcBuf_BG2_R13_CNG4; - p_lut->startAddrBnProcBuf[2] = (const uint32_t**) startAddrBnProcBuf_BG2_R13_CNG5; - p_lut->startAddrBnProcBuf[3] = (const uint32_t**) startAddrBnProcBuf_BG2_R13_CNG6; - p_lut->startAddrBnProcBuf[4] = (const uint32_t**) startAddrBnProcBuf_BG2_R13_CNG8; - p_lut->startAddrBnProcBuf[5] = (const uint32_t**) startAddrBnProcBuf_BG2_R13_CNG10; - p_lut->startAddrBnProcBuf[6] = NULL; - p_lut->startAddrBnProcBuf[7] = NULL; - p_lut->startAddrBnProcBuf[8] = NULL; + p_lut->startAddrBnProcBuf[1] = expandArr32(startAddrBnProcBuf_BG2_R13_CNG4); + p_lut->startAddrBnProcBuf[2] = expandArr32(startAddrBnProcBuf_BG2_R13_CNG5); + p_lut->startAddrBnProcBuf[3] = expandArr32(startAddrBnProcBuf_BG2_R13_CNG6); + p_lut->startAddrBnProcBuf[4] = expandArr32(startAddrBnProcBuf_BG2_R13_CNG8); + p_lut->startAddrBnProcBuf[5] = expandArr32(startAddrBnProcBuf_BG2_R13_CNG10); - p_lut->bnPosBnProcBuf[0] = NULL; - p_lut->bnPosBnProcBuf[1] = (const uint8_t**) bnPosBnProcBuf_BG2_R13_CNG4; - p_lut->bnPosBnProcBuf[2] = (const uint8_t**) bnPosBnProcBuf_BG2_R13_CNG5; - p_lut->bnPosBnProcBuf[3] = (const uint8_t**) bnPosBnProcBuf_BG2_R13_CNG6; - p_lut->bnPosBnProcBuf[4] = (const uint8_t**) bnPosBnProcBuf_BG2_R13_CNG8; - p_lut->bnPosBnProcBuf[5] = (const uint8_t**) bnPosBnProcBuf_BG2_R13_CNG10; - p_lut->bnPosBnProcBuf[6] = NULL; - p_lut->bnPosBnProcBuf[7] = NULL; - p_lut->bnPosBnProcBuf[8] = NULL; + p_lut->bnPosBnProcBuf[1] = expandArr8(bnPosBnProcBuf_BG2_R13_CNG4); + p_lut->bnPosBnProcBuf[2] = expandArr8(bnPosBnProcBuf_BG2_R13_CNG5); + p_lut->bnPosBnProcBuf[3] = expandArr8(bnPosBnProcBuf_BG2_R13_CNG6); + p_lut->bnPosBnProcBuf[4] = expandArr8(bnPosBnProcBuf_BG2_R13_CNG8); + p_lut->bnPosBnProcBuf[5] = expandArr8(bnPosBnProcBuf_BG2_R13_CNG10); - p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG2_R13; - p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG2_R13; + p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG2_R13; + p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG2_R13; - p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG2_R13; - p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG2_R13; - p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG2_R13; - p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R13; + p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG2_R13; + p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG2_R13; + p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG2_R13; + p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R13; - numLLR = NR_LDPC_NCOL_BG2_R13*Z; + numLLR = NR_LDPC_NCOL_BG2_R13 * Z; } else if (R == 23) { - p_lut->startAddrBnProcBuf[0] = NULL; - p_lut->startAddrBnProcBuf[1] = (const uint32_t**) startAddrBnProcBuf_BG2_R23_CNG4; - p_lut->startAddrBnProcBuf[2] = NULL; - p_lut->startAddrBnProcBuf[3] = (const uint32_t**) startAddrBnProcBuf_BG2_R23_CNG6; - p_lut->startAddrBnProcBuf[4] = (const uint32_t**) startAddrBnProcBuf_BG2_R23_CNG8; - p_lut->startAddrBnProcBuf[5] = (const uint32_t**) startAddrBnProcBuf_BG2_R23_CNG10; - p_lut->startAddrBnProcBuf[6] = NULL; - p_lut->startAddrBnProcBuf[7] = NULL; - p_lut->startAddrBnProcBuf[8] = NULL; + p_lut->startAddrBnProcBuf[1] = expandArr32(startAddrBnProcBuf_BG2_R23_CNG4); + p_lut->startAddrBnProcBuf[3] = expandArr32(startAddrBnProcBuf_BG2_R23_CNG6); + p_lut->startAddrBnProcBuf[4] = expandArr32(startAddrBnProcBuf_BG2_R23_CNG8); + p_lut->startAddrBnProcBuf[5] = expandArr32(startAddrBnProcBuf_BG2_R23_CNG10); - p_lut->bnPosBnProcBuf[0] = NULL; - p_lut->bnPosBnProcBuf[1] = (const uint8_t**) bnPosBnProcBuf_BG2_R23_CNG4; - p_lut->bnPosBnProcBuf[2] = NULL; - p_lut->bnPosBnProcBuf[3] = (const uint8_t**) bnPosBnProcBuf_BG2_R23_CNG6; - p_lut->bnPosBnProcBuf[4] = (const uint8_t**) bnPosBnProcBuf_BG2_R23_CNG8; - p_lut->bnPosBnProcBuf[5] = (const uint8_t**) bnPosBnProcBuf_BG2_R23_CNG10; - p_lut->bnPosBnProcBuf[6] = NULL; - p_lut->bnPosBnProcBuf[7] = NULL; - p_lut->bnPosBnProcBuf[8] = NULL; + p_lut->bnPosBnProcBuf[1] = expandArr8(bnPosBnProcBuf_BG2_R23_CNG4); + p_lut->bnPosBnProcBuf[3] = expandArr8(bnPosBnProcBuf_BG2_R23_CNG6); + p_lut->bnPosBnProcBuf[4] = expandArr8(bnPosBnProcBuf_BG2_R23_CNG8); + p_lut->bnPosBnProcBuf[5] = expandArr8(bnPosBnProcBuf_BG2_R23_CNG10); - p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG2_R23; - p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG2_R23; + p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG2_R23; + p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG2_R23; - p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG2_R23; - p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG2_R23; - p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG2_R23; - p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R23; + p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG2_R23; + p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG2_R23; + p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG2_R23; + p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R23; - numLLR = NR_LDPC_NCOL_BG2_R23*Z; + numLLR = NR_LDPC_NCOL_BG2_R23 * Z; } // LUT that depend on Z and R @@ -165,678 +152,515 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu { case 2: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z2_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z2_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z2_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z2_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z2_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z2_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z2_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z2_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z2_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z2_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z2_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z2_CNG10); + break; } case 3: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z3_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z3_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z3_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z3_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z3_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z3_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z3_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z3_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z3_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z3_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z3_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z3_CNG10); + break; } case 4: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z4_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z4_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z4_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z4_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z4_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z4_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z4_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z4_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z4_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z4_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z4_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z4_CNG10); + break; } case 5: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z5_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z5_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z5_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z5_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z5_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z5_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z5_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z5_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z5_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z5_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z5_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z5_CNG10); + break; } case 6: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z6_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z6_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z6_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z6_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z6_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z6_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z6_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z6_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z6_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z6_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z6_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z6_CNG10); + break; } case 7: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z7_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z7_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z7_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z7_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z7_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z7_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z7_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z7_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z7_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z7_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z7_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z7_CNG10); + break; } case 8: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z8_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z8_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z8_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z8_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z8_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z8_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z8_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z8_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z8_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z8_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z8_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z8_CNG10); + break; } case 9: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z9_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z9_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z9_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z9_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z9_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z9_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z9_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z9_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z9_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z9_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z9_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z9_CNG10); + break; } case 10: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z10_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z10_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z10_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z10_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z10_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z10_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z10_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z10_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z10_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z10_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z10_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z10_CNG10); + break; } case 11: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z11_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z11_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z11_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z11_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z11_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z11_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z11_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z11_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z11_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z11_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z11_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z11_CNG10); + break; } case 12: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z12_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z12_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z12_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z12_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z12_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z12_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z12_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z12_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z12_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z12_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z12_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z12_CNG10); + break; } case 13: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z13_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z13_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z13_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z13_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z13_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z13_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z13_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z13_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z13_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z13_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z13_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z13_CNG10); + break; } case 14: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z14_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z14_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z14_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z14_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z14_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z14_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z14_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z14_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z14_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z14_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z14_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z14_CNG10); + break; } case 15: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z15_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z15_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z15_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z15_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z15_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z15_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z15_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z15_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z15_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z15_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z15_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z15_CNG10); + break; } case 16: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z16_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z16_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z16_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z16_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z16_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z16_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z16_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z16_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z16_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z16_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z16_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z16_CNG10); + break; } case 18: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z18_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z18_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z18_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z18_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z18_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z18_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z18_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z18_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z18_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z18_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z18_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z18_CNG10); + break; } case 20: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z20_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z20_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z20_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z20_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z20_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z20_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z20_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z20_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z20_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z20_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z20_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z20_CNG10); + break; } case 22: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z22_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z22_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z22_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z22_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z22_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z22_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z22_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z22_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z22_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z22_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z22_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z22_CNG10); + break; } case 24: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z24_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z24_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z24_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z24_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z24_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z24_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z24_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z24_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z24_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z24_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z24_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z24_CNG10); + break; } case 26: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z26_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z26_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z26_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z26_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z26_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z26_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z26_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z26_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z26_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z26_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z26_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z26_CNG10); + break; } case 28: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z28_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z28_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z28_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z28_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z28_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z28_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z28_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z28_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z28_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z28_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z28_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z28_CNG10); + break; } case 30: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z30_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z30_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z30_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z30_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z30_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z30_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z30_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z30_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z30_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z30_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z30_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z30_CNG10); + break; } case 32: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z32_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z32_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z32_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z32_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z32_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z32_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z32_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z32_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z32_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z32_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z32_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z32_CNG10); + break; } case 36: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z36_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z36_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z36_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z36_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z36_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z36_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z36_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z36_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z36_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z36_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z36_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z36_CNG10); + break; } case 40: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z40_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z40_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z40_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z40_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z40_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z40_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z40_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z40_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z40_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z40_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z40_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z40_CNG10); + break; } case 44: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z44_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z44_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z44_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z44_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z44_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z44_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z44_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z44_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z44_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z44_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z44_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z44_CNG10); + break; } case 48: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z48_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z48_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z48_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z48_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z48_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z48_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z48_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z48_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z48_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z48_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z48_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z48_CNG10); + break; } case 52: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z52_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z52_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z52_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z52_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z52_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z52_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z52_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z52_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z52_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z52_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z52_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z52_CNG10); + break; } case 56: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z56_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z56_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z56_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z56_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z56_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z56_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z56_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z56_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z56_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z56_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z56_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z56_CNG10); + break; } case 60: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z60_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z60_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z60_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z60_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z60_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z60_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z60_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z60_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z60_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z60_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z60_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z60_CNG10); + break; } case 64: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z64_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z64_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z64_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z64_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z64_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z64_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z64_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z64_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z64_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z64_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z64_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z64_CNG10); + break; } case 72: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z72_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z72_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z72_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z72_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z72_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z72_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z72_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z72_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z72_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z72_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z72_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z72_CNG10); + break; } case 80: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z80_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z80_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z80_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z80_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z80_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z80_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z80_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z80_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z80_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z80_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z80_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z80_CNG10); + break; } case 88: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z88_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z88_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z88_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z88_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z88_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z88_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z88_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z88_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z88_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z88_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z88_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z88_CNG10); + break; } case 96: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z96_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z96_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z96_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z96_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z96_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z96_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z96_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z96_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z96_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z96_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z96_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z96_CNG10); + break; } case 104: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z104_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z104_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z104_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z104_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z104_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z104_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z104_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z104_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z104_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z104_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z104_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z104_CNG10); + break; } case 112: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z112_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z112_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z112_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z112_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z112_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z112_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z112_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z112_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z112_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z112_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z112_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z112_CNG10); + break; } case 120: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z120_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z120_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z120_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z120_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z120_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z120_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z120_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z120_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z120_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z120_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z120_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z120_CNG10); + break; } case 128: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z128_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z128_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z128_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z128_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z128_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z128_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z128_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z128_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z128_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z128_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z128_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z128_CNG10); + break; } case 144: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z144_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z144_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z144_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z144_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z144_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z144_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z144_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z144_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z144_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z144_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z144_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z144_CNG10); + break; } case 160: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z160_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z160_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z160_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z160_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z160_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z160_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z160_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z160_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z160_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z160_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z160_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z160_CNG10); + break; } case 176: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z176_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z176_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z176_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z176_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z176_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z176_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z176_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z176_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z176_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z176_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z176_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z176_CNG10); + break; } case 192: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z192_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z192_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z192_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z192_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z192_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z192_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z192_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z192_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z192_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z192_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z192_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z192_CNG10); + break; } case 208: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z208_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z208_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z208_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z208_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z208_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z208_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z208_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z208_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z208_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z208_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z208_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z208_CNG10); + break; } case 224: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z224_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z224_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z224_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z224_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z224_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z224_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z224_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z224_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z224_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z224_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z224_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z224_CNG10); + break; } case 240: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z240_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z240_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z240_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z240_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z240_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z240_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z240_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z240_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z240_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z240_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z240_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z240_CNG10); + break; } case 256: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z256_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z256_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z256_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z256_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z256_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z256_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z256_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z256_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z256_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z256_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z256_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z256_CNG10); + break; } case 288: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z288_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z288_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z288_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z288_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z288_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z288_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z288_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z288_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z288_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z288_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z288_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z288_CNG10); + break; } case 320: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z320_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z320_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z320_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z320_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z320_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z320_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z320_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z320_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z320_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z320_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z320_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z320_CNG10); + break; } case 352: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z352_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z352_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z352_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z352_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z352_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z352_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z352_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z352_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z352_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z352_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z352_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z352_CNG10); + break; } case 384: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG2_Z384_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG2_Z384_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG2_Z384_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG2_Z384_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG2_Z384_CNG8; - p_lut->circShift[5] = (const uint16_t**) circShift_BG2_Z384_CNG10; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; - break; + p_lut->circShift[0] = expandArr16(circShift_BG2_Z384_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG2_Z384_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG2_Z384_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG2_Z384_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG2_Z384_CNG8); + p_lut->circShift[5] = expandArr16(circShift_BG2_Z384_CNG10); + break; } - default: - { - p_lut->circShift[0] = NULL; - p_lut->circShift[1] = NULL; - p_lut->circShift[2] = NULL; - p_lut->circShift[3] = NULL; - p_lut->circShift[4] = NULL; - p_lut->circShift[5] = NULL; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; + default: { } } } @@ -845,112 +669,89 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu // LUT that only depend on BG p_lut->startAddrCnGroups = lut_startAddrCnGroups_BG1; - p_lut->posBnInCnProcBuf[0] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG3; - p_lut->posBnInCnProcBuf[1] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG4; - p_lut->posBnInCnProcBuf[2] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG5; - p_lut->posBnInCnProcBuf[3] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG6; - p_lut->posBnInCnProcBuf[4] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG7; - p_lut->posBnInCnProcBuf[5] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG8; - p_lut->posBnInCnProcBuf[6] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG9; - p_lut->posBnInCnProcBuf[7] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG10; - p_lut->posBnInCnProcBuf[8] = (const uint8_t**) posBnInCnProcBuf_BG1_CNG19; + p_lut->posBnInCnProcBuf[0] = expandArr8(posBnInCnProcBuf_BG1_CNG3); + p_lut->posBnInCnProcBuf[1] = expandArr8(posBnInCnProcBuf_BG1_CNG4); + p_lut->posBnInCnProcBuf[2] = expandArr8(posBnInCnProcBuf_BG1_CNG5); + p_lut->posBnInCnProcBuf[3] = expandArr8(posBnInCnProcBuf_BG1_CNG6); + p_lut->posBnInCnProcBuf[4] = expandArr8(posBnInCnProcBuf_BG1_CNG7); + p_lut->posBnInCnProcBuf[5] = expandArr8(posBnInCnProcBuf_BG1_CNG8); + p_lut->posBnInCnProcBuf[6] = expandArr8(posBnInCnProcBuf_BG1_CNG9); + p_lut->posBnInCnProcBuf[7] = expandArr8(posBnInCnProcBuf_BG1_CNG10); + p_lut->posBnInCnProcBuf[8] = expandArr8(posBnInCnProcBuf_BG1_CNG19); // LUT that only depend on R if (R == 13) { - p_lut->startAddrBnProcBuf[0] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG3; - p_lut->startAddrBnProcBuf[1] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG4; - p_lut->startAddrBnProcBuf[2] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG5; - p_lut->startAddrBnProcBuf[3] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG6; - p_lut->startAddrBnProcBuf[4] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG7; - p_lut->startAddrBnProcBuf[5] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG8; - p_lut->startAddrBnProcBuf[6] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG9; - p_lut->startAddrBnProcBuf[7] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG10; - p_lut->startAddrBnProcBuf[8] = (const uint32_t**) startAddrBnProcBuf_BG1_R13_CNG19; + p_lut->startAddrBnProcBuf[0] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG3); + p_lut->startAddrBnProcBuf[1] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG4); + p_lut->startAddrBnProcBuf[2] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG5); + p_lut->startAddrBnProcBuf[3] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG6); + p_lut->startAddrBnProcBuf[4] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG7); + p_lut->startAddrBnProcBuf[5] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG8); + p_lut->startAddrBnProcBuf[6] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG9); + p_lut->startAddrBnProcBuf[7] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG10); + p_lut->startAddrBnProcBuf[8] = expandArr32(startAddrBnProcBuf_BG1_R13_CNG19); - p_lut->bnPosBnProcBuf[0] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[1] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG4; - p_lut->bnPosBnProcBuf[2] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG5; - p_lut->bnPosBnProcBuf[3] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG6; - p_lut->bnPosBnProcBuf[4] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG7; - p_lut->bnPosBnProcBuf[5] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG8; - p_lut->bnPosBnProcBuf[6] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG9; - p_lut->bnPosBnProcBuf[7] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG10; - p_lut->bnPosBnProcBuf[8] = (const uint8_t**) bnPosBnProcBuf_BG1_R13_CNG19; + p_lut->bnPosBnProcBuf[1] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG4); + p_lut->bnPosBnProcBuf[2] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG5); + p_lut->bnPosBnProcBuf[3] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG6); + p_lut->bnPosBnProcBuf[4] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG7); + p_lut->bnPosBnProcBuf[5] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG8); + p_lut->bnPosBnProcBuf[6] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG9); + p_lut->bnPosBnProcBuf[7] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG10); + p_lut->bnPosBnProcBuf[8] = expandArr8(bnPosBnProcBuf_BG1_R13_CNG19); - p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG1_R13; - p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG1_R13; + p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG1_R13; + p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG1_R13; - p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG1_R13; - p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG1_R13; - p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG1_R13; - p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R13; + p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG1_R13; + p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG1_R13; + p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG1_R13; + p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R13; - numLLR = NR_LDPC_NCOL_BG1_R13*Z; + numLLR = NR_LDPC_NCOL_BG1_R13 * Z; } else if (R == 23) { - p_lut->startAddrBnProcBuf[0] = (const uint32_t**) startAddrBnProcBuf_BG1_R23_CNG3; - p_lut->startAddrBnProcBuf[1] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[2] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[3] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[4] = (const uint32_t**) startAddrBnProcBuf_BG1_R23_CNG7; - p_lut->startAddrBnProcBuf[5] = (const uint32_t**) startAddrBnProcBuf_BG1_R23_CNG8; - p_lut->startAddrBnProcBuf[6] = (const uint32_t**) startAddrBnProcBuf_BG1_R23_CNG9; - p_lut->startAddrBnProcBuf[7] = (const uint32_t**) startAddrBnProcBuf_BG1_R23_CNG10; - p_lut->startAddrBnProcBuf[8] = (const uint32_t**) startAddrBnProcBuf_BG1_R23_CNG19; + p_lut->startAddrBnProcBuf[0] = expandArr32(startAddrBnProcBuf_BG1_R23_CNG3); + p_lut->startAddrBnProcBuf[4] = expandArr32(startAddrBnProcBuf_BG1_R23_CNG7); + p_lut->startAddrBnProcBuf[5] = expandArr32(startAddrBnProcBuf_BG1_R23_CNG8); + p_lut->startAddrBnProcBuf[6] = expandArr32(startAddrBnProcBuf_BG1_R23_CNG9); + p_lut->startAddrBnProcBuf[7] = expandArr32(startAddrBnProcBuf_BG1_R23_CNG10); + p_lut->startAddrBnProcBuf[8] = expandArr32(startAddrBnProcBuf_BG1_R23_CNG19); - p_lut->bnPosBnProcBuf[0] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[1] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[2] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[3] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[4] = (const uint8_t**) bnPosBnProcBuf_BG1_R23_CNG7; - p_lut->bnPosBnProcBuf[5] = (const uint8_t**) bnPosBnProcBuf_BG1_R23_CNG8; - p_lut->bnPosBnProcBuf[6] = (const uint8_t**) bnPosBnProcBuf_BG1_R23_CNG9; - p_lut->bnPosBnProcBuf[7] = (const uint8_t**) bnPosBnProcBuf_BG1_R23_CNG10; - p_lut->bnPosBnProcBuf[8] = (const uint8_t**) bnPosBnProcBuf_BG1_R23_CNG19; + p_lut->bnPosBnProcBuf[4] = expandArr8(bnPosBnProcBuf_BG1_R23_CNG7); + p_lut->bnPosBnProcBuf[5] = expandArr8(bnPosBnProcBuf_BG1_R23_CNG8); + p_lut->bnPosBnProcBuf[6] = expandArr8(bnPosBnProcBuf_BG1_R23_CNG9); + p_lut->bnPosBnProcBuf[7] = expandArr8(bnPosBnProcBuf_BG1_R23_CNG10); + p_lut->bnPosBnProcBuf[8] = expandArr8(bnPosBnProcBuf_BG1_R23_CNG19); - p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG1_R23; - p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG1_R23; + p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG1_R23; + p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG1_R23; - p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG1_R23; - p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG1_R23; - p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG1_R23; - p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R23; + p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG1_R23; + p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG1_R23; + p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG1_R23; + p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R23; - numLLR = NR_LDPC_NCOL_BG1_R23*Z; + numLLR = NR_LDPC_NCOL_BG1_R23 * Z; } else if (R == 89) { - p_lut->startAddrBnProcBuf[0] = (const uint32_t**) startAddrBnProcBuf_BG1_R89_CNG3; - p_lut->startAddrBnProcBuf[1] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[2] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[3] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[4] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[5] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[6] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[7] = (const uint32_t**) NULL; - p_lut->startAddrBnProcBuf[8] = (const uint32_t**) startAddrBnProcBuf_BG1_R89_CNG19; + p_lut->startAddrBnProcBuf[0] = expandArr32(startAddrBnProcBuf_BG1_R89_CNG3); + p_lut->startAddrBnProcBuf[8] = expandArr32(startAddrBnProcBuf_BG1_R89_CNG19); - p_lut->bnPosBnProcBuf[0] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[1] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[2] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[3] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[4] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[5] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[6] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[7] = (const uint8_t**) NULL; - p_lut->bnPosBnProcBuf[8] = (const uint8_t**) bnPosBnProcBuf_BG1_R89_CNG19; + p_lut->bnPosBnProcBuf[8] = expandArr8(bnPosBnProcBuf_BG1_R89_CNG19); - p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG1_R89; - p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG1_R89; + p_lut->llr2llrProcBufAddr = llr2llrProcBufAddr_BG1_R89; + p_lut->llr2llrProcBufBnPos = llr2llrProcBufBnPos_BG1_R89; - p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG1_R89; - p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG1_R89; - p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG1_R89; - p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R89; + p_lut->numCnInCnGroups = lut_numCnInCnGroups_BG1_R89; + p_lut->numBnInBnGroups = lut_numBnInBnGroups_BG1_R89; + p_lut->startAddrBnGroups = lut_startAddrBnGroups_BG1_R89; + p_lut->startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R89; - numLLR = NR_LDPC_NCOL_BG1_R89*Z; + numLLR = NR_LDPC_NCOL_BG1_R89 * Z; } // LUT that depend on Z and R @@ -958,678 +759,668 @@ static inline uint32_t nrLDPC_init(t_nrLDPC_dec_params* p_decParams, t_nrLDPC_lu { case 2: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z2_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z2_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z2_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z2_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z2_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z2_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z2_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z2_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z2_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z2_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z2_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z2_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z2_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z2_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z2_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z2_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z2_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z2_CNG19); + break; } case 3: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z3_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z3_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z3_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z3_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z3_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z3_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z3_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z3_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z3_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z3_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z3_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z3_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z3_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z3_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z3_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z3_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z3_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z3_CNG19); + break; } case 4: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z4_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z4_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z4_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z4_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z4_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z4_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z4_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z4_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z4_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z4_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z4_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z4_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z4_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z4_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z4_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z4_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z4_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z4_CNG19); + break; } case 5: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z5_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z5_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z5_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z5_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z5_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z5_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z5_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z5_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z5_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z5_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z5_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z5_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z5_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z5_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z5_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z5_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z5_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z5_CNG19); + break; } case 6: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z6_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z6_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z6_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z6_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z6_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z6_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z6_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z6_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z6_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z6_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z6_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z6_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z6_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z6_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z6_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z6_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z6_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z6_CNG19); + break; } case 7: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z7_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z7_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z7_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z7_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z7_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z7_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z7_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z7_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z7_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z7_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z7_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z7_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z7_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z7_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z7_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z7_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z7_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z7_CNG19); + break; } case 8: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z8_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z8_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z8_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z8_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z8_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z8_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z8_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z8_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z8_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z8_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z8_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z8_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z8_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z8_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z8_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z8_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z8_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z8_CNG19); + break; } case 9: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z9_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z9_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z9_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z9_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z9_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z9_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z9_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z9_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z9_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z9_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z9_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z9_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z9_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z9_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z9_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z9_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z9_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z9_CNG19); + break; } case 10: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z10_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z10_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z10_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z10_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z10_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z10_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z10_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z10_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z10_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z10_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z10_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z10_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z10_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z10_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z10_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z10_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z10_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z10_CNG19); + break; } case 11: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z11_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z11_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z11_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z11_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z11_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z11_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z11_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z11_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z11_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z11_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z11_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z11_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z11_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z11_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z11_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z11_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z11_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z11_CNG19); + break; } case 12: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z12_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z12_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z12_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z12_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z12_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z12_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z12_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z12_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z12_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z12_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z12_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z12_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z12_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z12_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z12_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z12_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z12_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z12_CNG19); + break; } case 13: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z13_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z13_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z13_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z13_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z13_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z13_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z13_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z13_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z13_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z13_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z13_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z13_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z13_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z13_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z13_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z13_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z13_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z13_CNG19); + break; } case 14: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z14_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z14_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z14_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z14_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z14_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z14_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z14_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z14_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z14_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z14_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z14_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z14_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z14_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z14_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z14_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z14_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z14_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z14_CNG19); + break; } case 15: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z15_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z15_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z15_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z15_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z15_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z15_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z15_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z15_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z15_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z15_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z15_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z15_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z15_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z15_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z15_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z15_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z15_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z15_CNG19); + break; } case 16: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z16_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z16_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z16_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z16_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z16_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z16_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z16_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z16_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z16_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z16_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z16_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z16_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z16_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z16_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z16_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z16_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z16_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z16_CNG19); + break; } case 18: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z18_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z18_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z18_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z18_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z18_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z18_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z18_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z18_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z18_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z18_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z18_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z18_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z18_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z18_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z18_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z18_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z18_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z18_CNG19); + break; } case 20: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z20_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z20_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z20_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z20_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z20_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z20_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z20_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z20_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z20_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z20_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z20_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z20_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z20_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z20_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z20_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z20_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z20_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z20_CNG19); + break; } case 22: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z22_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z22_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z22_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z22_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z22_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z22_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z22_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z22_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z22_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z22_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z22_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z22_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z22_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z22_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z22_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z22_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z22_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z22_CNG19); + break; } case 24: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z24_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z24_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z24_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z24_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z24_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z24_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z24_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z24_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z24_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z24_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z24_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z24_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z24_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z24_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z24_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z24_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z24_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z24_CNG19); + break; } case 26: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z26_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z26_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z26_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z26_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z26_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z26_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z26_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z26_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z26_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z26_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z26_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z26_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z26_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z26_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z26_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z26_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z26_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z26_CNG19); + break; } case 28: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z28_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z28_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z28_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z28_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z28_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z28_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z28_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z28_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z28_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z28_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z28_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z28_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z28_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z28_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z28_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z28_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z28_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z28_CNG19); + break; } case 30: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z30_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z30_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z30_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z30_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z30_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z30_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z30_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z30_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z30_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z30_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z30_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z30_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z30_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z30_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z30_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z30_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z30_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z30_CNG19); + break; } case 32: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z32_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z32_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z32_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z32_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z32_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z32_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z32_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z32_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z32_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z32_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z32_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z32_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z32_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z32_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z32_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z32_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z32_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z32_CNG19); + break; } case 36: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z36_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z36_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z36_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z36_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z36_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z36_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z36_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z36_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z36_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z36_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z36_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z36_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z36_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z36_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z36_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z36_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z36_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z36_CNG19); + break; } case 40: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z40_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z40_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z40_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z40_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z40_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z40_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z40_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z40_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z40_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z40_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z40_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z40_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z40_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z40_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z40_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z40_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z40_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z40_CNG19); + break; } case 44: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z44_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z44_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z44_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z44_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z44_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z44_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z44_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z44_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z44_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z44_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z44_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z44_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z44_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z44_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z44_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z44_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z44_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z44_CNG19); + break; } case 48: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z48_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z48_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z48_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z48_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z48_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z48_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z48_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z48_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z48_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z48_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z48_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z48_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z48_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z48_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z48_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z48_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z48_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z48_CNG19); + break; } case 52: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z52_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z52_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z52_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z52_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z52_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z52_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z52_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z52_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z52_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z52_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z52_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z52_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z52_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z52_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z52_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z52_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z52_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z52_CNG19); + break; } case 56: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z56_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z56_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z56_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z56_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z56_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z56_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z56_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z56_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z56_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z56_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z56_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z56_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z56_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z56_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z56_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z56_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z56_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z56_CNG19); + break; } case 60: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z60_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z60_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z60_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z60_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z60_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z60_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z60_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z60_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z60_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z60_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z60_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z60_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z60_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z60_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z60_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z60_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z60_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z60_CNG19); + break; } case 64: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z64_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z64_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z64_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z64_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z64_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z64_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z64_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z64_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z64_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z64_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z64_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z64_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z64_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z64_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z64_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z64_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z64_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z64_CNG19); + break; } case 72: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z72_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z72_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z72_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z72_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z72_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z72_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z72_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z72_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z72_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z72_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z72_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z72_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z72_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z72_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z72_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z72_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z72_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z72_CNG19); + break; } case 80: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z80_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z80_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z80_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z80_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z80_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z80_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z80_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z80_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z80_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z80_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z80_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z80_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z80_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z80_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z80_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z80_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z80_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z80_CNG19); + break; } case 88: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z88_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z88_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z88_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z88_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z88_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z88_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z88_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z88_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z88_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z88_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z88_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z88_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z88_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z88_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z88_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z88_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z88_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z88_CNG19); + break; } case 96: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z96_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z96_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z96_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z96_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z96_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z96_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z96_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z96_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z96_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z96_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z96_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z96_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z96_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z96_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z96_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z96_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z96_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z96_CNG19); + break; } case 104: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z104_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z104_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z104_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z104_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z104_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z104_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z104_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z104_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z104_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z104_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z104_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z104_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z104_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z104_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z104_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z104_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z104_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z104_CNG19); + break; } case 112: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z112_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z112_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z112_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z112_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z112_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z112_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z112_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z112_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z112_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z112_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z112_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z112_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z112_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z112_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z112_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z112_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z112_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z112_CNG19); + break; } case 120: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z120_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z120_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z120_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z120_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z120_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z120_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z120_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z120_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z120_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z120_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z120_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z120_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z120_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z120_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z120_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z120_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z120_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z120_CNG19); + break; } case 128: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z128_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z128_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z128_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z128_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z128_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z128_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z128_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z128_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z128_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z128_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z128_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z128_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z128_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z128_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z128_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z128_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z128_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z128_CNG19); + break; } case 144: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z144_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z144_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z144_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z144_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z144_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z144_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z144_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z144_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z144_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z144_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z144_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z144_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z144_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z144_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z144_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z144_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z144_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z144_CNG19); + break; } case 160: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z160_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z160_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z160_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z160_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z160_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z160_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z160_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z160_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z160_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z160_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z160_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z160_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z160_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z160_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z160_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z160_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z160_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z160_CNG19); + break; } case 176: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z176_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z176_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z176_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z176_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z176_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z176_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z176_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z176_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z176_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z176_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z176_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z176_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z176_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z176_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z176_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z176_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z176_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z176_CNG19); + break; } case 192: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z192_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z192_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z192_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z192_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z192_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z192_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z192_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z192_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z192_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z192_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z192_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z192_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z192_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z192_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z192_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z192_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z192_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z192_CNG19); + break; } case 208: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z208_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z208_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z208_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z208_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z208_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z208_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z208_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z208_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z208_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z208_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z208_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z208_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z208_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z208_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z208_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z208_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z208_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z208_CNG19); + break; } case 224: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z224_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z224_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z224_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z224_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z224_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z224_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z224_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z224_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z224_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z224_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z224_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z224_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z224_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z224_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z224_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z224_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z224_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z224_CNG19); + break; } case 240: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z240_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z240_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z240_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z240_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z240_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z240_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z240_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z240_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z240_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z240_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z240_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z240_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z240_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z240_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z240_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z240_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z240_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z240_CNG19); + break; } case 256: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z256_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z256_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z256_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z256_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z256_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z256_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z256_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z256_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z256_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z256_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z256_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z256_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z256_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z256_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z256_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z256_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z256_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z256_CNG19); + break; } case 288: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z288_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z288_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z288_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z288_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z288_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z288_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z288_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z288_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z288_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z288_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z288_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z288_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z288_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z288_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z288_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z288_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z288_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z288_CNG19); + break; } case 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; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z320_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z320_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z320_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z320_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z320_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z320_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z320_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z320_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z320_CNG19); + break; } case 352: { - p_lut->circShift[0] = (const uint16_t**) circShift_BG1_Z352_CNG3; - p_lut->circShift[1] = (const uint16_t**) circShift_BG1_Z352_CNG4; - p_lut->circShift[2] = (const uint16_t**) circShift_BG1_Z352_CNG5; - p_lut->circShift[3] = (const uint16_t**) circShift_BG1_Z352_CNG6; - p_lut->circShift[4] = (const uint16_t**) circShift_BG1_Z352_CNG7; - p_lut->circShift[5] = (const uint16_t**) circShift_BG1_Z352_CNG8; - p_lut->circShift[6] = (const uint16_t**) circShift_BG1_Z352_CNG9; - p_lut->circShift[7] = (const uint16_t**) circShift_BG1_Z352_CNG10; - p_lut->circShift[8] = (const uint16_t**) circShift_BG1_Z352_CNG19; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z352_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z352_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z352_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z352_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z352_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z352_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z352_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z352_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z352_CNG19); + break; } case 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; - break; + p_lut->circShift[0] = expandArr16(circShift_BG1_Z384_CNG3); + p_lut->circShift[1] = expandArr16(circShift_BG1_Z384_CNG4); + p_lut->circShift[2] = expandArr16(circShift_BG1_Z384_CNG5); + p_lut->circShift[3] = expandArr16(circShift_BG1_Z384_CNG6); + p_lut->circShift[4] = expandArr16(circShift_BG1_Z384_CNG7); + p_lut->circShift[5] = expandArr16(circShift_BG1_Z384_CNG8); + p_lut->circShift[6] = expandArr16(circShift_BG1_Z384_CNG9); + p_lut->circShift[7] = expandArr16(circShift_BG1_Z384_CNG10); + p_lut->circShift[8] = expandArr16(circShift_BG1_Z384_CNG19); + break; } - default: - { - p_lut->circShift[0] = NULL; - p_lut->circShift[1] = NULL; - p_lut->circShift[2] = NULL; - p_lut->circShift[3] = NULL; - p_lut->circShift[4] = NULL; - p_lut->circShift[5] = NULL; - p_lut->circShift[6] = NULL; - p_lut->circShift[7] = NULL; - p_lut->circShift[8] = NULL; + default: { } } } diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h index ecbcac638d..de3bf58831 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h @@ -27,6 +27,7 @@ #define __NR_LDPC_MPASS__H__ #include +#include "common/utils/utils.h" #include "nrLDPCdecoder_defs.h" //#include /** @@ -42,6 +43,7 @@ \param cshift Circular shift */ +#define arrPos(a, b) a.d + b* a.dim2 static inline void *nrLDPC_inv_circ_memcpy(int8_t *str1, const int8_t *str2, uint16_t Z, uint16_t cshift) { uint16_t rem = Z - cshift; @@ -95,30 +97,25 @@ static inline void *nrLDPC_circ_memcpy(int8_t *str1, const int8_t *str2, uint16_ */ static inline void nrLDPC_llr2llrProcBuf(t_nrLDPC_lut* p_lut, int8_t* llr, int8_t* llrProcBuf, uint16_t Z, uint8_t BG) { - uint32_t i; - const uint8_t numBn2CnG1 = p_lut->numBnInBnGroups[0]; - uint32_t startColParity = (BG ==1 ) ? (NR_LDPC_START_COL_PARITY_BG1) : (NR_LDPC_START_COL_PARITY_BG2); + const uint8_t numBn2CnG1 = p_lut->numBnInBnGroups[0]; + uint32_t startColParity = (BG == 1) ? (NR_LDPC_START_COL_PARITY_BG1) : (NR_LDPC_START_COL_PARITY_BG2); - uint32_t colG1 = startColParity*Z; + uint32_t colG1 = startColParity * Z; - const uint16_t* lut_llr2llrProcBufAddr = p_lut->llr2llrProcBufAddr; - const uint8_t* lut_llr2llrProcBufBnPos = p_lut->llr2llrProcBufBnPos; + const uint16_t* lut_llr2llrProcBufAddr = p_lut->llr2llrProcBufAddr; + const uint8_t* lut_llr2llrProcBufBnPos = p_lut->llr2llrProcBufBnPos; - uint32_t idxBn; + // Copy LLRs connected to 1 CN + if (numBn2CnG1 > 0) { + memcpy(&llrProcBuf[0], &llr[colG1], numBn2CnG1 * Z); + } - // Copy LLRs connected to 1 CN - if (numBn2CnG1 > 0) - { - memcpy(&llrProcBuf[0], &llr[colG1], numBn2CnG1*Z); - } - - // First 2 columns might be set to zero directly if it's true they always belong to the groups with highest number of connected CNs... - for (i=0; icircShift[0]; - const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG1_R13[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[1]]) p_lut->circShift[1]; - const uint16_t (*lut_circShift_CNG5) [lut_numCnInCnGroups_BG1_R13[2]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[2]]) p_lut->circShift[2]; - const uint16_t (*lut_circShift_CNG6) [lut_numCnInCnGroups_BG1_R13[3]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[3]]) p_lut->circShift[3]; - const uint16_t (*lut_circShift_CNG7) [lut_numCnInCnGroups_BG1_R13[4]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[4]]) p_lut->circShift[4]; - const uint16_t (*lut_circShift_CNG8) [lut_numCnInCnGroups_BG1_R13[5]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[5]]) p_lut->circShift[5]; - const uint16_t (*lut_circShift_CNG9) [lut_numCnInCnGroups_BG1_R13[6]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[6]]) p_lut->circShift[6]; - const uint16_t (*lut_circShift_CNG10)[lut_numCnInCnGroups_BG1_R13[7]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[7]]) p_lut->circShift[7]; - const uint16_t (*lut_circShift_CNG19)[lut_numCnInCnGroups_BG1_R13[8]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[8]]) p_lut->circShift[8]; + const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups; + const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; - const uint8_t (*lut_posBnInCnProcBuf_CNG3) [lut_numCnInCnGroups_BG1_R13[0]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[0]]) p_lut->posBnInCnProcBuf[0]; - const uint8_t (*lut_posBnInCnProcBuf_CNG4) [lut_numCnInCnGroups_BG1_R13[1]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[1]]) p_lut->posBnInCnProcBuf[1]; - const uint8_t (*lut_posBnInCnProcBuf_CNG5) [lut_numCnInCnGroups_BG1_R13[2]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[2]]) p_lut->posBnInCnProcBuf[2]; - const uint8_t (*lut_posBnInCnProcBuf_CNG6) [lut_numCnInCnGroups_BG1_R13[3]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[3]]) p_lut->posBnInCnProcBuf[3]; - const uint8_t (*lut_posBnInCnProcBuf_CNG7) [lut_numCnInCnGroups_BG1_R13[4]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[4]]) p_lut->posBnInCnProcBuf[4]; - const uint8_t (*lut_posBnInCnProcBuf_CNG8) [lut_numCnInCnGroups_BG1_R13[5]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[5]]) p_lut->posBnInCnProcBuf[5]; - const uint8_t (*lut_posBnInCnProcBuf_CNG9) [lut_numCnInCnGroups_BG1_R13[6]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[6]]) p_lut->posBnInCnProcBuf[6]; - const uint8_t (*lut_posBnInCnProcBuf_CNG10)[lut_numCnInCnGroups_BG1_R13[7]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[7]]) p_lut->posBnInCnProcBuf[7]; - const uint8_t (*lut_posBnInCnProcBuf_CNG19)[lut_numCnInCnGroups_BG1_R13[8]] = (const uint8_t(*)[lut_numCnInCnGroups_BG1_R13[8]]) p_lut->posBnInCnProcBuf[8]; + uint32_t bitOffsetInGroup; - const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups; - const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; + // ===================================================================== + // CN group with 3 BNs - uint32_t i; - uint32_t j; + bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0] * NR_LDPC_ZMAX; - uint32_t idxBn = 0; - int8_t* p_cnProcBuf; - uint32_t bitOffsetInGroup; + for (int j = 0; j < 3; j++) { + const uint16_t* lut_circShift_CNG3 = p_lut->circShift[0].d; + int8_t* p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j * bitOffsetInGroup]; + const uint8_t* lut_posBnInCnProcBuf_CNG3 = p_lut->posBnInCnProcBuf[0].d; - // ===================================================================== - // CN group with 3 BNs + const int idxBn = lut_posBnInCnProcBuf_CNG3[j] * Z; - bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX; + nrLDPC_circ_memcpy(p_cnProcBuf, &llr[idxBn], Z, lut_circShift_CNG3[j]); + } + // ===================================================================== + // CN group with BNs + int BNs[] = {3, 4, 5, 6, 7, 8, 9, 10, 19}; + for (int bn = 1; bn < sizeofArray(BNs); bn++) { + bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[bn] * NR_LDPC_ZMAX; + for (int j = 0; j < BNs[bn]; j++) { + int8_t* p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[bn] + j * bitOffsetInGroup]; + const uint16_t* lut_circShift = arrPos(p_lut->circShift[bn], j); + const uint8_t* lut_posBnInCnProcBuf = arrPos(p_lut->posBnInCnProcBuf[bn], j); + for (int i = 0; i < lut_numCnInCnGroups[bn]; i++) { + const int idxBn = lut_posBnInCnProcBuf[i] * Z; - for (j=0; j<3; j++) - { - p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; + nrLDPC_circ_memcpy(p_cnProcBuf, &llr[idxBn], Z, lut_circShift[i]); - idxBn = lut_posBnInCnProcBuf_CNG3[j][0]*Z; - - nrLDPC_circ_memcpy(p_cnProcBuf, &llr[idxBn], Z, lut_circShift_CNG3[j][0]); + p_cnProcBuf += Z; + } } - - // ===================================================================== - // CN group with 4 BNs - - bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX; - - for (j=0; j<4; j++) - { - p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[1] + j*bitOffsetInGroup]; - - for (i=0; icircShift[0]; - const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG2_R15[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[1]]) p_lut->circShift[1]; - const uint16_t (*lut_circShift_CNG5) [lut_numCnInCnGroups_BG2_R15[2]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[2]]) p_lut->circShift[2]; - const uint16_t (*lut_circShift_CNG6) [lut_numCnInCnGroups_BG2_R15[3]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[3]]) p_lut->circShift[3]; - const uint16_t (*lut_circShift_CNG8) [lut_numCnInCnGroups_BG2_R15[4]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[4]]) p_lut->circShift[4]; - const uint16_t (*lut_circShift_CNG10) [lut_numCnInCnGroups_BG2_R15[5]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[5]]) p_lut->circShift[5]; + const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups; + const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; - const uint8_t (*lut_posBnInCnProcBuf_CNG3) [lut_numCnInCnGroups_BG2_R15[0]] = (const uint8_t(*)[lut_numCnInCnGroups_BG2_R15[0]]) p_lut->posBnInCnProcBuf[0]; - const uint8_t (*lut_posBnInCnProcBuf_CNG4) [lut_numCnInCnGroups_BG2_R15[1]] = (const uint8_t(*)[lut_numCnInCnGroups_BG2_R15[1]]) p_lut->posBnInCnProcBuf[1]; - const uint8_t (*lut_posBnInCnProcBuf_CNG5) [lut_numCnInCnGroups_BG2_R15[2]] = (const uint8_t(*)[lut_numCnInCnGroups_BG2_R15[2]]) p_lut->posBnInCnProcBuf[2]; - const uint8_t (*lut_posBnInCnProcBuf_CNG6) [lut_numCnInCnGroups_BG2_R15[3]] = (const uint8_t(*)[lut_numCnInCnGroups_BG2_R15[3]]) p_lut->posBnInCnProcBuf[3]; - const uint8_t (*lut_posBnInCnProcBuf_CNG8) [lut_numCnInCnGroups_BG2_R15[4]] = (const uint8_t(*)[lut_numCnInCnGroups_BG2_R15[4]]) p_lut->posBnInCnProcBuf[4]; - const uint8_t (*lut_posBnInCnProcBuf_CNG10) [lut_numCnInCnGroups_BG2_R15[5]] = (const uint8_t(*)[lut_numCnInCnGroups_BG2_R15[5]]) p_lut->posBnInCnProcBuf[5]; + uint32_t bitOffsetInGroup; - const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups; - const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; + // ===================================================================== + // CN group with BNs + int BNs[] = {3, 4, 5, 6, 8, 10}; + for (int bn = 0; bn < sizeofArray(BNs); bn++) { + bitOffsetInGroup = lut_numCnInCnGroups_BG2_R15[bn] * NR_LDPC_ZMAX; - uint32_t i; - uint32_t j; + for (int j = 0; j < BNs[bn]; j++) { + int8_t* p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[bn] + j * bitOffsetInGroup]; + const uint16_t* lut_circShift = arrPos(p_lut->circShift[bn], j); + const uint8_t* lut_posBnInCnProcBuf = arrPos(p_lut->posBnInCnProcBuf[bn], j); - uint32_t idxBn = 0; - int8_t* p_cnProcBuf; - uint32_t bitOffsetInGroup; - - // ===================================================================== - // CN group with 3 BNs - - bitOffsetInGroup = lut_numCnInCnGroups_BG2_R15[0]*NR_LDPC_ZMAX; - - for (j=0; j<3; j++) - { - p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; - - for (i=0; inumCnInCnGroups; const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; - const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG2_R15[0]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[0]]) p_lut->circShift[0]; - const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG2_R15[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[1]]) p_lut->circShift[1]; - const uint16_t (*lut_circShift_CNG5) [lut_numCnInCnGroups_BG2_R15[2]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[2]]) p_lut->circShift[2]; - const uint16_t (*lut_circShift_CNG6) [lut_numCnInCnGroups_BG2_R15[3]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[3]]) p_lut->circShift[3]; - const uint16_t (*lut_circShift_CNG8) [lut_numCnInCnGroups_BG2_R15[4]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[4]]) p_lut->circShift[4]; - const uint16_t (*lut_circShift_CNG10) [lut_numCnInCnGroups_BG2_R15[5]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[5]]) p_lut->circShift[5]; - - const uint32_t (*lut_startAddrBnProcBuf_CNG3) [lut_numCnInCnGroups[0]] = (const uint32_t(*)[lut_numCnInCnGroups[0]]) p_lut->startAddrBnProcBuf[0]; - const uint32_t (*lut_startAddrBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint32_t(*)[lut_numCnInCnGroups[1]]) p_lut->startAddrBnProcBuf[1]; - const uint32_t (*lut_startAddrBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint32_t(*)[lut_numCnInCnGroups[2]]) p_lut->startAddrBnProcBuf[2]; - const uint32_t (*lut_startAddrBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint32_t(*)[lut_numCnInCnGroups[3]]) p_lut->startAddrBnProcBuf[3]; - const uint32_t (*lut_startAddrBnProcBuf_CNG8) [lut_numCnInCnGroups[4]] = (const uint32_t(*)[lut_numCnInCnGroups[4]]) p_lut->startAddrBnProcBuf[4]; - const uint32_t (*lut_startAddrBnProcBuf_CNG10) [lut_numCnInCnGroups[5]] = (const uint32_t(*)[lut_numCnInCnGroups[5]]) p_lut->startAddrBnProcBuf[5]; - - const uint8_t (*lut_bnPosBnProcBuf_CNG3) [lut_numCnInCnGroups[0]] = (const uint8_t(*)[lut_numCnInCnGroups[0]]) p_lut->bnPosBnProcBuf[0]; - const uint8_t (*lut_bnPosBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint8_t(*)[lut_numCnInCnGroups[1]]) p_lut->bnPosBnProcBuf[1]; - const uint8_t (*lut_bnPosBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint8_t(*)[lut_numCnInCnGroups[2]]) p_lut->bnPosBnProcBuf[2]; - const uint8_t (*lut_bnPosBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint8_t(*)[lut_numCnInCnGroups[3]]) p_lut->bnPosBnProcBuf[3]; - const uint8_t (*lut_bnPosBnProcBuf_CNG8) [lut_numCnInCnGroups[4]] = (const uint8_t(*)[lut_numCnInCnGroups[4]]) p_lut->bnPosBnProcBuf[4]; - const uint8_t (*lut_bnPosBnProcBuf_CNG10) [lut_numCnInCnGroups[5]] = (const uint8_t(*)[lut_numCnInCnGroups[5]]) p_lut->bnPosBnProcBuf[5]; - - int8_t* p_cnProcBufRes; uint32_t bitOffsetInGroup; - uint32_t i; - uint32_t j; - uint32_t idxBn = 0; // ===================================================================== // CN group with 3 BNs + int BNs[] = {3, 4, 5, 6, 8, 10}; + for (int bn = 0; bn < sizeofArray(BNs); bn++) { + bitOffsetInGroup = lut_numCnInCnGroups_BG2_R15[bn] * NR_LDPC_ZMAX; - bitOffsetInGroup = lut_numCnInCnGroups_BG2_R15[0]*NR_LDPC_ZMAX; + for (int j = 0; j < BNs[bn]; j++) { + int8_t* p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[bn] + j * bitOffsetInGroup]; + const uint16_t* lut_circShift = arrPos(p_lut->circShift[bn], j); + const uint32_t* lut_startAddrBnProcBuf = arrPos(p_lut->startAddrBnProcBuf[bn], j); + const uint8_t* lut_bnPosBnProcBuf = arrPos(p_lut->bnPosBnProcBuf[bn], j); - for (j=0; j<3; j++) - { - p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; - for (i=0; inumCnInCnGroups; const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; - - const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG1_R13[0]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[0]]) p_lut->circShift[0]; - const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG1_R13[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[1]]) p_lut->circShift[1]; - const uint16_t (*lut_circShift_CNG5) [lut_numCnInCnGroups_BG1_R13[2]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[2]]) p_lut->circShift[2]; - const uint16_t (*lut_circShift_CNG6) [lut_numCnInCnGroups_BG1_R13[3]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[3]]) p_lut->circShift[3]; - const uint16_t (*lut_circShift_CNG7) [lut_numCnInCnGroups_BG1_R13[4]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[4]]) p_lut->circShift[4]; - const uint16_t (*lut_circShift_CNG8) [lut_numCnInCnGroups_BG1_R13[5]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[5]]) p_lut->circShift[5]; - const uint16_t (*lut_circShift_CNG9) [lut_numCnInCnGroups_BG1_R13[6]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[6]]) p_lut->circShift[6]; - const uint16_t (*lut_circShift_CNG10)[lut_numCnInCnGroups_BG1_R13[7]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[7]]) p_lut->circShift[7]; - const uint16_t (*lut_circShift_CNG19)[lut_numCnInCnGroups_BG1_R13[8]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[8]]) p_lut->circShift[8]; - - const uint32_t (*lut_startAddrBnProcBuf_CNG3) [lut_numCnInCnGroups[0]] = (const uint32_t(*)[lut_numCnInCnGroups[0]]) p_lut->startAddrBnProcBuf[0]; - const uint32_t (*lut_startAddrBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint32_t(*)[lut_numCnInCnGroups[1]]) p_lut->startAddrBnProcBuf[1]; - const uint32_t (*lut_startAddrBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint32_t(*)[lut_numCnInCnGroups[2]]) p_lut->startAddrBnProcBuf[2]; - const uint32_t (*lut_startAddrBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint32_t(*)[lut_numCnInCnGroups[3]]) p_lut->startAddrBnProcBuf[3]; - const uint32_t (*lut_startAddrBnProcBuf_CNG7) [lut_numCnInCnGroups[4]] = (const uint32_t(*)[lut_numCnInCnGroups[4]]) p_lut->startAddrBnProcBuf[4]; - const uint32_t (*lut_startAddrBnProcBuf_CNG8) [lut_numCnInCnGroups[5]] = (const uint32_t(*)[lut_numCnInCnGroups[5]]) p_lut->startAddrBnProcBuf[5]; - const uint32_t (*lut_startAddrBnProcBuf_CNG9) [lut_numCnInCnGroups[6]] = (const uint32_t(*)[lut_numCnInCnGroups[6]]) p_lut->startAddrBnProcBuf[6]; - const uint32_t (*lut_startAddrBnProcBuf_CNG10)[lut_numCnInCnGroups[7]] = (const uint32_t(*)[lut_numCnInCnGroups[7]]) p_lut->startAddrBnProcBuf[7]; - const uint32_t (*lut_startAddrBnProcBuf_CNG19)[lut_numCnInCnGroups[8]] = (const uint32_t(*)[lut_numCnInCnGroups[8]]) p_lut->startAddrBnProcBuf[8]; - - const uint8_t (*lut_bnPosBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint8_t(*)[lut_numCnInCnGroups[1]]) p_lut->bnPosBnProcBuf[1]; - const uint8_t (*lut_bnPosBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint8_t(*)[lut_numCnInCnGroups[2]]) p_lut->bnPosBnProcBuf[2]; - const uint8_t (*lut_bnPosBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint8_t(*)[lut_numCnInCnGroups[3]]) p_lut->bnPosBnProcBuf[3]; - const uint8_t (*lut_bnPosBnProcBuf_CNG7) [lut_numCnInCnGroups[4]] = (const uint8_t(*)[lut_numCnInCnGroups[4]]) p_lut->bnPosBnProcBuf[4]; - const uint8_t (*lut_bnPosBnProcBuf_CNG8) [lut_numCnInCnGroups[5]] = (const uint8_t(*)[lut_numCnInCnGroups[5]]) p_lut->bnPosBnProcBuf[5]; - const uint8_t (*lut_bnPosBnProcBuf_CNG9) [lut_numCnInCnGroups[6]] = (const uint8_t(*)[lut_numCnInCnGroups[6]]) p_lut->bnPosBnProcBuf[6]; - const uint8_t (*lut_bnPosBnProcBuf_CNG10)[lut_numCnInCnGroups[7]] = (const uint8_t(*)[lut_numCnInCnGroups[7]]) p_lut->bnPosBnProcBuf[7]; - const uint8_t (*lut_bnPosBnProcBuf_CNG19)[lut_numCnInCnGroups[8]] = (const uint8_t(*)[lut_numCnInCnGroups[8]]) p_lut->bnPosBnProcBuf[8]; - - int8_t* p_cnProcBufRes; uint32_t bitOffsetInGroup; - uint32_t i; - uint32_t j; - uint32_t idxBn = 0; // ===================================================================== // CN group with 3 BNs bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX; - for (j=0; j<3; j++) - { - p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; - nrLDPC_inv_circ_memcpy(&bnProcBuf[lut_startAddrBnProcBuf_CNG3[j][0]],p_cnProcBufRes,Z,lut_circShift_CNG3[j][0]); + for (int j = 0; j < 3; j++) { + const uint16_t* lut_circShift_CNG3 = arrPos(p_lut->circShift[0], j); + const uint32_t* lut_startAddrBnProcBuf_CNG3 = arrPos(p_lut->startAddrBnProcBuf[0], j); + int8_t* p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[0] + j * bitOffsetInGroup]; + nrLDPC_inv_circ_memcpy(&bnProcBuf[lut_startAddrBnProcBuf_CNG3[0]], p_cnProcBufRes, Z, lut_circShift_CNG3[0]); } // ===================================================================== // CN group with 4 BNs + // CN group with 3 BNs + int BNs[] = {3, 4, 5, 6, 7, 8, 9, 10, 19}; + for (int bn = 1; bn < sizeofArray(BNs); bn++) { + bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[bn] * NR_LDPC_ZMAX; - bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX; + for (int j = 0; j < BNs[bn]; j++) { + int8_t* p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[bn] + j * bitOffsetInGroup]; + const uint16_t* lut_circShift_CNG = arrPos(p_lut->circShift[bn], j); + const uint32_t* lut_startAddrBnProcBuf_CNG = arrPos(p_lut->startAddrBnProcBuf[bn], j); + const uint8_t* lut_bnPosBnProcBuf_CNG = arrPos(p_lut->bnPosBnProcBuf[bn], j); - for (j=0; j<4; j++) - { - p_cnProcBufRes = &cnProcBufRes[lut_startAddrCnGroups[1] + j*bitOffsetInGroup]; - - for (i=0; inumCnInCnGroups; const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; - const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG2_R15[0]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[0]]) p_lut->circShift[0]; - const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG2_R15[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[1]]) p_lut->circShift[1]; - const uint16_t (*lut_circShift_CNG5) [lut_numCnInCnGroups_BG2_R15[2]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[2]]) p_lut->circShift[2]; - const uint16_t (*lut_circShift_CNG6) [lut_numCnInCnGroups_BG2_R15[3]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[3]]) p_lut->circShift[3]; - const uint16_t (*lut_circShift_CNG8) [lut_numCnInCnGroups_BG2_R15[4]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[4]]) p_lut->circShift[4]; - const uint16_t (*lut_circShift_CNG10) [lut_numCnInCnGroups_BG2_R15[5]] = (const uint16_t(*)[lut_numCnInCnGroups_BG2_R15[5]]) p_lut->circShift[5]; - - const uint32_t (*lut_startAddrBnProcBuf_CNG3) [lut_numCnInCnGroups[0]] = (const uint32_t(*)[lut_numCnInCnGroups[0]]) p_lut->startAddrBnProcBuf[0]; - const uint32_t (*lut_startAddrBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint32_t(*)[lut_numCnInCnGroups[1]]) p_lut->startAddrBnProcBuf[1]; - const uint32_t (*lut_startAddrBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint32_t(*)[lut_numCnInCnGroups[2]]) p_lut->startAddrBnProcBuf[2]; - const uint32_t (*lut_startAddrBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint32_t(*)[lut_numCnInCnGroups[3]]) p_lut->startAddrBnProcBuf[3]; - const uint32_t (*lut_startAddrBnProcBuf_CNG8) [lut_numCnInCnGroups[4]] = (const uint32_t(*)[lut_numCnInCnGroups[4]]) p_lut->startAddrBnProcBuf[4]; - const uint32_t (*lut_startAddrBnProcBuf_CNG10) [lut_numCnInCnGroups[5]] = (const uint32_t(*)[lut_numCnInCnGroups[5]]) p_lut->startAddrBnProcBuf[5]; - - const uint8_t (*lut_bnPosBnProcBuf_CNG3) [lut_numCnInCnGroups[0]] = (const uint8_t(*)[lut_numCnInCnGroups[0]]) p_lut->bnPosBnProcBuf[0]; - const uint8_t (*lut_bnPosBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint8_t(*)[lut_numCnInCnGroups[1]]) p_lut->bnPosBnProcBuf[1]; - const uint8_t (*lut_bnPosBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint8_t(*)[lut_numCnInCnGroups[2]]) p_lut->bnPosBnProcBuf[2]; - const uint8_t (*lut_bnPosBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint8_t(*)[lut_numCnInCnGroups[3]]) p_lut->bnPosBnProcBuf[3]; - const uint8_t (*lut_bnPosBnProcBuf_CNG8) [lut_numCnInCnGroups[4]] = (const uint8_t(*)[lut_numCnInCnGroups[4]]) p_lut->bnPosBnProcBuf[4]; - const uint8_t (*lut_bnPosBnProcBuf_CNG10) [lut_numCnInCnGroups[5]] = (const uint8_t(*)[lut_numCnInCnGroups[5]]) p_lut->bnPosBnProcBuf[5]; - - int8_t* p_cnProcBuf; uint32_t bitOffsetInGroup; - uint32_t i; - uint32_t j; - uint32_t idxBn = 0; // For CN groups 3 to 6 no need to send the last BN back since it's single edge // and BN processing does not change the value already in the CN proc buf // ===================================================================== // CN group with 3 BNs + int BNs[] = {2, 3, 4, 5, 8, 10}; + for (int bn = 0; bn < sizeofArray(BNs); bn++) { + bitOffsetInGroup = lut_numCnInCnGroups_BG2_R15[bn] * NR_LDPC_ZMAX; - bitOffsetInGroup = lut_numCnInCnGroups_BG2_R15[0]*NR_LDPC_ZMAX; + for (int j = 0; j < BNs[bn]; j++) { + int8_t* p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[bn] + j * bitOffsetInGroup]; + const uint16_t* lut_circShift_CNG = arrPos(p_lut->circShift[bn], j); + const uint32_t* lut_startAddrBnProcBuf_CNG = arrPos(p_lut->startAddrBnProcBuf[bn], j); + const uint8_t* lut_bnPosBnProcBuf_CNG = arrPos(p_lut->bnPosBnProcBuf[bn], j); - for (j=0; j<2; j++) - { - p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; - for (i=0; inumCnInCnGroups; const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; - - const uint16_t (*lut_circShift_CNG3) [lut_numCnInCnGroups_BG1_R13[0]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[0]]) p_lut->circShift[0]; - const uint16_t (*lut_circShift_CNG4) [lut_numCnInCnGroups_BG1_R13[1]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[1]]) p_lut->circShift[1]; - const uint16_t (*lut_circShift_CNG5) [lut_numCnInCnGroups_BG1_R13[2]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[2]]) p_lut->circShift[2]; - const uint16_t (*lut_circShift_CNG6) [lut_numCnInCnGroups_BG1_R13[3]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[3]]) p_lut->circShift[3]; - const uint16_t (*lut_circShift_CNG7) [lut_numCnInCnGroups_BG1_R13[4]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[4]]) p_lut->circShift[4]; - const uint16_t (*lut_circShift_CNG8) [lut_numCnInCnGroups_BG1_R13[5]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[5]]) p_lut->circShift[5]; - const uint16_t (*lut_circShift_CNG9) [lut_numCnInCnGroups_BG1_R13[6]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[6]]) p_lut->circShift[6]; - const uint16_t (*lut_circShift_CNG10)[lut_numCnInCnGroups_BG1_R13[7]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[7]]) p_lut->circShift[7]; - const uint16_t (*lut_circShift_CNG19)[lut_numCnInCnGroups_BG1_R13[8]] = (const uint16_t(*)[lut_numCnInCnGroups_BG1_R13[8]]) p_lut->circShift[8]; - - const uint32_t (*lut_startAddrBnProcBuf_CNG3) [lut_numCnInCnGroups[0]] = (const uint32_t(*)[lut_numCnInCnGroups[0]]) p_lut->startAddrBnProcBuf[0]; - const uint32_t (*lut_startAddrBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint32_t(*)[lut_numCnInCnGroups[1]]) p_lut->startAddrBnProcBuf[1]; - const uint32_t (*lut_startAddrBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint32_t(*)[lut_numCnInCnGroups[2]]) p_lut->startAddrBnProcBuf[2]; - const uint32_t (*lut_startAddrBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint32_t(*)[lut_numCnInCnGroups[3]]) p_lut->startAddrBnProcBuf[3]; - const uint32_t (*lut_startAddrBnProcBuf_CNG7) [lut_numCnInCnGroups[4]] = (const uint32_t(*)[lut_numCnInCnGroups[4]]) p_lut->startAddrBnProcBuf[4]; - const uint32_t (*lut_startAddrBnProcBuf_CNG8) [lut_numCnInCnGroups[5]] = (const uint32_t(*)[lut_numCnInCnGroups[5]]) p_lut->startAddrBnProcBuf[5]; - const uint32_t (*lut_startAddrBnProcBuf_CNG9) [lut_numCnInCnGroups[6]] = (const uint32_t(*)[lut_numCnInCnGroups[6]]) p_lut->startAddrBnProcBuf[6]; - const uint32_t (*lut_startAddrBnProcBuf_CNG10)[lut_numCnInCnGroups[7]] = (const uint32_t(*)[lut_numCnInCnGroups[7]]) p_lut->startAddrBnProcBuf[7]; - const uint32_t (*lut_startAddrBnProcBuf_CNG19)[lut_numCnInCnGroups[8]] = (const uint32_t(*)[lut_numCnInCnGroups[8]]) p_lut->startAddrBnProcBuf[8]; - - const uint8_t (*lut_bnPosBnProcBuf_CNG4) [lut_numCnInCnGroups[1]] = (const uint8_t(*)[lut_numCnInCnGroups[1]]) p_lut->bnPosBnProcBuf[1]; - const uint8_t (*lut_bnPosBnProcBuf_CNG5) [lut_numCnInCnGroups[2]] = (const uint8_t(*)[lut_numCnInCnGroups[2]]) p_lut->bnPosBnProcBuf[2]; - const uint8_t (*lut_bnPosBnProcBuf_CNG6) [lut_numCnInCnGroups[3]] = (const uint8_t(*)[lut_numCnInCnGroups[3]]) p_lut->bnPosBnProcBuf[3]; - const uint8_t (*lut_bnPosBnProcBuf_CNG7) [lut_numCnInCnGroups[4]] = (const uint8_t(*)[lut_numCnInCnGroups[4]]) p_lut->bnPosBnProcBuf[4]; - const uint8_t (*lut_bnPosBnProcBuf_CNG8) [lut_numCnInCnGroups[5]] = (const uint8_t(*)[lut_numCnInCnGroups[5]]) p_lut->bnPosBnProcBuf[5]; - const uint8_t (*lut_bnPosBnProcBuf_CNG9) [lut_numCnInCnGroups[6]] = (const uint8_t(*)[lut_numCnInCnGroups[6]]) p_lut->bnPosBnProcBuf[6]; - const uint8_t (*lut_bnPosBnProcBuf_CNG10)[lut_numCnInCnGroups[7]] = (const uint8_t(*)[lut_numCnInCnGroups[7]]) p_lut->bnPosBnProcBuf[7]; - const uint8_t (*lut_bnPosBnProcBuf_CNG19)[lut_numCnInCnGroups[8]] = (const uint8_t(*)[lut_numCnInCnGroups[8]]) p_lut->bnPosBnProcBuf[8]; - - int8_t* p_cnProcBuf; uint32_t bitOffsetInGroup; - uint32_t i; - uint32_t j; - uint32_t idxBn = 0; // For CN groups 3 to 19 no need to send the last BN back since it's single edge // and BN processing does not change the value already in the CN proc buf @@ -1001,147 +355,32 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, int8_t* bnProcBu bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX; - for (j=0;j<2; j++) - { - p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; - nrLDPC_circ_memcpy(p_cnProcBuf, &bnProcBufRes[lut_startAddrBnProcBuf_CNG3[j][0]], Z, lut_circShift_CNG3[j][0]); + for (int j = 0; j < 2; j++) { + const uint16_t* lut_circShift_CNG3 = arrPos(p_lut->circShift[0], j); + const uint32_t* lut_startAddrBnProcBuf_CNG3 = arrPos(p_lut->startAddrBnProcBuf[0], j); + int8_t* p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j * bitOffsetInGroup]; + nrLDPC_circ_memcpy(p_cnProcBuf, &bnProcBufRes[lut_startAddrBnProcBuf_CNG3[0]], Z, lut_circShift_CNG3[0]); } // ===================================================================== // CN group with 4 BNs + int BNs[] = {2, 3, 4, 5, 6, 7, 8, 9, 19}; + for (int bn = 1; bn < sizeofArray(BNs); bn++) { + bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[bn] * NR_LDPC_ZMAX; - bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX; - - for (j=0; j<3; j++) - { - p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[1] + j*bitOffsetInGroup]; + for (int j = 0; j < BNs[bn]; j++) { + int8_t* p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[bn] + j * bitOffsetInGroup]; + const uint16_t* lut_circShift_CNG = arrPos(p_lut->circShift[bn], j); + const uint32_t* lut_startAddrBnProcBuf_CNG = arrPos(p_lut->startAddrBnProcBuf[bn], j); + const uint8_t* lut_bnPosBnProcBuf_CNG = arrPos(p_lut->bnPosBnProcBuf[bn], j); - for (i=0; inumBnInBnGroups[0]; - uint32_t startColParity = (BG ==1 ) ? (NR_LDPC_START_COL_PARITY_BG1) : (NR_LDPC_START_COL_PARITY_BG2); + const uint8_t numBn2CnG1 = p_lut->numBnInBnGroups[0]; + uint32_t startColParity = (BG == 1) ? (NR_LDPC_START_COL_PARITY_BG1) : (NR_LDPC_START_COL_PARITY_BG2); - uint32_t colG1 = startColParity*Z; + uint32_t colG1 = startColParity * Z; - const uint16_t* lut_llr2llrProcBufAddr = p_lut->llr2llrProcBufAddr; - const uint8_t* lut_llr2llrProcBufBnPos = p_lut->llr2llrProcBufBnPos; + const uint16_t* lut_llr2llrProcBufAddr = p_lut->llr2llrProcBufAddr; + const uint8_t* lut_llr2llrProcBufBnPos = p_lut->llr2llrProcBufBnPos; - int8_t* p_llrOut = &llrOut[0]; - uint32_t idxBn; + int8_t* p_llrOut = &llrOut[0]; - // Copy LLRs connected to 1 CN - if (numBn2CnG1 > 0) - { - memcpy(&llrOut[colG1], llrRes, numBn2CnG1*Z); - } - - for (i=0; i 0) { + memcpy(&llrOut[colG1], llrRes, numBn2CnG1 * Z); + } + for (int i = 0; i < startColParity; i++) { + const int idxBn = lut_llr2llrProcBufAddr[i] + lut_llr2llrProcBufBnPos[i] * Z; + memcpy(p_llrOut, &llrRes[idxBn], Z); + p_llrOut += Z; + } } #endif diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h index 226af8017e..513bcb1732 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h @@ -34,6 +34,21 @@ #include "time_meas.h" #endif #include "nrLDPCdecoder_defs.h" +typedef struct { + uint8_t* d; + int dim1; + int dim2; +} arr8_t; +typedef struct { + uint16_t* d; + int dim1; + int dim2; +} arr16_t; +typedef struct { + uint32_t* d; + int dim1; + int dim2; +} arr32_t; // ============================================================================== // TYPES @@ -46,12 +61,12 @@ typedef struct nrLDPC_lut { const uint8_t* numBnInBnGroups; /**< Number of CNs in every BN group */ const uint32_t* startAddrBnGroups; /**< Start addresses for BN groups in BN processing buffer */ const uint16_t* startAddrBnGroupsLlr; /**< Start addresses for BN groups in LLR processing buffer */ - const uint16_t** circShift[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT for circular shift values for all CN groups and Zs */ - const uint32_t** startAddrBnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT of start addresses of CN groups in BN proc buffer */ - const uint8_t** bnPosBnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT of BN positions in BG for CN groups */ + arr16_t circShift[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT for circular shift values for all CN groups and Zs */ + arr32_t startAddrBnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT of start addresses of CN groups in BN proc buffer */ + arr8_t bnPosBnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT of BN positions in BG for CN groups */ const uint16_t* llr2llrProcBufAddr; /**< LUT for transferring input LLRs to LLR processing buffer */ const uint8_t* llr2llrProcBufBnPos; /**< LUT BN position in BG */ - const uint8_t** posBnInCnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT for llr2cnProcBuf */ + arr8_t posBnInCnProcBuf[NR_LDPC_NUM_CN_GROUPS_BG1]; /**< LUT for llr2cnProcBuf */ } t_nrLDPC_lut; /**